bug 1313567 use author as fallback if its a string, otherwise ignore r?kmag
MozReview-Commit-ID: CmGXJqDwjM3
--- a/toolkit/components/extensions/schemas/manifest.json
+++ b/toolkit/components/extensions/schemas/manifest.json
@@ -56,17 +56,18 @@
"type": "string",
"optional": true,
"preprocess": "localize"
},
"author": {
"type": "string",
"optional": true,
- "preprocess": "localize"
+ "preprocess": "localize",
+ "onError": "warn"
},
"version": {
"type": "string",
"optional": false
},
"homepage_url": {
--- a/toolkit/mozapps/extensions/internal/XPIProvider.jsm
+++ b/toolkit/mozapps/extensions/internal/XPIProvider.jsm
@@ -998,17 +998,18 @@ var loadManifestFromWebManifest = Task.a
addon.applyBackgroundUpdates = AddonManager.AUTOUPDATE_DEFAULT;
function getLocale(aLocale) {
// Use the raw manifest, here, since we need values with their
// localization placeholders still in place.
let rawManifest = extension.rawManifest;
- let creator = rawManifest.author;
+ // As a convenience, allow author to be set if its a string bug 1313567.
+ let creator = typeof(rawManifest.author) === 'string' ? rawManifest.author : null;
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) {
--- a/toolkit/mozapps/extensions/test/xpcshell/test_webextension.js
+++ b/toolkit/mozapps/extensions/test/xpcshell/test_webextension.js
@@ -397,8 +397,25 @@ add_task(function* developerEmpty() {
});
addon = yield promiseAddonByID(addon.id);
equal(addon.creator, "Some author");
equal(addon.homepageURL, "https://example.net");
addon.uninstall();
}
});
+
+add_task(function* authorNotString() {
+ for (let author of [{}, [], 42]) {
+ let addon = yield promiseInstallWebExtension({
+ manifest: {
+ author: author,
+ manifest_version: 2,
+ name: "Web Extension Name",
+ version: "1.0",
+ }
+ });
+
+ addon = yield promiseAddonByID(addon.id);
+ equal(addon.creator, null);
+ addon.uninstall();
+ }
+});