From 4fffc97954863587bf1076c4e78023b596954f99 Mon Sep 17 00:00:00 2001 From: gorhill Date: Mon, 13 Apr 2015 09:56:46 -0400 Subject: [PATCH] untangling fennec code --- platform/firefox/bootstrap.js | 6 +- platform/firefox/chrome.manifest | 2 +- platform/firefox/frameModule.js | 4 +- platform/firefox/frameScript.js | 6 +- platform/firefox/install.rdf | 11 +- platform/firefox/vapi-background.js | 157 +++------------------------- platform/firefox/vapi-client.js | 4 +- platform/firefox/vapi-common.js | 2 +- 8 files changed, 28 insertions(+), 164 deletions(-) diff --git a/platform/firefox/bootstrap.js b/platform/firefox/bootstrap.js index 8d6dcc5..3e74b5a 100644 --- a/platform/firefox/bootstrap.js +++ b/platform/firefox/bootstrap.js @@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see {http://www.gnu.org/licenses/}. - Home: https://github.com/gorhill/uBlock + Home: https://github.com/gorhill/uMatrix */ /* global APP_SHUTDOWN, APP_STARTUP */ @@ -27,11 +27,11 @@ /******************************************************************************/ // Accessing the context of the background page: -// var win = Services.appShell.hiddenDOMWindow.document.querySelector('iframe[src*=ublock]').contentWindow; +// var win = Services.appShell.hiddenDOMWindow.document.querySelector('iframe[src*=umatrix]').contentWindow; let bgProcess; let version; -const hostName = 'ublock0'; +const hostName = 'umatrix'; const restartListener = { get messageManager() { return Components.classes['@mozilla.org/parentprocessmessagemanager;1'] diff --git a/platform/firefox/chrome.manifest b/platform/firefox/chrome.manifest index 75781cd..9516057 100644 --- a/platform/firefox/chrome.manifest +++ b/platform/firefox/chrome.manifest @@ -1 +1 @@ -content ublock0 ./ +content umatrix ./ diff --git a/platform/firefox/frameModule.js b/platform/firefox/frameModule.js index 9aff492..608e579 100644 --- a/platform/firefox/frameModule.js +++ b/platform/firefox/frameModule.js @@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see {http://www.gnu.org/licenses/}. - Home: https://github.com/gorhill/uBlock + Home: https://github.com/gorhill/uMatrix */ 'use strict'; @@ -49,7 +49,7 @@ const getMessageManager = function(win) { const contentObserver = { classDescription: 'content-policy for ' + hostName, - classID: Components.ID('{7afbd130-cbaf-46c2-b944-f5d24305f484}'), + classID: Components.ID('{d8baca19-b666-4c09-84b1-a36d9a0bb03f}'), contractID: '@' + hostName + '/content-policy;1', ACCEPT: Ci.nsIContentPolicy.ACCEPT, MAIN_FRAME: Ci.nsIContentPolicy.TYPE_DOCUMENT, diff --git a/platform/firefox/frameScript.js b/platform/firefox/frameScript.js index e8c3cba..fcdece6 100644 --- a/platform/firefox/frameScript.js +++ b/platform/firefox/frameScript.js @@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see {http://www.gnu.org/licenses/}. - Home: https://github.com/gorhill/uBlock + Home: https://github.com/gorhill/uMatrix */ /******************************************************************************/ @@ -50,11 +50,11 @@ let injectContentScripts = function(win) { }; let onLoadCompleted = function() { - removeMessageListener('ublock-load-completed', onLoadCompleted); + removeMessageListener('umatrix-load-completed', onLoadCompleted); injectContentScripts(content); }; -addMessageListener('ublock-load-completed', onLoadCompleted); +addMessageListener('umatrix-load-completed', onLoadCompleted); locationChangeListener = new LocationChangeListener(docShell); diff --git a/platform/firefox/install.rdf b/platform/firefox/install.rdf index 78b44f0..9d36605 100644 --- a/platform/firefox/install.rdf +++ b/platform/firefox/install.rdf @@ -1,7 +1,7 @@ - uBlock0@raymondhill.net + uMatrix@raymondhill.net {version} {name} {description} @@ -22,15 +22,6 @@ - - - - {{aa3c5121-dab2-40e2-81ca-7ea25febc110}} - 24.0 - 40.0 - - - diff --git a/platform/firefox/vapi-background.js b/platform/firefox/vapi-background.js index 4873d94..f68de89 100644 --- a/platform/firefox/vapi-background.js +++ b/platform/firefox/vapi-background.js @@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see {http://www.gnu.org/licenses/}. - Home: https://github.com/gorhill/uBlock + Home: https://github.com/gorhill/uMatrix */ /* jshint esnext: true, bitwise: false */ @@ -39,12 +39,11 @@ const {Services} = Cu.import('resource://gre/modules/Services.jsm', null); var vAPI = self.vAPI = self.vAPI || {}; vAPI.firefox = true; -vAPI.fennec = Services.appinfo.ID === '{aa3c5121-dab2-40e2-81ca-7ea25febc110}'; /******************************************************************************/ vAPI.app = { - name: 'uBlock₀', + name: 'uMatrix', version: location.hash.slice(1) }; @@ -78,7 +77,7 @@ window.addEventListener('unload', function() { if ( cleanupTasks.length < expectedNumberOfCleanups ) { console.error( - 'uBlock> Cleanup tasks performed: %s (out of %s)', + 'uMatrix> Cleanup tasks performed: %s (out of %s)', cleanupTasks.length, expectedNumberOfCleanups ); @@ -296,10 +295,7 @@ var windowWatcher = { return; } - if ( tabBrowser.deck ) { - // Fennec - tabContainer = tabBrowser.deck; - } else if ( tabBrowser.tabContainer ) { + if ( tabBrowser.tabContainer ) { // desktop Firefox tabContainer = tabBrowser.tabContainer; vAPI.contextMenu.register(this.document); @@ -347,7 +343,7 @@ vAPI.noTabId = '-1'; /******************************************************************************/ var getTabBrowser = function(win) { - return vAPI.fennec && win.BrowserApp || win.gBrowser || null; + return win.gBrowser || null; }; /******************************************************************************/ @@ -356,7 +352,7 @@ var getBrowserForTab = function(tab) { if ( !tab ) { return null; } - return vAPI.fennec && tab.browser || tab.linkedBrowser || null; + return tab.linkedBrowser || null; }; /******************************************************************************/ @@ -366,15 +362,6 @@ var getOwnerWindow = function(target) { return target.ownerDocument.defaultView; } - // Fennec - for ( var win of vAPI.tabs.getWindows() ) { - for ( var tab of win.BrowserApp.tabs) { - if ( tab === target || tab.window === target ) { - return win; - } - } - } - return null; }; @@ -407,10 +394,7 @@ vAPI.tabs.registerListeners = function() { continue; } - if ( tabBrowser.deck ) { - // Fennec - tabContainer = tabBrowser.deck; - } else if ( tabBrowser.tabContainer ) { + if ( tabBrowser.tabContainer ) { tabContainer = tabBrowser.tabContainer; tabBrowser.removeTabsProgressListener(tabWatcher); } @@ -444,12 +428,7 @@ vAPI.tabs.getTabId = function(target) { if ( !target ) { return vAPI.noTabId; } - if ( vAPI.fennec ) { - if ( target.browser ) { - // target is a tab - target = target.browser; - } - } else if ( target.linkedPanel ) { + if ( target.linkedPanel ) { // target is a tab target = target.linkedBrowser; } @@ -519,14 +498,8 @@ vAPI.tabs.get = function(tabId, callback) { var windows = this.getWindows(); var browser = getBrowserForTab(tab); var tabBrowser = getTabBrowser(win); - var tabIndex, tabTitle; - if ( vAPI.fennec ) { - tabIndex = tabBrowser.tabs.indexOf(tab); - tabTitle = browser.contentTitle; - } else { - tabIndex = tabBrowser.browsers.indexOf(browser); - tabTitle = tab.label; - } + var tabIndex = tabBrowser.browsers.indexOf(browser); + var tabTitle = tab.label; callback({ id: tabId, @@ -630,12 +603,6 @@ vAPI.tabs.open = function(details) { win = Services.wm.getMostRecentWindow('navigator:browser'); tabBrowser = getTabBrowser(win); - if ( vAPI.fennec ) { - tabBrowser.addTab(details.url, {selected: details.active !== false}); - // Note that it's impossible to move tabs on Fennec, so don't bother - return; - } - if ( details.index === -1 ) { details.index = tabBrowser.browsers.indexOf(tabBrowser.selectedBrowser) + 1; } @@ -668,10 +635,6 @@ vAPI.tabs.replace = function(tabId, url) { /******************************************************************************/ vAPI.tabs._remove = function(tab, tabBrowser) { - if ( vAPI.fennec ) { - tabBrowser.closeTab(tab); - return; - } tabBrowser.removeTab(tab); }; @@ -714,12 +677,7 @@ vAPI.tabs.select = function(tab) { } var tabBrowser = getTabBrowser(getOwnerWindow(tab)); - - if ( vAPI.fennec ) { - tabBrowser.selectTab(tab); - } else { - tabBrowser.selectedTab = tab; - } + tabBrowser.selectedTab = tab; }; /******************************************************************************/ @@ -844,7 +802,7 @@ vAPI.messaging.onMessage = function({target, data}) { return; } - console.error('uBlock> messaging > unknown request: %o', data); + console.error('uMatrix> messaging > unknown request: %o', data); // Unhandled: // Need to callback anyways in case caller expected an answer, or @@ -1020,7 +978,7 @@ var httpObserver = { try { this.componentRegistrar.unregisterFactory(this.classID, Components.manager.getClassObject(this.classID, Ci.nsIFactory)); } catch (ex) { - console.error('uBlock> httpObserver > unable to unregister stale instance: ', ex); + console.error('uMatrix> httpObserver > unable to unregister stale instance: ', ex); } } @@ -1388,75 +1346,6 @@ vAPI.toolbarButton = { // Toolbar button UI for desktop Firefox vAPI.toolbarButton.init = function() { - if ( vAPI.fennec ) { - // Menu UI for Fennec - var tb = { - menuItemIds: new WeakMap(), - label: vAPI.app.name, - tabs: {} - }; - vAPI.toolbarButton = tb; - - tb.getMenuItemLabel = function(tabId) { - var label = this.label; - if ( tabId === undefined ) { - return label; - } - var tabDetails = this.tabs[tabId]; - if ( !tabDetails ) { - return label; - } - if ( !tabDetails.img ) { - label += ' (' + vAPI.i18n('fennecMenuItemBlockingOff') + ')'; - } else if ( tabDetails.badge ) { - label += ' (' + tabDetails.badge + ')'; - } - return label; - }; - - tb.onClick = function() { - var win = Services.wm.getMostRecentWindow('navigator:browser'); - var curTabId = vAPI.tabs.getTabId(getTabBrowser(win).selectedTab); - vAPI.tabs.open({ - url: 'popup.html?tabId=' + curTabId, - index: -1, - select: true - }); - }; - - tb.updateState = function(win, tabId) { - var id = this.menuItemIds.get(win); - if ( !id ) { - return; - } - win.NativeWindow.menu.update(id, { - name: this.getMenuItemLabel(tabId) - }); - }; - - // Only actually expecting one window under Fennec (note, not tabs, windows) - for ( var win of vAPI.tabs.getWindows() ) { - var label = tb.getMenuItemLabel(); - var id = win.NativeWindow.menu.add({ - name: label, - callback: tb.onClick - }); - tb.menuItemIds.set(win, id); - } - - cleanupTasks.push(function() { - for ( var win of vAPI.tabs.getWindows() ) { - var id = tb.menuItemIds.get(win); - if ( id ) { - win.NativeWindow.menu.remove(id); - tb.menuItemIds.delete(win); - } - } - }); - - return; - } - var CustomizableUI; try { CustomizableUI = Cu.import('resource:///modules/CustomizableUI.jsm', null).CustomizableUI; @@ -1756,17 +1645,6 @@ vAPI.contextMenu.register = function(doc) { return; } - if ( vAPI.fennec ) { - // TODO https://developer.mozilla.org/en-US/Add-ons/Firefox_for_Android/API/NativeWindow/contextmenus/add - /*var nativeWindow = doc.defaultView.NativeWindow; - contextId = nativeWindow.contextmenus.add( - this.menuLabel, - nativeWindow.contextmenus.linkOpenableContext, - this.onCommand - );*/ - return; - } - var contextMenu = doc.getElementById('contentAreaContextMenu'); var menuitem = doc.createElement('menuitem'); menuitem.setAttribute('id', this.menuItemId); @@ -1785,11 +1663,6 @@ vAPI.contextMenu.unregister = function(doc) { return; } - if ( vAPI.fennec ) { - // TODO - return; - } - var menuitem = doc.getElementById(this.menuItemId); var contextMenu = menuitem.parentNode; menuitem.removeEventListener('command', this.onCommand); @@ -1862,7 +1735,7 @@ vAPI.contextMenu.remove = function() { /******************************************************************************/ var optionsObserver = { - addonId: 'uBlock0@raymondhill.net', + addonId: 'uMatrix@raymondhill.net', register: function() { Services.obs.addObserver(this, 'addon-options-displayed', false); @@ -1918,7 +1791,7 @@ vAPI.onLoadAllCompleted = function() { var µb = µBlock; for ( var tab of this.tabs.getAll() ) { // We're insterested in only the tabs that were already loaded - if ( !vAPI.fennec && tab.hasAttribute('pending') ) { + if ( tab.hasAttribute('pending') ) { continue; } diff --git a/platform/firefox/vapi-client.js b/platform/firefox/vapi-client.js index b2d5e34..ddc457e 100644 --- a/platform/firefox/vapi-client.js +++ b/platform/firefox/vapi-client.js @@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see {http://www.gnu.org/licenses/}. - Home: https://github.com/gorhill/uBlock + Home: https://github.com/gorhill/uMatrix */ /* global addMessageListener, removeMessageListener, sendAsyncMessage */ @@ -160,7 +160,7 @@ vAPI.messaging = { vAPI.messaging.listeners[message.requestId] = callback; } - sendAsyncMessage('ublock0:background', message); + sendAsyncMessage('umatrix:background', message); }, close: function() { delete vAPI.messaging.channels[this.channelName]; diff --git a/platform/firefox/vapi-common.js b/platform/firefox/vapi-common.js index c84d281..e5cffae 100644 --- a/platform/firefox/vapi-common.js +++ b/platform/firefox/vapi-common.js @@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see {http://www.gnu.org/licenses/}. - Home: https://github.com/gorhill/uBlock + Home: https://github.com/gorhill/uMatrix */ /* global sendAsyncMessage */