Bug 1390153 - Add support for suggest_url to WebExtension added engines. r?mixedpuppy
MozReview-Commit-ID: IPsDbwZ8KSy
--- a/browser/components/extensions/ext-chrome-settings-overrides.js
+++ b/browser/components/extensions/ext-chrome-settings-overrides.js
@@ -44,21 +44,24 @@ this.chrome_settings_overrides = class e
// There can be only one engine right now
isCurrent = Services.search.currentEngine == engines[0];
// Get position of engine and store it
index = Services.search.getEngines().indexOf(engines[0]);
Services.search.removeEngine(engines[0]);
}
}
try {
- Services.search.addEngineWithDetails(searchProvider.name.trim(),
- searchProvider.favicon_url,
- searchProvider.keyword, null,
- "GET", searchProvider.search_url,
- extension.id);
+ let params = {
+ template: searchProvider.search_url,
+ iconURL: searchProvider.favicon_url,
+ alias: searchProvider.keyword,
+ extensionID: extension.id,
+ suggestURL: searchProvider.suggest_url,
+ };
+ Services.search.addEngineWithDetails(searchProvider.name.trim(), params);
if (extension.startupReason === "ADDON_UPGRADE") {
let engine = Services.search.getEngineByName(searchProvider.name.trim());
if (isCurrent) {
Services.search.currentEngine = engine;
}
if (index != -1) {
Services.search.moveEngine(engine, index);
}
--- a/browser/components/extensions/schemas/chrome_settings_overrides.json
+++ b/browser/components/extensions/schemas/chrome_settings_overrides.json
@@ -41,18 +41,17 @@
"optional": true,
"format": "url",
"preprocess": "localize"
},
"suggest_url": {
"type": "string",
"optional": true,
"format": "url",
- "preprocess": "localize",
- "deprecated": "Unsupported on Firefox at this time."
+ "preprocess": "localize"
},
"instant_url": {
"type": "string",
"optional": true,
"format": "url",
"preprocess": "localize",
"deprecated": "Unsupported on Firefox at this time."
},
--- a/browser/components/extensions/test/browser/browser_ext_settings_overrides_search.js
+++ b/browser/components/extensions/test/browser/browser_ext_settings_overrides_search.js
@@ -1,32 +1,43 @@
/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* vim: set sts=2 sw=2 et tw=80: */
"use strict";
+
+const kSearchEngineURL = "https://example.com/?search={searchTerms}";
+const kSearchSuggestURL = "http://example.com/?suggest={searchTerms}";
+const kSearchTerm = "foo";
+const URLTYPE_SUGGEST_JSON = "application/x-suggestions+json";
+
add_task(async function test_extension_adding_engine() {
let ext1 = ExtensionTestUtils.loadExtension({
manifest: {
"chrome_settings_overrides": {
"search_provider": {
"name": "MozSearch",
"keyword": "MozSearch",
- "search_url": "https://example.com/?q={searchTerms}",
+ "search_url": kSearchEngineURL,
+ "suggest_url": kSearchSuggestURL,
},
},
},
useAddonManager: "temporary",
});
await ext1.startup();
let engine = Services.search.getEngineByName("MozSearch");
ok(engine, "Engine should exist.");
+ let expectedSuggestURL = kSearchSuggestURL.replace("{searchTerms}", kSearchTerm);
+ let submissionSuggest = engine.getSubmission(kSearchTerm, URLTYPE_SUGGEST_JSON);
+ is(submissionSuggest.uri.spec, expectedSuggestURL, "Suggest URLs should match");
+
await ext1.unload();
engine = Services.search.getEngineByName("MozSearch");
ok(!engine, "Engine should not exist");
});
add_task(async function test_extension_adding_engine_with_spaces() {
let ext1 = ExtensionTestUtils.loadExtension({