bug 1282977 handle developer in manifest r=kmag

MozReview-Commit-ID: BsGflddsodd

--HG--
extra : rebase_source : 829a633f0e2d11d2f6f48e233bf91079ecb84b87
This commit is contained in:
Andy McKay 2016-09-15 16:37:16 -07:00
Родитель ca5051d9c8
Коммит 69bfe48899
3 изменённых файлов: 85 добавлений и 5 удалений

Просмотреть файл

@ -58,7 +58,7 @@
"preprocess": "localize"
},
"creator": {
"author": {
"type": "string",
"optional": true,
"preprocess": "localize"
@ -180,7 +180,25 @@
"type": "array",
"items": { "type": "string" },
"optional": true
},
"developer": {
"type": "object",
"optional": true,
"properties": {
"name": {
"type": "string",
"optional": true,
"preprocess": "localize"
},
"url": {
"type": "string",
"optional": true,
"preprocess": "localize"
}
}
}
},
"additionalProperties": { "$ref": "UnrecognizedProperty" }

Просмотреть файл

@ -976,11 +976,24 @@ var loadManifestFromWebManifest = Task.async(function*(aUri) {
// localization placeholders still in place.
let rawManifest = extension.rawManifest;
let creator = rawManifest.author;
let homepageURL = rawManifest.homepage_url;
// Allow developer to override creator and homepage_url.
if (rawManifest.developer) {
if (rawManifest.developer.name) {
creator = rawManifest.developer.name;
}
if (rawManifest.developer.url) {
homepageURL = rawManifest.developer.url;
}
}
let result = {
name: extension.localize(rawManifest.name, aLocale),
description: extension.localize(rawManifest.description, aLocale),
creator: extension.localize(rawManifest.creator, aLocale),
homepageURL: extension.localize(rawManifest.homepage_url, aLocale),
creator: extension.localize(creator, aLocale),
homepageURL: extension.localize(homepageURL, aLocale),
developers: null,
translators: null,

Просмотреть файл

@ -19,11 +19,11 @@ const { GlobalManager, Management } = Components.utils.import("resource://gre/mo
function promiseAddonStartup() {
return new Promise(resolve => {
let listener = (evt, extension) => {
Management.off("startup", listener);
Management.off("ready", listener);
resolve(extension);
};
Management.on("startup", listener);
Management.on("ready", listener);
});
}
@ -353,3 +353,52 @@ add_task(function* test_experiments_api() {
addon.uninstall();
});
add_task(function* developerShouldOverride() {
let addon = yield promiseInstallWebExtension({
manifest: {
default_locale: "en",
developer: {
name: "__MSG_name__",
url: "__MSG_url__"
},
author: "Will be overridden by developer",
homepage_url: "https://will.be.overridden",
},
files: {
"_locales/en/messages.json": `{
"name": {
"message": "en name"
},
"url": {
"message": "https://example.net/en"
}
}`
}
});
addon = yield promiseAddonByID(addon.id);
equal(addon.creator, "en name");
equal(addon.homepageURL, "https://example.net/en");
addon.uninstall();
});
add_task(function* developerEmpty() {
for (let developer of [{}, null, {name: null, url: null}]) {
let addon = yield promiseInstallWebExtension({
manifest: {
author: "Some author",
developer: developer,
homepage_url: "https://example.net",
manifest_version: 2,
name: "Web Extension Name",
version: "1.0",
}
});
addon = yield promiseAddonByID(addon.id);
equal(addon.creator, "Some author");
equal(addon.homepageURL, "https://example.net");
addon.uninstall();
}
});