diff options
author | Alessio Vanni <vannilla@firemail.cc> | 2019-06-21 22:19:10 +0200 |
---|---|---|
committer | Alessio Vanni <vannilla@firemail.cc> | 2019-06-21 22:19:10 +0200 |
commit | 6ce63ba79e0d2d9f9d0ca4821c259d4b61dee769 (patch) | |
tree | 9389b921a6eec53540a66bd05380e4fcbdd8c938 | |
parent | fa59204140f82c9516e9c4cb7afc2718abf5baaa (diff) | |
download | ematrix-6ce63ba79e0d2d9f9d0ca4821c259d4b61dee769.tar.lz ematrix-6ce63ba79e0d2d9f9d0ca4821c259d4b61dee769.tar.xz ematrix-6ce63ba79e0d2d9f9d0ca4821c259d4b61dee769.zip |
Keep refactoring
Exported stuff to handle the splitting.
-rw-r--r-- | js/vapi-background.js | 46 | ||||
-rw-r--r-- | js/vapi-tabs.js | 42 |
2 files changed, 49 insertions, 39 deletions
diff --git a/js/vapi-background.js b/js/vapi-background.js index 10f7b2b..109a06b 100644 --- a/js/vapi-background.js +++ b/js/vapi-background.js @@ -764,11 +764,14 @@ vAPI.window = winWatcher; - let getTabBrowser = function (win) { + // browser-handling utilities + vAPI.browser = {}; + + vAPI.browser.getTabBrowser = function (win) { return win && win.gBrowser || null; }; - let getOwnerWindow = function (target) { + vAPI.browser.getOwnerWindow = function (target) { if (target.ownerDocument) { return target.ownerDocument.defaultView; } @@ -776,6 +779,8 @@ return null; }; + vAPI.noTabId = '-1'; + vAPI.isBehindTheSceneTabId = function (tabId) { return tabId.toString() === '-1'; }; @@ -791,12 +796,12 @@ win = winWatcher.getCurrentWindow(); } - let tabBrowser = getTabBrowser(win); + let tabBrowser = vAPI.browser.getTabBrowser(win); if (tabBrowser === null) { return; } - let curTabId = tabWatcher.tabIdFromTarget(tabBrowser.selectedTab); + let curTabId = vAPI.tabs.manager.tabIdFromTarget(tabBrowser.selectedTab); let tb = vAPI.toolbarButton; // from 'TabSelect' event @@ -857,7 +862,7 @@ let sender = { tab: { - id: tabWatcher.tabIdFromTarget(target) + id: vAPI.tabs.manager.tabIdFromTarget(target) } }; @@ -1325,7 +1330,7 @@ } if (lc.topFrameElement) { - return tabWatcher.tabIdFromTarget(lc.topFrameElement); + return vAPI.tabs.manager.tabIdFromTarget(lc.topFrameElement); } let win; @@ -1346,11 +1351,12 @@ let tabBrowser; try { tabBrowser = - getTabBrowser(win.QueryInterface(Ci.nsIInterfaceRequestor) - .getInterface(Ci.nsIWebNavigation) - .QueryInterface(Ci.nsIDocShell).rootTreeItem - .QueryInterface(Ci.nsIInterfaceRequestor) - .getInterface(Ci.nsIDOMWindow)); + vAPI.browser.getTabBrowser + (win.QueryInterface(Ci.nsIInterfaceRequestor) + .getInterface(Ci.nsIWebNavigation) + .QueryInterface(Ci.nsIDocShell).rootTreeItem + .QueryInterface(Ci.nsIInterfaceRequestor) + .getInterface(Ci.nsIDOMWindow)); } catch (ex) { // Ignore } @@ -1360,14 +1366,15 @@ } if (tabBrowser.getBrowserForContentWindow) { - return tabWatcher.tabIdFromTarget(tabBrowser.getBrowserForContentWindow(win)); + return vAPI.tabs.manager + .tabIdFromTarget(tabBrowser.getBrowserForContentWindow(win)); } // Falling back onto _getTabForContentWindow to ensure older // versions of Firefox work well. return tabBrowser._getTabForContentWindow - ? tabWatcher.tabIdFromTarget(tabBrowser - ._getTabForContentWindow(win)) + ? vAPI.tabs.manager + .tabIdFromTarget(tabBrowser._getTabForContentWindow(win)) : vAPI.noTabId; }, rawtypeFromContentType: function (channel) { @@ -1539,7 +1546,7 @@ let details = e.data; let pendingReq = httpObserver.createPendingRequest(details.url); pendingReq.rawType = details.rawType; - pendingReq.tabId = tabWatcher.tabIdFromTarget(e.target); + pendingReq.tabId = vAPI.tabs.manager.tabIdFromTarget(e.target); }; // https://github.com/gorhill/uMatrix/issues/200 @@ -2479,7 +2486,7 @@ } callback(details, { - id: tabWatcher.tabIdFromTarget(gContextMenu.browser), + id: vAPI.tabs.manager.tabIdFromTarget(gContextMenu.browser), url: gContextMenu.browser.currentURI.asciiSpec }); }; @@ -2551,7 +2558,7 @@ // Older versions of Firefox can throw here when looking // up `currentURI`. try { - let tabBrowser = tabWatcher.currentBrowser(); + let tabBrowser = vAPI.tabs.manager.currentBrowser(); return tabBrowser && tabBrowser.currentURI && tabBrowser.currentURI.spec === 'about:addons' @@ -2566,7 +2573,8 @@ // already opened. let init = function () { if (canInit()) { - setupOptionsButtons(tabWatcher.currentBrowser().contentDocument); + setupOptionsButtons(vAPI.tabs.manager + .currentBrowser().contentDocument); } }; @@ -2600,7 +2608,7 @@ // to inject content scripts in already opened web pages, to // remove whatever nuisance could make it to the web pages // before uBlock was ready. - for (let browser of tabWatcher.browsers()) { + for (let browser of vAPI.tabs.manager.browsers()) { browser.messageManager .sendAsyncMessage(location.host + '-load-completed'); } diff --git a/js/vapi-tabs.js b/js/vapi-tabs.js index 97d0f69..0e71358 100644 --- a/js/vapi-tabs.js +++ b/js/vapi-tabs.js @@ -35,8 +35,6 @@ let vAPI = self.vAPI; // Guaranteed to be initialized by vapi-background.js - vAPI.noTabId = '-1'; - vAPI.tabs = {}; vAPI.tabs.registerListeners = function() { @@ -94,8 +92,8 @@ return; } - let win = getOwnerWindow(browser); - let tabBrowser = getTabBrowser(win); + let win = vAPI.browser.getOwnerWindow(browser); + let tabBrowser = vAPI.browser.getTabBrowser(win); callback({ id: tabId, @@ -116,7 +114,7 @@ continue; } - let tabBrowser = getTabBrowser(win); + let tabBrowser = vAPI.browser.getTabBrowser(win); if (tabBrowser === null) { continue; } @@ -230,7 +228,7 @@ } let win = vAPI.window.getCurrentWindow(); - let tabBrowser = getTabBrowser(win); + let tabBrowser = vAPI.browser.getTabBrowser(win); if (tabBrowser === null) { return; @@ -282,7 +280,9 @@ return; } - removeInternal(tab, getTabBrowser(getOwnerWindow(browser))); + removeInternal(tab, + vAPI.browser.getTabBrowser + (vAPI.browser.getOwnerWindow(browser))); }; vAPI.tabs.reload = function (tabId) { @@ -303,10 +303,10 @@ } // https://github.com/gorhill/uBlock/issues/470 - let win = getOwnerWindow(tab); + let win = vAPI.browser.getOwnerWindow(tab); win.focus(); - let tabBrowser = getTabBrowser(win); + let tabBrowser = vAPI.browser.getTabBrowser(win); if (tabBrowser) { tabBrowser.selectedTab = tab; } @@ -352,12 +352,12 @@ return -1; } - let win = getOwnerWindow(browser); + let win = vAPI.browser.getOwnerWindow(browser); if (!win) { return -1; } - let tabBrowser = getTabBrowser(win); + let tabBrowser = vAPI.browser.getTabBrowser(win); if (tabBrowser === null) { return -1; } @@ -382,12 +382,12 @@ return null; } - let win = getOwnerWindow(browser); + let win = vAPI.browser.getOwnerWindow(browser); if (!win) { return null; } - let tabBrowser = getTabBrowser(win); + let tabBrowser = vAPI.browser.getTabBrowser(win); if (tabBrowser === null) { return null; } @@ -444,7 +444,7 @@ // https://github.com/gorhill/uBlock/issues/399 // getTabBrowser() can return null at browser launch time. - let tabBrowser = getTabBrowser(win); + let tabBrowser = vAPI.browser.getTabBrowser(win); if (tabBrowser === null) { return null; } @@ -523,7 +523,7 @@ }); } - vAPI.setIcon(tabId, getOwnerWindow(target)); + vAPI.setIcon(tabId, vAPI.browser.getOwnerWindow(target)); }; let locationChangedMessageName = location.host + ':locationChanged'; @@ -567,7 +567,7 @@ vAPI.toolbarButton.attachToNewWindow(window); } - let tabBrowser = getTabBrowser(window); + let tabBrowser = vAPI.browser.getTabBrowser(window); if (tabBrowser === null) { return; } @@ -609,7 +609,7 @@ // https://github.com/gorhill/uBlock/issues/763 // Not getting a tab browser should not prevent from // attaching ourself to the window. - let tabBrowser = getTabBrowser(window); + let tabBrowser = vAPI.browser.getTabBrowser(window); if (tabBrowser === null) { return false; } @@ -625,7 +625,7 @@ let onWindowUnload = function (win) { vAPI.contextMenu.unregister(win.document); - let tabBrowser = getTabBrowser(win); + let tabBrowser = vAPI.browser.getTabBrowser(win); if (tabBrowser === null) { return; } @@ -662,7 +662,7 @@ URI = browser.currentURI; // Close extension tabs if (URI.schemeIs('chrome') && URI.host === location.host) { - removeInternal(tab, getTabBrowser(win)); + removeInternal(tab, vAPI.browser.getTabBrowser(win)); } tabId = browserToTabIdMap.get(browser); @@ -682,7 +682,7 @@ for (let win of vAPI.window.getWindows()) { onWindowLoad(win); - tabBrowser = getTabBrowser(win); + tabBrowser = vAPI.browser.getTabBrowser(win); if (tabBrowser === null) { continue; } @@ -732,4 +732,6 @@ tabIdFromTarget: tabIdFromTarget }; })(); + + vAPI.tabs.manager = tabWatcher; })(); |