Bug 1475347 - Cleanup search API - use camelCase and promise. r?aswan draft
authorMichael Kaply <mozilla@kaply.com>
Thu, 12 Jul 2018 15:55:25 -0500
changeset 817905 9fbc1a7683edabebe95479472bee66841402df20
parent 817669 e951f4ad123aa87d1d392c286db14cabb41a8560
push id116217
push usermozilla@kaply.com
push dateFri, 13 Jul 2018 17:36:54 +0000
reviewersaswan
bugs1475347
milestone63.0a1
Bug 1475347 - Cleanup search API - use camelCase and promise. r?aswan MozReview-Commit-ID: 2HJYk8irppL
browser/components/extensions/parent/ext-search.js
browser/components/extensions/schemas/search.json
browser/components/extensions/test/browser/browser_ext_search.js
--- a/browser/components/extensions/parent/ext-search.js
+++ b/browser/components/extensions/parent/ext-search.js
@@ -32,32 +32,32 @@ this.search = class extends ExtensionAPI
   getAPI(context) {
     return {
       search: {
         async get() {
           await searchInitialized;
           let engines = Services.search.getEngines();
           let visibleEngines = engines.filter(engine => !engine.hidden);
           return Promise.all(visibleEngines.map(async engine => {
-            let favicon_url = null;
+            let favIconUrl;
             if (engine.iconURI) {
               if (engine.iconURI.schemeIs("resource") ||
                   engine.iconURI.schemeIs("chrome")) {
                 // Convert internal URLs to data URLs
-                favicon_url = await getDataURI(engine.iconURI.spec);
+                favIconUrl = await getDataURI(engine.iconURI.spec);
               } else {
-                favicon_url = engine.iconURI.spec;
+                favIconUrl = engine.iconURI.spec;
               }
             }
 
             return {
               name: engine.name,
-              is_default: engine === Services.search.currentEngine,
-              alias: engine.alias,
-              favicon_url,
+              isDefault: engine === Services.search.currentEngine,
+              alias: engine.alias || undefined,
+              favIconUrl,
             };
           }));
         },
 
         async search(name, searchTerms, tabId) {
           await searchInitialized;
           let engine = Services.search.getEngineByName(name);
           if (!engine) {
--- a/browser/components/extensions/schemas/search.json
+++ b/browser/components/extensions/schemas/search.json
@@ -10,24 +10,24 @@
       {
         "id": "SearchEngine",
         "type": "object",
         "description": "An object encapsulating a search engine",
         "properties": {
           "name": {
             "type": "string"
           },
-          "is_default": {
+          "isDefault": {
             "type": "boolean"
           },
           "alias": {
             "type": "string",
             "optional": true
           },
-          "favicon_url": {
+          "favIconUrl": {
             "type": "string",
             "optional": true,
             "format": "url"
           }
         }
       }
     ],
     "functions": [
@@ -38,16 +38,17 @@
         "async": true,
         "parameters": []
       },
       {
         "name": "search",
         "type": "function",
         "requireUserInput": true,
         "description": "Perform a search.",
+        "async": true,
         "parameters": [
           {
             "name": "engineName",
             "type": "string"
           },
           {
             "name": "searchTerms",
             "type": "string"
--- a/browser/components/extensions/test/browser/browser_ext_search.js
+++ b/browser/components/extensions/test/browser/browser_ext_search.js
@@ -41,17 +41,17 @@ add_task(async function test_search() {
     background,
     useAddonManager: "temporary",
   });
   await extension.startup();
 
   let addonEngines = await extension.awaitMessage("engines");
   let engines = Services.search.getEngines().filter(engine => !engine.hidden);
   is(addonEngines.length, engines.length, "Engine lengths are the same.");
-  let defaultEngine = addonEngines.filter(engine => engine.is_default === true);
+  let defaultEngine = addonEngines.filter(engine => engine.isDefault === true);
   is(defaultEngine.length, 1, "One default engine");
   is(defaultEngine[0].name, Services.search.currentEngine.name, "Default engine is correct");
   await clickBrowserAction(extension);
   let url = await extension.awaitMessage("searchLoaded");
   is(url, SEARCH_URL.replace("{searchTerms}", SEARCH_TERM), "Loaded page matches search");
   await extension.unload();
 });