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.
pull/2/head
Deathamns 10 years ago committed by gorhill
parent a9b91ee0b6
commit 81c710c360

@ -19,43 +19,37 @@
Home: https://github.com/gorhill/uBlock Home: https://github.com/gorhill/uBlock
*/ */
/* global Services, APP_STARTUP, APP_SHUTDOWN */ /* global APP_SHUTDOWN */
/* exported startup, shutdown, install, uninstall */ /* exported startup, shutdown, install, uninstall */
'use strict'; 'use strict';
/******************************************************************************/ /******************************************************************************/
var bgProcess; let bgProcess;
Components.utils['import']('resource://gre/modules/Services.jsm');
/******************************************************************************/ /******************************************************************************/
function startup(data, reason) { function startup(data) {
bgProcess = function(ev) { let {AddonManager} = Components.utils['import'](
if (ev) { 'resource://gre/modules/AddonManager.jsm',
this.removeEventListener(ev.type, bgProcess); 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 = hDoc.documentElement.appendChild(
bgProcess = bgProcess.documentElement.appendChild( hDoc.createElementNS('http://www.w3.org/1999/xhtml', 'iframe')
bgProcess.createElementNS('http://www.w3.org/1999/xhtml', 'iframe')
); );
bgProcess.setAttribute('src', 'chrome://ublock/content/background.html');
}; let bgURI = 'chrome://ublock/content/background.html';
if (reason === APP_STARTUP) { // send addon data synchronously to the background script
Services.ww.registerNotification({ bgProcess.src = bgURI + '#' + [addon.name, addon.version];
observe: function(win) { });
Services.ww.unregisterNotification(this);
win.addEventListener('DOMContentLoaded', bgProcess);
}
});
}
else {
bgProcess();
}
} }
/******************************************************************************/ /******************************************************************************/
@ -70,7 +64,8 @@ function shutdown(data, reason) {
function install() { function install() {
// https://bugzil.la/719376 // https://bugzil.la/719376
Services.strings.flushBundles(); Components.classes['@mozilla.org/intl/stringbundle;1']
.getService(Components.interfaces.nsIStringBundleService).flushBundles();
} }
/******************************************************************************/ /******************************************************************************/

Loading…
Cancel
Save