diff options
Diffstat (limited to 'background_scripts/main.coffee')
| -rw-r--r-- | background_scripts/main.coffee | 30 | 
1 files changed, 20 insertions, 10 deletions
| diff --git a/background_scripts/main.coffee b/background_scripts/main.coffee index 379239ae..97d8fa65 100644 --- a/background_scripts/main.coffee +++ b/background_scripts/main.coffee @@ -106,15 +106,25 @@ TabOperations =        index: request.tab.index + 1        active: true        windowId: request.tab.windowId +    tabConfig.active = request.active if request.active?      # Firefox does not support "about:newtab" in chrome.tabs.create.      delete tabConfig["url"] if tabConfig["url"] == Settings.defaults.newTabUrl -    chrome.tabs.create tabConfig, (tab) -> -      # NOTE(mrmr1993, 2017-02-08): Firefox currently doesn't support openerTabId (issue 1238314) and throws -      # a type error if it is present. We work around this by attempting to set it separately from creating -      # the tab. -      try chrome.tabs.update tab.id, { openerTabId : request.tab.id }, callback -      catch -        callback.apply this, arguments + +    # Firefox <57 throws an error when openerTabId is used (issue 1238314). +    canUseOpenerTabId = not (Utils.isFirefox() and Utils.compareVersions(Utils.firefoxVersion(), "57") < 0) +    tabConfig.openerTabId = request.tab.id if canUseOpenerTabId + +    chrome.tabs.create tabConfig, callback + +  # Opens request.url in new window and switches to it. +  openUrlInNewWindow: (request, callback = (->)) -> +    winConfig = +      url: Utils.convertToUrl request.url +      active: true +    winConfig.active = request.active if request.active? +    # Firefox does not support "about:newtab" in chrome.tabs.create. +    delete tabConfig["url"] if tabConfig["url"] == Settings.defaults.newTabUrl +    chrome.windows.create winConfig, callback  toggleMuteTab = do ->    muteTab = (tab) -> chrome.tabs.update tab.id, {muted: !tab.mutedInfo.muted} @@ -252,10 +262,9 @@ selectTab = (direction, {count, tab}) ->              Math.max 0, tabs.length - count        chrome.tabs.update tabs[toSelect].id, active: true -chrome.tabs.onUpdated.addListener (tabId, changeInfo, tab) -> -  return unless changeInfo.status == "loading" # Only do this once per URL change. +chrome.webNavigation.onCommitted.addListener ({tabId, frameId}) ->    cssConf = -    allFrames: true +    frameId: frameId      code: Settings.get("userDefinedLinkHintCss")      runAt: "document_start"    chrome.tabs.insertCSS tabId, cssConf, -> chrome.runtime.lastError @@ -415,6 +424,7 @@ sendRequestHandlers =    # with Chrome-specific URLs like "view-source:http:..".    getCurrentTabUrl: ({tab}) -> tab.url    openUrlInNewTab: (request) -> TabOperations.openUrlInNewTab request +  openUrlInNewWindow: (request) -> TabOperations.openUrlInNewWindow request    openUrlInIncognito: (request) -> chrome.windows.create incognito: true, url: Utils.convertToUrl request.url    openUrlInCurrentTab: TabOperations.openUrlInCurrentTab    openOptionsPageInNewTab: (request) -> | 
