diff options
-rw-r--r-- | platform/firefox/bootstrap.js | 49 | ||||
-rw-r--r-- | platform/firefox/vapi-background.js | 5 | ||||
-rw-r--r-- | platform/safari/Info.plist | 2 | ||||
-rw-r--r-- | platform/safari/vapi-background.js | 12 | ||||
-rwxr-xr-x | tools/make-safari-meta.py | 9 |
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) |