diff options
Diffstat (limited to 'background_scripts')
| -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) -> |
