diff options
Diffstat (limited to 'background_scripts/main.coffee')
| -rw-r--r-- | background_scripts/main.coffee | 37 | 
1 files changed, 20 insertions, 17 deletions
| diff --git a/background_scripts/main.coffee b/background_scripts/main.coffee index 97d8fa65..8220545d 100644 --- a/background_scripts/main.coffee +++ b/background_scripts/main.coffee @@ -114,7 +114,7 @@ TabOperations =      canUseOpenerTabId = not (Utils.isFirefox() and Utils.compareVersions(Utils.firefoxVersion(), "57") < 0)      tabConfig.openerTabId = request.tab.id if canUseOpenerTabId -    chrome.tabs.create tabConfig, callback +    chrome.tabs.create tabConfig, -> callback request    # Opens request.url in new window and switches to it.    openUrlInNewWindow: (request, callback = (->)) -> @@ -148,7 +148,7 @@ toggleMuteTab = do ->  #  selectSpecificTab = (request) ->    chrome.tabs.get(request.id, (tab) -> -    chrome.windows.update(tab.windowId, { focused: true }) +    chrome.windows?.update(tab.windowId, { focused: true })      chrome.tabs.update(request.id, { active: true }))  moveTab = ({count, tab, registryEntry}) -> @@ -188,13 +188,20 @@ BackgroundCommands =              [if request.tab.incognito then "chrome://newtab" else chrome.runtime.getURL newTabUrl]            else              [newTabUrl] -    urls = request.urls[..].reverse() -    do openNextUrl = (request) -> -      if 0 < urls.length -        TabOperations.openUrlInNewTab (extend request, {url: urls.pop()}), (tab) -> -          openNextUrl extend request, {tab, tabId: tab.id} -      else -        callback request +    if request.registryEntry.options.incognito or request.registryEntry.options.window +      windowConfig = +        url: request.urls +        focused: true +        incognito: request.registryEntry.options.incognito ? false +      chrome.windows.create windowConfig, -> callback request +    else +      urls = request.urls[..].reverse() +      do openNextUrl = (request) -> +        if 0 < urls.length +          TabOperations.openUrlInNewTab (extend request, {url: urls.pop()}), (tab) -> +            openNextUrl extend request, {tab, tabId: tab.id} +        else +          callback request    duplicateTab: mkRepeatCommand (request, callback) ->      chrome.tabs.duplicate request.tabId, (tab) -> callback extend request, {tab, tabId: tab.id}    moveTabToNewWindow: ({count, tab}) -> @@ -214,8 +221,6 @@ BackgroundCommands =        startTabIndex = Math.max 0, Math.min activeTabIndex, tabs.length - count        chrome.tabs.remove (tab.id for tab in tabs[startTabIndex...startTabIndex + count])    restoreTab: mkRepeatCommand (request, callback) -> chrome.sessions.restore null, callback request -  openCopiedUrlInCurrentTab: (request) -> TabOperations.openUrlInCurrentTab extend request, url: Clipboard.paste() -  openCopiedUrlInNewTab: (request) -> @createTab extend request, url: Clipboard.paste()    togglePinTab: ({tab}) -> chrome.tabs.update tab.id, {pinned: !tab.pinned}    toggleMuteTab: toggleMuteTab    moveTabLeft: moveTab @@ -324,7 +329,7 @@ Frames =      enabledState = Exclusions.isEnabledForUrl request.url      if request.frameIsFocused -      chrome.browserAction.setIcon tabId: tabId, imageData: do -> +      chrome.browserAction.setIcon? tabId: tabId, imageData: do ->          enabledStateIcon =            if not enabledState.isEnabledForUrl              DISABLED_ICON @@ -355,7 +360,7 @@ handleFrameFocused = ({tabId, frameId}) ->  # Rotate through frames to the frame count places after frameId.  cycleToFrame = (frames, frameId, count = 0) -> -  # We can't always track which frame chrome has focussed, but here we learn that it's frameId; so add an +  # We can't always track which frame chrome has focused, but here we learn that it's frameId; so add an    # additional offset such that we do indeed start from frameId.    count = (count + Math.max 0, frames.indexOf frameId) % frames.length    [frames[count..]..., frames[0...count]...] @@ -423,7 +428,7 @@ sendRequestHandlers =    # getCurrentTabUrl is used by the content scripts to get their full URL, because window.location cannot help    # with Chrome-specific URLs like "view-source:http:..".    getCurrentTabUrl: ({tab}) -> tab.url -  openUrlInNewTab: (request) -> TabOperations.openUrlInNewTab request +  openUrlInNewTab: mkRepeatCommand (request, callback) -> TabOperations.openUrlInNewTab request, callback    openUrlInNewWindow: (request) -> TabOperations.openUrlInNewWindow request    openUrlInIncognito: (request) -> chrome.windows.create incognito: true, url: Utils.convertToUrl request.url    openUrlInCurrentTab: TabOperations.openUrlInCurrentTab @@ -431,8 +436,6 @@ sendRequestHandlers =      chrome.tabs.create url: chrome.runtime.getURL("pages/options.html"), index: request.tab.index + 1    frameFocused: handleFrameFocused    nextFrame: BackgroundCommands.nextFrame -  copyToClipboard: Clipboard.copy.bind Clipboard -  pasteFromClipboard: Clipboard.paste.bind Clipboard    selectSpecificTab: selectSpecificTab    createMark: Marks.create.bind(Marks)    gotoMark: Marks.goto.bind(Marks) @@ -449,7 +452,7 @@ chrome.tabs.onRemoved.addListener (tabId) ->    delete cache[tabId] for cache in [frameIdsForTab, urlForTab, portsForTab, HintCoordinator.tabState]    chrome.storage.local.get "findModeRawQueryListIncognito", (items) ->      if items.findModeRawQueryListIncognito -      chrome.windows.getAll null, (windows) -> +      chrome.windows?.getAll null, (windows) ->          for window in windows            return if window.incognito          # There are no remaining incognito-mode tabs, and findModeRawQueryListIncognito is set. | 
