Bug 1477271 - Require "search" permission for search API draft
authorRob Wu <rob@robwu.nl>
Tue, 31 Jul 2018 20:14:03 +0200
changeset 825462 a6ec3336e79be1a39b3c051db3fb07edb7bccf6a
parent 824607 0d72c7996d60a7c07e35c5f90d78b02a47d17460
push id118124
push userbmo:rob@robwu.nl
push dateWed, 01 Aug 2018 21:33:55 +0000
bugs1477271
milestone63.0a1
Bug 1477271 - Require "search" permission for search API And re-enable the test_ext_all_apis.html test to ensure that new APIs are only available by default if the contributor really intents to. MozReview-Commit-ID: FWIKybrk0EE
browser/components/extensions/schemas/search.json
browser/components/extensions/test/browser/browser_ext_search.js
browser/components/extensions/test/mochitest/mochitest.ini
browser/components/extensions/test/mochitest/test_ext_all_apis.html
toolkit/components/extensions/test/xpcshell/test_ext_permissions.js
--- a/browser/components/extensions/schemas/search.json
+++ b/browser/components/extensions/schemas/search.json
@@ -1,16 +1,31 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 [
   {
+    "namespace": "manifest",
+    "types": [
+      {
+        "$extend": "OptionalPermission",
+        "choices": [{
+          "type": "string",
+          "enum": [
+            "search"
+          ]
+        }]
+      }
+    ]
+  },
+  {
     "namespace": "search",
     "description": "Use browser.search to interact with search engines.",
+    "permissions": ["search"],
     "types": [
       {
         "id": "SearchEngine",
         "type": "object",
         "description": "An object encapsulating a search engine",
         "properties": {
           "name": {
             "type": "string"
--- a/browser/components/extensions/test/browser/browser_ext_search.js
+++ b/browser/components/extensions/test/browser/browser_ext_search.js
@@ -23,17 +23,17 @@ add_task(async function test_search() {
     });
     await browser.tabs.create({url: "about:blank"});
     let engines = await browser.search.get();
     browser.test.sendMessage("engines", engines);
   }
 
   let extension = ExtensionTestUtils.loadExtension({
     manifest: {
-      permissions: ["tabs"],
+      permissions: ["search", "tabs"],
       name: TEST_ID,
       "browser_action": {},
       "chrome_settings_overrides": {
         "search_provider": {
           "name": "Search Test",
           "search_url": SEARCH_URL,
         },
       },
@@ -69,17 +69,17 @@ add_task(async function test_search_nota
         }
       });
       browser.search.search("Search Test", "test"); // Can't use SEARCH_TERM here
     });
   }
 
   let extension = ExtensionTestUtils.loadExtension({
     manifest: {
-      permissions: ["tabs"],
+      permissions: ["search", "tabs"],
       name: TEST_ID,
       "browser_action": {},
       "chrome_settings_overrides": {
         "search_provider": {
           "name": "Search Test",
           "search_url": SEARCH_URL,
         },
       },
--- a/browser/components/extensions/test/mochitest/mochitest.ini
+++ b/browser/components/extensions/test/mochitest/mochitest.ini
@@ -1,8 +1,7 @@
 [DEFAULT]
 support-files =
   ../../../../../toolkit/components/extensions/test/mochitest/test_ext_all_apis.js
   ../../../../../toolkit/components/extensions/test/mochitest/file_sample.html
 tags = webextensions
 
 [test_ext_all_apis.html]
-skip-if = true
--- a/browser/components/extensions/test/mochitest/test_ext_all_apis.html
+++ b/browser/components/extensions/test/mochitest/test_ext_all_apis.html
@@ -11,17 +11,16 @@
 <body>
 <script>
 "use strict";
 /* exported expectedContentApisTargetSpecific, expectedBackgroundApisTargetSpecific */
 let expectedContentApisTargetSpecific = [
 ];
 
 let expectedBackgroundApisTargetSpecific = [
-  "search.get",
   "tabs.MutedInfoReason",
   "tabs.TAB_ID_NONE",
   "tabs.TabStatus",
   "tabs.UpdatePropertyName",
   "tabs.WindowType",
   "tabs.ZoomSettingsMode",
   "tabs.ZoomSettingsScope",
   "tabs.connect",
@@ -29,16 +28,17 @@ let expectedBackgroundApisTargetSpecific
   "tabs.detectLanguage",
   "tabs.duplicate",
   "tabs.discard",
   "tabs.executeScript",
   "tabs.get",
   "tabs.getCurrent",
   "tabs.getZoom",
   "tabs.getZoomSettings",
+  "tabs.highlight",
   "tabs.insertCSS",
   "tabs.move",
   "tabs.onActivated",
   "tabs.onAttached",
   "tabs.onCreated",
   "tabs.onDetached",
   "tabs.onHighlighted",
   "tabs.onMoved",
--- a/toolkit/components/extensions/test/xpcshell/test_ext_permissions.js
+++ b/toolkit/components/extensions/test/xpcshell/test_ext_permissions.js
@@ -405,16 +405,17 @@ const GRANTED_WITHOUT_USER_PROMPT = [
   "contextMenus",
   "contextualIdentities",
   "cookies",
   "geckoProfiler",
   "identity",
   "idle",
   "menus",
   "mozillaAddons",
+  "search",
   "storage",
   "theme",
   "webRequest",
   "webRequestBlocking",
 ];
 
 add_task(function test_permissions_have_localization_strings() {
   const ns = Schemas.getNamespace("manifest");