Bug 1306858: Fix locale discovery in packed, embedded WebExtensions. r?aswan
MozReview-Commit-ID: KKcaj9i2PwK
--- a/toolkit/components/extensions/Extension.jsm
+++ b/toolkit/components/extensions/Extension.jsm
@@ -897,25 +897,26 @@ this.ExtensionData = class {
}
iter.close();
return results;
}
// FIXME: We need a way to do this without main thread IO.
- this.rootURI.QueryInterface(Ci.nsIJARURI);
+ let uri = this.rootURI.QueryInterface(Ci.nsIJARURI);
- let file = this.rootURI.JARFile.QueryInterface(Ci.nsIFileURL).file;
+ let file = uri.JARFile.QueryInterface(Ci.nsIFileURL).file;
let zipReader = Cc["@mozilla.org/libjar/zip-reader;1"].createInstance(Ci.nsIZipReader);
zipReader.open(file);
try {
let results = [];
// Normalize the directory path.
+ path = `${uri.JAREntry}/${path}`;
path = path.replace(/\/\/+/g, "/").replace(/^\/|\/$/g, "") + "/";
// Escape pattern metacharacters.
let pattern = path.replace(/[[\]()?*~|$\\]/g, "\\$&");
let enumerator = zipReader.findEntries(pattern + "*");
while (enumerator.hasMore()) {
let name = enumerator.getNext();
--- a/toolkit/components/extensions/test/xpcshell/test_locale_data.js
+++ b/toolkit/components/extensions/test/xpcshell/test_locale_data.js
@@ -4,25 +4,27 @@ Cu.import("resource://gre/modules/Extens
/* globals ExtensionData */
const uuidGenerator = Cc["@mozilla.org/uuid-generator;1"].getService(Ci.nsIUUIDGenerator);
function* generateAddon(data) {
let id = uuidGenerator.generateUUID().number;
- data = Object.assign({applications: {gecko: {id}}}, data);
+ data = Object.assign({embedded: true}, data);
+ data.manifest = Object.assign({applications: {gecko: {id}}}, data.manifest);
+
let xpi = Extension.generateXPI(data);
do_register_cleanup(() => {
Services.obs.notifyObservers(xpi, "flush-cache-entry", null);
xpi.remove(false);
});
let fileURI = Services.io.newFileURI(xpi);
- let jarURI = NetUtil.newURI(`jar:${fileURI.spec}!/`);
+ let jarURI = NetUtil.newURI(`jar:${fileURI.spec}!/webextension/`);
let extension = new ExtensionData(jarURI);
yield extension.readManifest();
return extension;
}
add_task(function* testMissingDefaultLocale() {