Bug 1390153 - Add support for suggest_url to WebExtension added engines. r?mixedpuppy draft
authorMichael Kaply <mozilla@kaply.com>
Mon, 14 Aug 2017 10:56:47 -0500
changeset 645930 fbf7ed3cd2f5f0ed4bfbf84038742767b1a293cb
parent 645833 df9beb781895fcd0493c21e95ad313e0044515ec
child 726083 d52fb6da7b878ff1c02a74aba7055c450755ae5b
push id73946
push usermozilla@kaply.com
push dateMon, 14 Aug 2017 15:57:01 +0000
reviewersmixedpuppy
bugs1390153
milestone57.0a1
Bug 1390153 - Add support for suggest_url to WebExtension added engines. r?mixedpuppy MozReview-Commit-ID: IPsDbwZ8KSy
browser/components/extensions/ext-chrome-settings-overrides.js
browser/components/extensions/schemas/chrome_settings_overrides.json
browser/components/extensions/test/browser/browser_ext_settings_overrides_search.js
--- 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({