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
--- 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");