bug 1313567 use author as fallback if its a string, otherwise ignore r?kmag draft
authorAndy McKay <amckay@mozilla.com>
Mon, 31 Oct 2016 11:57:24 -0700
changeset 431833 c6d70c021ea2afc38291a8633c8967bf825ae23e
parent 431012 1561c917ee27c3ea04bd69467e5b8c7c08102f2a
child 535478 c0cdc3b4ca1fd76c3190a697e91795673207ba89
push id34123
push userbmo:amckay@mozilla.com
push dateMon, 31 Oct 2016 19:00:58 +0000
reviewerskmag
bugs1313567
milestone52.0a1
bug 1313567 use author as fallback if its a string, otherwise ignore r?kmag MozReview-Commit-ID: CmGXJqDwjM3
toolkit/components/extensions/schemas/manifest.json
toolkit/mozapps/extensions/internal/XPIProvider.jsm
toolkit/mozapps/extensions/test/xpcshell/test_webextension.js
--- 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();
+  }
+});