aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--platform/firefox/bootstrap.js49
-rw-r--r--platform/firefox/vapi-background.js5
-rw-r--r--platform/safari/Info.plist2
-rw-r--r--platform/safari/vapi-background.js12
-rwxr-xr-xtools/make-safari-meta.py9
5 files changed, 38 insertions, 39 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();
}
/******************************************************************************/
diff --git a/platform/firefox/vapi-background.js b/platform/firefox/vapi-background.js
index 5481723..4afb30e 100644
--- a/platform/firefox/vapi-background.js
+++ b/platform/firefox/vapi-background.js
@@ -43,9 +43,10 @@ vAPI.firefox = true;
/******************************************************************************/
+vAPI.app = location.hash.slice(1).split(',');
vAPI.app = {
- name: 'µBlock',
- version: '0.8.2.0'
+ name: vAPI.app[0],
+ version: vAPI.app[1]
};
/******************************************************************************/
diff --git a/platform/safari/Info.plist b/platform/safari/Info.plist
index 7c1da4c..0e05e50 100644
--- a/platform/safari/Info.plist
+++ b/platform/safari/Info.plist
@@ -21,7 +21,7 @@
<key>Database Quota</key>
<real>52428800</real>
<key>Global Page</key>
- <string>background.html</string>
+ <string>background.html#{appInfo}</string>
<key>Popovers</key>
<array>
<dict>
diff --git a/platform/safari/vapi-background.js b/platform/safari/vapi-background.js
index 50cfea7..8de5513 100644
--- a/platform/safari/vapi-background.js
+++ b/platform/safari/vapi-background.js
@@ -32,20 +32,14 @@
/******************************************************************************/
self.vAPI = self.vAPI || {};
-
vAPI.safari = true;
/******************************************************************************/
-var xhr = new XMLHttpRequest;
-xhr.overrideMimeType('application/x-javascript;charset=utf-8');
-xhr.open('GET', 'Info.plist', false);
-xhr.send();
-xhr = xhr.responseText;
-
+vAPI.app = location.hash.slice(1).split(',');
vAPI.app = {
- name: xhr.match(/DisplayName<\S+[^>]+>([^<]+)/)[1],
- version: xhr.match(/ShortVersionString<\S+[^>]+>([^<]+)/)[1]
+ name: decodeURIComponent(vAPI.app[0]),
+ version: vAPI.app[1]
};
/******************************************************************************/
diff --git a/tools/make-safari-meta.py b/tools/make-safari-meta.py
index 1581faa..5c57cb2 100755
--- a/tools/make-safari-meta.py
+++ b/tools/make-safari-meta.py
@@ -5,6 +5,7 @@ import json
import sys
import codecs
from time import time
+from urllib import parse
from shutil import rmtree
from collections import OrderedDict
@@ -58,6 +59,14 @@ with codecs.open(chromium_manifest, encoding='utf8') as m:
manifest['buildNumber'] = int(time())
manifest['description'] = description
+# pass "#name,version" as the fragment in the URL of the background script
+manifest['appInfo'] = ','.join([
+ parse.quote(manifest['name']),
+ manifest['version']
+])
+
+info_plist = pj(build_dir, 'Info.plist')
+
with codecs.open(pj(build_dir, 'Info.plist'), 'r+', encoding='utf8') as f:
info_plist = f.read()
f.seek(0)