From 81c710c360170079d951850b2ee5b41e14e8afa0 Mon Sep 17 00:00:00 2001 From: Deathamns Date: Thu, 18 Dec 2014 14:43:34 +0100 Subject: [PATCH] Firefox,Safari: fill vAPI.app in a different way Pass the extension data (name and version) as the fragment of the URL for the background script, so vAPI.app can be filled without using XHR to read the manifest files. --- platform/firefox/bootstrap.js | 49 ++++++++++++++++------------------- 1 file changed, 22 insertions(+), 27 deletions(-) diff --git a/platform/firefox/bootstrap.js b/platform/firefox/bootstrap.js index c601c73..330ed84 100644 --- a/platform/firefox/bootstrap.js +++ b/platform/firefox/bootstrap.js @@ -19,43 +19,37 @@ Home: https://github.com/gorhill/uBlock */ -/* global Services, APP_STARTUP, APP_SHUTDOWN */ +/* global APP_SHUTDOWN */ /* exported startup, shutdown, install, uninstall */ 'use strict'; /******************************************************************************/ -var bgProcess; - -Components.utils['import']('resource://gre/modules/Services.jsm'); +let bgProcess; /******************************************************************************/ -function startup(data, reason) { - bgProcess = function(ev) { - if (ev) { - this.removeEventListener(ev.type, bgProcess); - } +function startup(data) { + let {AddonManager} = Components.utils['import']( + 'resource://gre/modules/AddonManager.jsm', + null + ); + + AddonManager.getAddonByID(data.id, addon => { + let hDoc = Components.classes['@mozilla.org/appshell/appShellService;1'] + .getService(Components.interfaces.nsIAppShellService) + .hiddenDOMWindow.document; - bgProcess = Services.appShell.hiddenDOMWindow.document; - bgProcess = bgProcess.documentElement.appendChild( - bgProcess.createElementNS('http://www.w3.org/1999/xhtml', 'iframe') + bgProcess = hDoc.documentElement.appendChild( + hDoc.createElementNS('http://www.w3.org/1999/xhtml', 'iframe') ); - bgProcess.setAttribute('src', 'chrome://ublock/content/background.html'); - }; - - if (reason === APP_STARTUP) { - Services.ww.registerNotification({ - observe: function(win) { - Services.ww.unregisterNotification(this); - win.addEventListener('DOMContentLoaded', bgProcess); - } - }); - } - else { - bgProcess(); - } + + let bgURI = 'chrome://ublock/content/background.html'; + + // send addon data synchronously to the background script + bgProcess.src = bgURI + '#' + [addon.name, addon.version]; + }); } /******************************************************************************/ @@ -70,7 +64,8 @@ function shutdown(data, reason) { function install() { // https://bugzil.la/719376 - Services.strings.flushBundles(); + Components.classes['@mozilla.org/intl/stringbundle;1'] + .getService(Components.interfaces.nsIStringBundleService).flushBundles(); } /******************************************************************************/