Bug 1385864 - Drop invalid optional_permissions from manifests r?kmag draft
authorTomislav Jovanovic <tomica@gmail.com>
Fri, 04 Aug 2017 00:26:50 +0200
changeset 620785 8283cd333c1872fcc176a4c45cef24aaf9b2a6cc
parent 618383 26516ba270816a6cc90f5c42a9b66701369a551f
child 640810 65c426ab61b26321d5856d38fbc4bcbbd0b9fd74
push id72157
push userbmo:tomica@gmail.com
push dateThu, 03 Aug 2017 22:28:00 +0000
reviewerskmag
bugs1385864
milestone56.0a1
Bug 1385864 - Drop invalid optional_permissions from manifests r?kmag MozReview-Commit-ID: Df2wjNOTVkF
toolkit/components/extensions/schemas/manifest.json
toolkit/components/extensions/test/xpcshell/test_ext_unknown_permissions.js
--- a/toolkit/components/extensions/schemas/manifest.json
+++ b/toolkit/components/extensions/schemas/manifest.json
@@ -172,23 +172,18 @@
               "onError": "warn"
             },
             "optional": true
           },
 
           "optional_permissions": {
             "type": "array",
             "items": {
-              "choices": [
-                { "$ref": "OptionalPermission" },
-                {
-                  "type": "string",
-                  "deprecated": "Unknown optional permission ${value}"
-                }
-              ]
+              "$ref": "OptionalPermission",
+              "onError": "warn"
             },
             "optional": true,
             "default": []
           },
 
           "web_accessible_resources": {
             "type": "array",
             "items": { "type": "string" },
--- a/toolkit/components/extensions/test/xpcshell/test_ext_unknown_permissions.js
+++ b/toolkit/components/extensions/test/xpcshell/test_ext_unknown_permissions.js
@@ -4,27 +4,36 @@ add_task(async function test_unknown_per
   let extension = ExtensionTestUtils.loadExtension({
     manifest: {
       permissions: [
         "activeTab",
         "fooUnknownPermission",
         "http://*/",
         "chrome://favicon/",
       ],
+      optional_permissions: [
+        "chrome://favicon/",
+        "https://example.com/",
+      ],
     },
   });
 
   let {messages} = await promiseConsoleOutput(
     () => extension.startup());
 
   const {WebExtensionPolicy} = Cu.import("resource://gre/modules/Extension.jsm", {});
 
   let policy = WebExtensionPolicy.getByID(extension.id);
   Assert.deepEqual(Array.from(policy.permissions).sort(), ["activeTab", "http://*/*"]);
 
+  Assert.deepEqual(extension.extension.manifest.optional_permissions, ["https://example.com/"]);
+
   ok(messages.some(message => /Error processing permissions\.1: Value "fooUnknownPermission" must/.test(message)),
      'Got expected error for "fooUnknownPermission"');
 
   ok(messages.some(message => /Error processing permissions\.3: Value "chrome:\/\/favicon\/" must/.test(message)),
      'Got expected error for "chrome://favicon/"');
 
+  ok(messages.some(message => /Error processing optional_permissions\.0: Value "chrome:\/\/favicon\/" must/.test(message)),
+     "Got expected error from optional_permissions");
+
   await extension.unload();
 });