aboutsummaryrefslogtreecommitdiffstats
path: root/js
diff options
context:
space:
mode:
Diffstat (limited to 'js')
-rw-r--r--js/vapi-background.js46
-rw-r--r--js/vapi-tabs.js42
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;
})();