Browse Source

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
commit
81c710c360
  1. 47
      platform/firefox/bootstrap.js

47
platform/firefox/bootstrap.js

@ -19,44 +19,38 @@
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;
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
);
bgProcess = Services.appShell.hiddenDOMWindow.document;
bgProcess = bgProcess.documentElement.appendChild(
bgProcess.createElementNS('http://www.w3.org/1999/xhtml', 'iframe')
AddonManager.getAddonByID(data.id, addon => {
let hDoc = Components.classes['@mozilla.org/appshell/appShellService;1']
.getService(Components.interfaces.nsIAppShellService)
.hiddenDOMWindow.document;
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);
}
let bgURI = 'chrome://ublock/content/background.html';
// send addon data synchronously to the background script
bgProcess.src = bgURI + '#' + [addon.name, addon.version];
}); });
} }
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