[Pkg-mozext-commits] [adblock-plus] 22/87: Issue 2850 - Get rid of synchronous XMLHttpRequest on startup, embed JSON files directly instead
David Prévot
taffit at moszumanska.debian.org
Sat Apr 30 17:59:04 UTC 2016
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository adblock-plus.
commit c20bb8cba65dfbc91969ce74fb9f05be19613baf
Author: Wladimir Palant <trev at adblockplus.org>
Date: Mon Mar 7 13:26:05 2016 +0100
Issue 2850 - Get rid of synchronous XMLHttpRequest on startup, embed JSON files directly instead
---
bootstrap.js.tmpl | 5 ++++-
lib/prefs.js | 10 +++-------
packagerGecko.py | 20 ++++++++++++++------
3 files changed, 21 insertions(+), 14 deletions(-)
diff --git a/bootstrap.js.tmpl b/bootstrap.js.tmpl
index 065a06b..165b831 100644
--- a/bootstrap.js.tmpl
+++ b/bootstrap.js.tmpl
@@ -83,7 +83,7 @@ function install(params, reason) {}
function uninstall(params, reason)
{
- {%- if hasVersionPref %}
+ {%- if 'currentVersion' in jsonRequires.get('prefs.json', {}).get('defaults', {}) %}
const ADDON_UNINSTALL = 6; // https://developer.mozilla.org/en/Extensions/Bootstrapped_extensions#Reason_constants
if (reason == ADDON_UNINSTALL)
{
@@ -173,6 +173,9 @@ function require(module)
return scopes[module].exports;
}
require.scopes = Object.create(null);
+{%- for name, data in jsonRequires.iteritems() %}
+require.scopes[{{name|json}}] = {exports: {{data|json}}};
+{%- endfor %}
{%- if hasChromeRequires %}
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
diff --git a/lib/prefs.js b/lib/prefs.js
index eb670a7..d1ebb95 100644
--- a/lib/prefs.js
+++ b/lib/prefs.js
@@ -17,13 +17,9 @@ function init()
// Load default preferences and set up properties for them
let defaultBranch = Services.prefs.getDefaultBranch(branchName);
- let request = new XMLHttpRequest();
- request.open("GET", addonRoot + "defaults/prefs.json", false);
- request.responseType = "json";
- request.send();
-
- let defaults = request.response.defaults;
- let preconfigurable = new Set(request.response.preconfigurable);
+ let prefsData = require("prefs.json");
+ let defaults = prefsData.defaults;
+ let preconfigurable = new Set(prefsData.preconfigurable);
for (let pref in defaults)
{
let value = defaults[pref];
diff --git a/packagerGecko.py b/packagerGecko.py
index 39d2cb8..c9a156e 100644
--- a/packagerGecko.py
+++ b/packagerGecko.py
@@ -53,7 +53,7 @@ def getChromeSubdirs(baseDir, locales):
return result
def getPackageFiles(params):
- result = set(('chrome', 'components', 'modules', 'lib', 'resources', 'defaults', 'chrome.manifest', 'icon.png', 'icon64.png',))
+ result = set(('chrome', 'components', 'modules', 'lib', 'resources', 'chrome.manifest', 'icon.png', 'icon64.png',))
baseDir = params['baseDir']
for file in os.listdir(baseDir):
@@ -209,15 +209,23 @@ def fixupLocales(params, files):
else:
files[path] = reference[file]['_origData'].encode('utf-8')
+def processJSONFiles(params, files):
+ prefix = 'lib/'
+ for name, content in files.iteritems():
+ if name.startswith(prefix) and name.endswith('.json'):
+ params['jsonRequires'][name[len(prefix):]] = json.loads(content)
+ for name in params['jsonRequires'].iterkeys():
+ del files[prefix + name]
+
def addMissingFiles(params, files):
templateData = {
'hasChrome': False,
'hasChromeRequires': False,
'hasShutdownHandlers': False,
'hasXMLHttpRequest': False,
- 'hasVersionPref': False,
'chromeWindows': [],
- 'requires': {},
+ 'requires': set(),
+ 'jsonRequires': params['jsonRequires'],
'metadata': params['metadata'],
'multicompartment': params['multicompartment'],
'applications': dict((v, k) for k, v in KNOWN_APPS.iteritems()),
@@ -226,7 +234,7 @@ def addMissingFiles(params, files):
def checkScript(name):
content = files[name]
for match in re.finditer(r'(?:^|\s)require\(\s*"([\w\-]+)"\s*\)', content):
- templateData['requires'][match.group(1)] = True
+ templateData['requires'].add(match.group(1))
if name.startswith('chrome/content/'):
templateData['hasChromeRequires'] = True
if name.startswith('lib/') and re.search(r'\bXMLHttpRequest\b', content):
@@ -238,8 +246,6 @@ def addMissingFiles(params, files):
for name, content in files.iteritems():
if name == 'chrome.manifest':
templateData['hasChrome'] = True
- elif name == 'defaults/prefs.json':
- templateData['hasVersionPref'] = 'currentVersion' in json.loads(content).get('defaults', {})
elif name.endswith('.js'):
checkScript(name)
elif name.endswith('.xul'):
@@ -336,6 +342,7 @@ def createBuild(baseDir, type="gecko", outFile=None, locales=None, buildNum=None
'metadata': metadata,
'contributors': contributors,
'multicompartment': multicompartment,
+ 'jsonRequires': {},
}
mapped = metadata.items('mapping') if metadata.has_section('mapping') else []
@@ -350,6 +357,7 @@ def createBuild(baseDir, type="gecko", outFile=None, locales=None, buildNum=None
files.read(path, 'chrome/%s' % name, skip=skip)
importLocales(params, files)
fixupLocales(params, files)
+ processJSONFiles(params, files)
if not 'bootstrap.js' in files:
addMissingFiles(params, files)
if metadata.has_section('preprocess'):
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/adblock-plus.git
More information about the Pkg-mozext-commits
mailing list