Bug 1460190 - Handle search regions with default but no enginelist. r?adw draft
authorMichael Kaply <mozilla@kaply.com>
Wed, 09 May 2018 23:29:34 -0700
changeset 793471 f478a24968678f43cd43da42c1d8444d92473070
parent 793295 4aa8cf5c8b0f2fb3579a5ef2c0f77fec78a30118
push id109395
push usermozilla@kaply.com
push dateThu, 10 May 2018 06:30:05 +0000
reviewersadw
bugs1460190
milestone62.0a1
Bug 1460190 - Handle search regions with default but no enginelist. r?adw MozReview-Commit-ID: FJM1Q9DLXWR
toolkit/components/search/nsSearchService.js
--- a/toolkit/components/search/nsSearchService.js
+++ b/toolkit/components/search/nsSearchService.js
@@ -3495,23 +3495,25 @@ SearchService.prototype = {
         }
       }
     }
 
     let searchRegion;
     if (Services.prefs.prefHasUserValue("browser.search.region")) {
       searchRegion = Services.prefs.getCharPref("browser.search.region");
     }
-    if (!searchRegion || !(searchRegion in searchSettings)) {
-      searchRegion = "default";
-    }
 
     // Fallback to building a list based on the regions in the JSON
     if (!engineNames || !engineNames.length) {
-      engineNames = searchSettings[searchRegion].visibleDefaultEngines;
+      if (searchRegion && searchRegion in searchSettings &&
+          "visibleDefaultEngines" in searchSettings[searchRegion]) {
+        engineNames = searchSettings[searchRegion].visibleDefaultEngines;
+      } else {
+        engineNames = searchSettings.default.visibleDefaultEngines;
+      }
     }
 
     // Remove any engine names that are supposed to be ignored.
     // This pref is only allows in a partner distribution.
     let branch = Services.prefs.getDefaultBranch(BROWSER_SEARCH_PREF);
     if (isPartnerBuild() &&
         branch.getPrefType("ignoredJAREngines") == branch.PREF_STRING) {
       let ignoredJAREngines = branch.getCharPref("ignoredJAREngines")
@@ -3525,17 +3527,18 @@ SearchService.prototype = {
 
     for (let name of engineNames) {
       uris.push(APP_SEARCH_PREFIX + name + ".xml");
     }
 
     // Store this so that it can be used while writing the cache file.
     this._visibleDefaultEngines = engineNames;
 
-    if ("searchDefault" in searchSettings[searchRegion]) {
+    if (searchRegion && searchRegion in searchSettings &&
+        "searchDefault" in searchSettings[searchRegion]) {
       this._searchDefault = searchSettings[searchRegion].searchDefault;
     } else {
       this._searchDefault = searchSettings.default.searchDefault;
     }
   },
 
   _parseListTxt: function SRCH_SVC_parseListTxt(list, uris) {
     let names = list.split("\n").filter(n => !!n);