Update default search engines list per country from new data

The default search engine (DSE) list is being refreshed from recently
collected data.  This CL is focusing first on countries for which a
DSE list is already in place.  Existing engine registrations will be
kept intact, and only new engines are being added.  The list of engine
references for each country is being completely replaced based on new
usage statistics, and unreferenced engine registrations are removed.

Bug: 783890
Change-Id: Ie13eaa91d4a62eb581375f6dc00c556c7c536885
Reviewed-on: https://chromium-review.googlesource.com/c/1345542
Reviewed-by: Peter Kasting <pkasting@chromium.org>
Reviewed-by: Justin Donnelly <jdonnelly@chromium.org>
Commit-Queue: Orin Jaworski <orinj@chromium.org>
Cr-Commit-Position: refs/heads/master@{#615987}
diff --git a/components/search_engines/prepopulated_engines.json b/components/search_engines/prepopulated_engines.json
index 535692d..bfc3772 100644
--- a/components/search_engines/prepopulated_engines.json
+++ b/components/search_engines/prepopulated_engines.json
@@ -8,16 +8,10 @@
 // Engine definitions. See prepopulated_engines_schema.json for the field
 // definitions.
 
-// The following unique IDs are available:
-//    7, 11, 12, 13, 14, 18, 19, 20, 22, 24, 26, 28, 29, 30, 32, 33, 34, 39, 37,
-//    38, 40, 41, 42, 46, 47, 48, 49, 51, 52, 58, 59, 69, 71, 72, 82, 84, 86,
-//    91+
-//
-// IDs > 1000 are reserved for distribution custom engines.
-//
 // NOTES:
-//   - CHANGE THE ABOVE NUMBERS IF YOU ADD A NEW ENGINE; ID conflicts = bad!
-//   - Make sure you update the int_variables below as required.
+//   - CHANGE THE BELOW NUMBERS IF YOU ADD A NEW ENGINE; ID conflicts = bad!
+//     - Make sure you update the int_variables below as described in comments.
+//     - IDs > 1000 are reserved for distribution custom engines.
 //   - NOTIFY the Chrome Webstore team if you add/delete a search engine or
 //     change domain of an existing one (send email to webstore-eng@google.com).
 //     They need to know the mapping between an engine's "id" and its URLs.
@@ -26,28 +20,20 @@
 
 {
   "int_variables": {
-    // The following id is for UMA stats only. Please update it if you add new
-    // engines outside the current range or it will not be counted in stats.
-    "kMaxPrepopulatedEngineID": 90,
+    // When adding new engines, increment this number and use it as the new
+    // max ID. This is used by UMA stats and must be updated to include the full
+    // range or else not all engines will be counted in stats.
+    "kMaxPrepopulatedEngineID": 94,
 
     // Increment this if you change the data in ways that mean users with
-    // existing data should get a new version.
-    "kCurrentDataVersion": 103
+    // existing data should get a new version. Otherwise, existing data may
+    // continue to be used and updates made here will not always appear.
+    "kCurrentDataVersion": 109
   },
 
   // The following engines are included in country lists and are added to the
   // list of search engines on the first run depending on user's country.
   "elements": {
-    "aol": {
-      "name": "AOL",
-      "keyword": "aol.com",
-      "favicon_url": "https://search.aol.com/favicon.ico",
-      "search_url": "https://search.aol.com/aol/search?q={searchTerms}",
-      "suggest_url": "https://autosuggest.search.aol.com/autocomplete/get?output=json&it=&q={searchTerms}",
-      "type": "SEARCH_ENGINE_AOL",
-      "id": 35
-    },
-
     // Ask and Ask UK have suggestion URLs reachable over HTTPS, but they
     // throw a certificate error, so those will remain as HTTP for now.
     "ask": {
@@ -60,25 +46,6 @@
       "id": 4
     },
 
-    "ask_br": {
-      "name": "Ask Brasil",
-      "keyword": "br.ask.com",
-      "favicon_url": "https://sp.br.ask.com/sh/i/a14/favicon/favicon.ico",
-      "search_url": "https://br.ask.com/web?q={searchTerms}",
-      "type": "SEARCH_ENGINE_ASK",
-      "id": 4
-    },
-
-    "ask_uk": {
-      "name": "Ask Jeeves",
-      "keyword": "uk.ask.com",
-      "favicon_url": "https://sp.uk.ask.com/sh/i/a16/favicon/favicon.ico",
-      "search_url": "https://uk.ask.com/web?q={searchTerms}",
-      "suggest_url": "http://ss.uk.ask.com/query?q={searchTerms}&li=ff",
-      "type": "SEARCH_ENGINE_ASK",
-      "id": 4
-    },
-
     // Baidu's suggestion URL is not reachable over HTTPS, so it remains as
     // HTTP for now.
     "baidu": {
@@ -109,6 +76,15 @@
       "id": 3
     },
 
+    "coccoc": {
+      "name": "Cốc Cốc",
+      "keyword": "coccoc.com",
+      "favicon_url": "http://coccoc.com/favicon.ico",
+      "search_url": "http://coccoc.com/search#query={searchTerms}",
+      "type": "SEARCH_ENGINE_COCCOC",
+      "id": 91
+    },
+
     "daum": {
       "name": "Daum",
       "keyword": "daum.net",
@@ -119,6 +95,16 @@
       "id": 68
     },
 
+    "duckduckgo": {
+      "name": "DuckDuckGo",
+      "keyword": "duckduckgo.com",
+      "favicon_url": "https://duckduckgo.com/favicon.ico",
+      "search_url": "https://duckduckgo.com/?q={searchTerms}",
+      "suggest_url": "https://duckduckgo.com/ac/?q={searchTerms}&type=list",
+      "type": "SEARCH_ENGINE_DUCKDUCKGO",
+      "id": 92
+    },
+
     "google": {
       "name": "Google",
       "keyword": "google.com",
@@ -140,15 +126,6 @@
       "id": 1
     },
 
-    "kvasir": {
-      "name": "Kvasir",
-      "keyword": "kvasir.no",
-      "favicon_url": "https://kvasir.no/grafikk/favicon.ico",
-      "search_url": "https://kvasir.no/alle?q={searchTerms}",
-      "type": "SEARCH_ENGINE_KVASIR",
-      "id": 73
-    },
-
     "mail_ru": {
       "name": "@MAIL.RU",
       "keyword": "mail.ru",
@@ -163,15 +140,6 @@
       "id": 83
     },
 
-    "najdi": {
-      "name": "Najdi.si",
-      "keyword": "najdi.si",
-      "favicon_url": "https://www.najdi.si/assets/PROD-1.5.16/ctx/images/favicon.ico",
-      "search_url": "https://www.najdi.si/search.jsp?q={searchTerms}",
-      "type": "SEARCH_ENGINE_NAJDI",
-      "id": 87
-    },
-
     "naver": {
       "name": "\ub124\uc774\ubc84",
       "keyword": "naver.com",
@@ -182,13 +150,23 @@
       "id": 67
     },
 
-    "onet": {
-      "name": "Onet.pl",
-      "keyword": "onet.pl",
-      "favicon_url": "https://szukaj.onet.pl/favicon.ico",
-      "search_url": "https://szukaj.onet.pl/wyniki.html?qt={searchTerms}",
-      "type": "SEARCH_ENGINE_ONET",
-      "id": 75
+    "parsijoo": {
+      "name": "پارسی جو",
+      "keyword": "parsijoo.ir",
+      "favicon_url": "http://cdn.parsijoo.ir/content3/images/1.0/favicon.ico",
+      "search_url": "http://parsijoo.ir/web?q={searchTerms}",
+      "type": "SEARCH_ENGINE_PARSIJOO",
+      "id": 93
+    },
+
+    "qwant": {
+      "name": "Qwant",
+      "keyword": "qwant.com",
+      "favicon_url": "https://www.qwant.com/favicon.ico",
+      "search_url": "https://www.qwant.com/?q={searchTerms}&client=opensearch",
+      "suggest_url": "https://api.qwant.com/api/suggest/?q={searchTerms}&client=opensearch",
+      "type": "SEARCH_ENGINE_QWANT",
+      "id": 94
     },
 
     "seznam": {
@@ -228,25 +206,6 @@
       "id": 56
     },
 
-    "vinden": {
-      "name": "Vinden.nl",
-      "keyword": "vinden.nl",
-      "favicon_url": "https://www.vinden.nl/favicon.ico",
-      "search_url": "https://www.vinden.nl/?q={searchTerms}",
-      "type": "SEARCH_ENGINE_VINDEN",
-      "id": 53
-    },
-
-    "virgilio": {
-      "name": "Virgilio",
-      "keyword": "virgilio.it",
-      "favicon_url": "http://ricerca.virgilio.it/common/favicon.ico",
-      "search_url": "http://ricerca.virgilio.it/ricerca?qs={searchTerms}",
-      "encoding": "ISO-8859-1",
-      "type": "SEARCH_ENGINE_VIRGILIO",
-      "id": 62
-    },
-
     "yahoo": {
       "name": "Yahoo!",
       "keyword": "yahoo.com",
@@ -385,17 +344,9 @@
       "search_url": "https://fr.search.yahoo.com/search{google:pathWildcard}?ei={inputEncoding}&fr=crmas&p={searchTerms}",
       "suggest_url": "https://fr.search.yahoo.com/sugg/chrome?output=fxjson&appid=crmas&command={searchTerms}",
       "type": "SEARCH_ENGINE_YAHOO",
-      "id": 5  // Can't be 2 as this has to appear in the Belgium list alongside
-               // yahoo.
-    },
 
-    "yahoo_gr": {
-      "name": "Yahoo! \u0395\u03bb\u03bb\u03ac\u03b4\u03b1\u03c2",
-      "keyword": "gr.yahoo.com",
-      "favicon_url": "https://gr.search.yahoo.com/favicon.ico",
-      "search_url": "https://gr.search.yahoo.com/search{google:pathWildcard}?ei={inputEncoding}&fr=crmas&p={searchTerms}",
-      "type": "SEARCH_ENGINE_YAHOO",
-      "id": 2
+      // Can't be 2 as this has to appear in the Belgium list alongside yahoo.
+      "id": 5
     },
 
     "yahoo_hk": {
@@ -438,15 +389,6 @@
       "id": 2
     },
 
-    "yahoo_maktoob": {
-      "name": "Yahoo!\u200e \u0645\u0643\u062a\u0648\u0628",
-      "keyword": "maktoob.yahoo.com",
-      "favicon_url": "https://maktoob.search.yahoo.com/favicon.ico",
-      "search_url": "https://maktoob.search.yahoo.com/search{google:pathWildcard}?ei={inputEncoding}&fr=crmas&p={searchTerms}",
-      "type": "SEARCH_ENGINE_YAHOO",
-      "id": 2
-    },
-
     "yahoo_mx": {
       "name": "Yahoo! M\u00e9xico",
       "keyword": "mx.yahoo.com",
@@ -514,17 +456,9 @@
       "search_url": "https://qc.search.yahoo.com/search{google:pathWildcard}?ei={inputEncoding}&fr=crmas&p={searchTerms}",
       "suggest_url": "https://qc.search.yahoo.com/sugg/chrome?output=fxjson&appid=crmas&command={searchTerms}",
       "type": "SEARCH_ENGINE_YAHOO",
-      "id": 5  // Can't be 2 as this has to appear in the Canada list alongside
-               // yahoo_ca.
-    },
 
-    "yahoo_ro": {
-      "name": "Yahoo! Rom\u00e2nia",
-      "keyword": "ro.yahoo.com",
-      "favicon_url": "https://ro.search.yahoo.com/favicon.ico",
-      "search_url": "https://ro.search.yahoo.com/search{google:pathWildcard}?ei={inputEncoding}&fr=crmas&p={searchTerms}",
-      "type": "SEARCH_ENGINE_YAHOO",
-      "id": 2
+      // Can't be 2 as this has to appear in the Canada list alongside yahoo_ca.
+      "id": 5
     },
 
     "yahoo_se": {
@@ -619,6 +553,18 @@
       "id": 15
     },
 
+    "yandex_com": {
+      "name": "Yandex",
+      "keyword": "yandex.com",
+      "favicon_url": "https://yastatic.net/lego/_/rBTjd6UOPk5913OSn5ZQVYMTQWQ.ico",
+      "search_url": "https://yandex.com/search/?text={searchTerms}&from=os&clid=1836588",
+      "suggest_url": "https://suggest.yandex.com/suggest-ff.cgi?part={searchTerms}&uil=en&v=3&sn=5",
+      "image_url": "https://yandex.com/images/search?rpt=imageview",
+      "image_url_post_params": "upfile={google:imageThumbnail},original_width={google:imageOriginalWidth},original_height={google:imageOriginalHeight},prg=1",
+      "type": "SEARCH_ENGINE_YANDEX",
+      "id": 15
+    },
+
     "yandex_kz": {
       "name": "\u042f\u043d\u0434\u0435\u043a\u0441",
       "keyword": "yandex.kz",
diff --git a/components/search_engines/search_engine_type.h b/components/search_engines/search_engine_type.h
index c19dd0e..50b5cb8 100644
--- a/components/search_engines/search_engine_type.h
+++ b/components/search_engines/search_engine_type.h
@@ -14,7 +14,7 @@
 enum SearchEngineType {
   // Prepopulated engines.
   SEARCH_ENGINE_UNKNOWN = -1,
-  SEARCH_ENGINE_OTHER = 0,   // At the top in case of future list changes.
+  SEARCH_ENGINE_OTHER = 0,  // At the top in case of future list changes.
   SEARCH_ENGINE_AOL,
   SEARCH_ENGINE_ASK,
   SEARCH_ENGINE_ATLAS,
@@ -63,7 +63,12 @@
   SEARCH_ENGINE_YANDEX,
   SEARCH_ENGINE_ZOZNAM,
   SEARCH_ENGINE_360,
-  SEARCH_ENGINE_MAX          // Bounding value needed for UMA histogram macro.
+  SEARCH_ENGINE_COCCOC,
+  SEARCH_ENGINE_DUCKDUCKGO,
+  SEARCH_ENGINE_PARSIJOO,
+  SEARCH_ENGINE_QWANT,
+
+  SEARCH_ENGINE_MAX  // Bounding value needed for UMA histogram macro.
 };
 
 #endif  // COMPONENTS_SEARCH_ENGINES_SEARCH_ENGINE_TYPE_H_
diff --git a/components/search_engines/template_url_prepopulate_data.cc b/components/search_engines/template_url_prepopulate_data.cc
index ed0a1f9..f4dc42f 100644
--- a/components/search_engines/template_url_prepopulate_data.cc
+++ b/components/search_engines/template_url_prepopulate_data.cc
@@ -23,6 +23,7 @@
 // Helpers --------------------------------------------------------------------
 
 namespace {
+// clang-format off
 
 // NOTE: You should probably not change the data in this file without changing
 // |kCurrentDataVersion| in prepopulated_engines.json. See comments in
@@ -36,561 +37,566 @@
     &google, &bing, &yahoo,
 };
 
+// Note, the below entries are sorted by country code, not the name in comment.
+// Engine selection by country ------------------------------------------------
 // United Arab Emirates
 const PrepopulatedEngine* const engines_AE[] = {
-    &google, &yahoo_maktoob, &bing,
+    &google, &bing, &yahoo, &duckduckgo,
 };
 
 // Albania
 const PrepopulatedEngine* const engines_AL[] = {
-    &google, &yahoo, &bing,
+    &google, &yahoo, &bing, &ask,
 };
 
 // Argentina
 const PrepopulatedEngine* const engines_AR[] = {
-    &google, &bing, &yahoo_ar,
+    &google, &bing, &yahoo_ar, &duckduckgo,
 };
 
 // Austria
 const PrepopulatedEngine* const engines_AT[] = {
-    &google, &bing, &yahoo_at,
+    &google, &bing, &yahoo_at, &duckduckgo,
 };
 
 // Australia
 const PrepopulatedEngine* const engines_AU[] = {
-    &google, &bing, &yahoo_au,
+    &google, &bing, &yahoo_au, &duckduckgo,
 };
 
 // Bosnia and Herzegovina
 const PrepopulatedEngine* const engines_BA[] = {
-    &google, &yahoo, &bing,
+    &google, &yahoo, &bing, &ask,
 };
 
 // Belgium
 const PrepopulatedEngine* const engines_BE[] = {
-    &google, &bing, &yahoo, &yahoo_fr,
+    &google, &bing, &yahoo, &duckduckgo,
 };
 
 // Bulgaria
 const PrepopulatedEngine* const engines_BG[] = {
-    &google, &bing, &ask,
+    &google, &bing, &yahoo, &yandex_ru,
 };
 
 // Bahrain
 const PrepopulatedEngine* const engines_BH[] = {
-    &google, &yahoo_maktoob, &bing,
+    &google, &bing, &yahoo, &ask,
 };
 
 // Burundi
 const PrepopulatedEngine* const engines_BI[] = {
-    &google, &yahoo, &bing,
+    &google, &bing, &yahoo, &yandex_ru,
 };
 
 // Brunei
 const PrepopulatedEngine* const engines_BN[] = {
-    &google, &yahoo_my, &bing,
+    &google, &bing, &yahoo, &duckduckgo,
 };
 
 // Bolivia
 const PrepopulatedEngine* const engines_BO[] = {
-    &google, &bing, &yahoo,
+    &google, &bing, &yahoo, &duckduckgo,
 };
 
 // Brazil
 const PrepopulatedEngine* const engines_BR[] = {
-    &google, &ask_br, &bing, &yahoo_br,
+    &google, &bing, &yahoo_br, &duckduckgo,
 };
 
 // Belarus
 const PrepopulatedEngine* const engines_BY[] = {
-    &google, &yandex_by, &mail_ru,
+    &google, &yandex_by, &mail_ru, &bing,
 };
 
 // Belize
 const PrepopulatedEngine* const engines_BZ[] = {
-    &google, &yahoo, &bing,
+    &google, &bing, &yahoo, &duckduckgo,
 };
 
 // Canada
 const PrepopulatedEngine* const engines_CA[] = {
-    &google, &bing, &ask, &yahoo_ca, &yahoo_qc,
+    &google, &bing, &yahoo_ca, &yahoo_qc, &duckduckgo,
 };
 
 // Switzerland
 const PrepopulatedEngine* const engines_CH[] = {
-    &google, &bing, &yahoo_ch,
+    &google, &bing, &duckduckgo, &yahoo_ch,
 };
 
 // Chile
 const PrepopulatedEngine* const engines_CL[] = {
-    &google, &bing, &yahoo_cl,
+    &google, &bing, &yahoo_cl, &duckduckgo,
 };
 
 // China
 const PrepopulatedEngine* const engines_CN[] = {
-    &google, &baidu, &sogou, &so_360,
+    &baidu, &so_360, &google, &sogou, &bing,
 };
 
 // Colombia
 const PrepopulatedEngine* const engines_CO[] = {
-    &google, &bing, &yahoo_co,
+    &google, &yahoo_co, &bing, &duckduckgo,
 };
 
 // Costa Rica
 const PrepopulatedEngine* const engines_CR[] = {
-    &google, &yahoo, &bing,
+    &google, &bing, &yahoo, &duckduckgo,
 };
 
 // Czech Republic
 const PrepopulatedEngine* const engines_CZ[] = {
-    &google, &seznam, &bing,
+    &google, &seznam, &bing, &yahoo,
 };
 
 // Germany
 const PrepopulatedEngine* const engines_DE[] = {
-    &google, &bing, &yahoo_de,
+    &google, &bing, &yahoo_de, &duckduckgo,
 };
 
 // Denmark
 const PrepopulatedEngine* const engines_DK[] = {
-    &google, &bing, &yahoo_dk,
+    &google, &bing, &yahoo_dk, &duckduckgo,
 };
 
 // Dominican Republic
 const PrepopulatedEngine* const engines_DO[] = {
-    &google, &yahoo, &bing,
+    &google, &bing, &yahoo, &duckduckgo,
 };
 
 // Algeria
 const PrepopulatedEngine* const engines_DZ[] = {
-    &google, &bing, &yahoo_maktoob,
+    &google, &yahoo, &bing, &yandex_ru,
 };
 
 // Ecuador
 const PrepopulatedEngine* const engines_EC[] = {
-    &google, &bing, &yahoo,
+    &google, &bing, &yahoo, &duckduckgo,
 };
 
 // Estonia
 const PrepopulatedEngine* const engines_EE[] = {
-    &google, &bing, &yahoo,
+    &google, &bing, &yandex_ru, &neti,
 };
 
 // Egypt
 const PrepopulatedEngine* const engines_EG[] = {
-    &google, &yahoo_maktoob, &bing,
+    &google, &yahoo, &bing, &yandex_ru,
 };
 
 // Spain
 const PrepopulatedEngine* const engines_ES[] = {
-    &google, &bing, &yahoo_es,
-};
-
-// Faroe Islands
-const PrepopulatedEngine* const engines_FO[] = {
-    &google, &bing, &ask,
+    &google, &bing, &yahoo_es, &duckduckgo,
 };
 
 // Finland
 const PrepopulatedEngine* const engines_FI[] = {
-    &google, &bing, &yahoo_fi,
+    &google, &bing, &yahoo_fi, &duckduckgo,
+};
+
+// Faroe Islands
+const PrepopulatedEngine* const engines_FO[] = {
+    &google, &bing, &yahoo, &duckduckgo,
 };
 
 // France
 const PrepopulatedEngine* const engines_FR[] = {
-    &google, &bing, &yahoo_fr,
+    &google, &bing, &yahoo_fr, &qwant,
 };
 
 // United Kingdom
 const PrepopulatedEngine* const engines_GB[] = {
-    &google, &bing, &yahoo_uk, &ask_uk,
+    &google, &bing, &yahoo_uk, &duckduckgo,
 };
 
 // Greece
 const PrepopulatedEngine* const engines_GR[] = {
-    &google, &bing, &yahoo_gr,
+    &google, &bing, &yahoo, &duckduckgo,
 };
 
 // Guatemala
 const PrepopulatedEngine* const engines_GT[] = {
-    &google, &yahoo, &bing,
+    &google, &bing, &yahoo, &duckduckgo,
 };
 
 // Hong Kong
 const PrepopulatedEngine* const engines_HK[] = {
-    &google, &yahoo_hk, &baidu, &bing,
+    &google, &yahoo_hk, &bing, &baidu,
 };
 
 // Honduras
 const PrepopulatedEngine* const engines_HN[] = {
-    &google, &yahoo, &bing,
+    &google, &bing, &yahoo, &duckduckgo,
 };
 
 // Croatia
 const PrepopulatedEngine* const engines_HR[] = {
-    &google, &bing, &yahoo,
+    &google, &bing, &yahoo, &duckduckgo,
 };
 
 // Hungary
 const PrepopulatedEngine* const engines_HU[] = {
-    &google, &bing, &yahoo,
+    &google, &yahoo, &bing, &duckduckgo,
 };
 
 // Indonesia
 const PrepopulatedEngine* const engines_ID[] = {
-    &google, &yahoo_id, &bing,
+    &google, &yahoo_id, &bing, &duckduckgo,
 };
 
 // Ireland
 const PrepopulatedEngine* const engines_IE[] = {
-    &google, &bing, &yahoo_uk,
+    &google, &bing, &yahoo, &duckduckgo,
 };
 
 // Israel
 const PrepopulatedEngine* const engines_IL[] = {
-    &google, &yahoo, &bing,
+    &google, &bing, &yahoo, &yandex_ru,
 };
 
 // India
 const PrepopulatedEngine* const engines_IN[] = {
-    &google, &bing, &yahoo_in,
+    &google, &yahoo_in, &bing, &duckduckgo,
 };
 
 // Iraq
 const PrepopulatedEngine* const engines_IQ[] = {
-    &google, &yahoo_maktoob, &bing,
+    &google, &yahoo, &bing, &yandex_ru,
 };
 
 // Iran
 const PrepopulatedEngine* const engines_IR[] = {
-    &google, &yahoo, &bing,
+    &google, &bing, &yahoo, &parsijoo,
 };
 
 // Iceland
 const PrepopulatedEngine* const engines_IS[] = {
-    &google, &bing, &yahoo,
+    &google, &bing, &yahoo, &duckduckgo,
 };
 
 // Italy
 const PrepopulatedEngine* const engines_IT[] = {
-    &google, &virgilio, &bing,
+    &google, &bing, &yahoo, &duckduckgo,
 };
 
 // Jamaica
 const PrepopulatedEngine* const engines_JM[] = {
-    &google, &yahoo, &bing,
+    &google, &bing, &yahoo, &duckduckgo,
 };
 
 // Jordan
 const PrepopulatedEngine* const engines_JO[] = {
-    &google, &yahoo_maktoob, &bing,
+    &google, &yahoo, &bing, &yandex_ru,
 };
 
 // Japan
 const PrepopulatedEngine* const engines_JP[] = {
-    &google, &yahoo_jp, &bing,
+    &google, &yahoo_jp, &bing, &baidu,
 };
 
 // Kenya
 const PrepopulatedEngine* const engines_KE[] = {
-    &google, &yahoo, &bing,
-};
-
-// Kuwait
-const PrepopulatedEngine* const engines_KW[] = {
-    &google, &yahoo_maktoob, &bing,
+    &google, &yahoo, &bing, &duckduckgo,
 };
 
 // South Korea
 const PrepopulatedEngine* const engines_KR[] = {
-    &google, &naver, &daum,
+    &google, &naver, &daum, &bing,
+};
+
+// Kuwait
+const PrepopulatedEngine* const engines_KW[] = {
+    &google, &bing, &yahoo, &ask,
 };
 
 // Kazakhstan
 const PrepopulatedEngine* const engines_KZ[] = {
-    &google, &mail_ru, &yandex_kz,
+    &google, &yandex_kz, &mail_ru, &bing,
 };
 
 // Lebanon
 const PrepopulatedEngine* const engines_LB[] = {
-    &google, &yahoo_maktoob, &bing,
+    &google, &bing, &yahoo, &duckduckgo,
 };
 
 // Liechtenstein
 const PrepopulatedEngine* const engines_LI[] = {
-    &google, &bing, &yahoo_de,
+    &google, &bing, &duckduckgo, &yahoo,
 };
 
 // Lithuania
 const PrepopulatedEngine* const engines_LT[] = {
-    &google, &bing, &yandex_ru,
+    &google, &bing, &yahoo, &yandex_ru,
 };
 
 // Luxembourg
 const PrepopulatedEngine* const engines_LU[] = {
-    &google, &bing, &yahoo_fr,
+    &google, &bing, &duckduckgo, &yahoo,
 };
 
 // Latvia
 const PrepopulatedEngine* const engines_LV[] = {
-    &google, &yandex_ru, &bing,
+    &google, &bing, &yandex_ru, &yahoo,
 };
 
 // Libya
 const PrepopulatedEngine* const engines_LY[] = {
-    &google, &yahoo_maktoob, &bing,
+    &google, &yahoo, &bing, &yandex_com,
 };
 
 // Morocco
 const PrepopulatedEngine* const engines_MA[] = {
-    &google, &bing, &yahoo_maktoob,
+    &google, &yahoo, &bing, &yandex_ru,
 };
 
 // Monaco
 const PrepopulatedEngine* const engines_MC[] = {
-    &google, &yahoo_fr, &bing,
+    &google, &bing, &yahoo, &duckduckgo,
 };
 
 // Moldova
 const PrepopulatedEngine* const engines_MD[] = {
-    &google, &bing, &yahoo,
+    &google, &yandex_ru, &mail_ru, &duckduckgo,
 };
 
 // Montenegro
 const PrepopulatedEngine* const engines_ME[] = {
-    &google, &bing, &yahoo,
+    &google, &yahoo, &bing, &yandex_ru,
 };
 
 // Macedonia
 const PrepopulatedEngine* const engines_MK[] = {
-    &google, &yahoo, &bing,
+    &google, &yahoo, &bing, &duckduckgo,
 };
 
 // Mexico
 const PrepopulatedEngine* const engines_MX[] = {
-    &google, &bing, &yahoo_mx,
+    &google, &bing, &yahoo_mx, &duckduckgo,
 };
 
 // Malaysia
 const PrepopulatedEngine* const engines_MY[] = {
-    &google, &yahoo_my, &bing,
+    &google, &yahoo_my, &bing, &baidu,
 };
 
 // Nicaragua
 const PrepopulatedEngine* const engines_NI[] = {
-    &google, &yahoo, &bing,
+    &google, &bing, &yahoo, &duckduckgo,
 };
 
 // Netherlands
 const PrepopulatedEngine* const engines_NL[] = {
-    &google, &yahoo_nl, &vinden,
+    &google, &bing, &yahoo_nl, &duckduckgo,
 };
 
 // Norway
 const PrepopulatedEngine* const engines_NO[] = {
-    &google, &bing, &kvasir,
+    &google, &bing, &yahoo, &duckduckgo,
 };
 
 // New Zealand
 const PrepopulatedEngine* const engines_NZ[] = {
-    &google, &bing, &yahoo_nz,
+    &google, &bing, &duckduckgo, &yahoo_nz,
 };
 
 // Oman
 const PrepopulatedEngine* const engines_OM[] = {
-    &google, &bing, &yahoo_maktoob,
+    &google, &bing, &yahoo, &ask,
 };
 
 // Panama
 const PrepopulatedEngine* const engines_PA[] = {
-    &google, &yahoo, &bing,
+    &google, &bing, &yahoo, &duckduckgo,
 };
 
 // Peru
 const PrepopulatedEngine* const engines_PE[] = {
-    &google, &bing, &yahoo_pe,
+    &google, &yahoo_pe, &bing, &duckduckgo,
 };
 
 // Philippines
 const PrepopulatedEngine* const engines_PH[] = {
-    &google, &yahoo_ph, &bing,
+    &google, &yahoo_ph, &bing, &duckduckgo,
 };
 
 // Pakistan
 const PrepopulatedEngine* const engines_PK[] = {
-    &google, &yahoo, &bing,
-};
-
-// Puerto Rico
-const PrepopulatedEngine* const engines_PR[] = {
-    &google, &yahoo, &bing,
+    &google, &yahoo, &bing, &baidu,
 };
 
 // Poland
 const PrepopulatedEngine* const engines_PL[] = {
-    &google, &onet, &bing,
+    &google, &bing, &yahoo, &duckduckgo,
+};
+
+// Puerto Rico
+const PrepopulatedEngine* const engines_PR[] = {
+    &google, &bing, &yahoo, &duckduckgo,
 };
 
 // Portugal
 const PrepopulatedEngine* const engines_PT[] = {
-    &google, &bing, &yahoo,
+    &google, &bing, &yahoo, &duckduckgo,
 };
 
 // Paraguay
 const PrepopulatedEngine* const engines_PY[] = {
-    &google, &bing, &yahoo,
+    &google, &bing, &yahoo, &duckduckgo,
 };
 
 // Qatar
 const PrepopulatedEngine* const engines_QA[] = {
-    &google, &yahoo_maktoob, &bing,
+    &google, &bing, &yahoo, &ask,
 };
 
 // Romania
 const PrepopulatedEngine* const engines_RO[] = {
-    &google, &yahoo_ro, &bing,
+    &google, &bing, &yahoo, &duckduckgo,
 };
 
 // Serbia
 const PrepopulatedEngine* const engines_RS[] = {
-    &google, &bing, &yahoo,
+    &google, &yahoo, &bing, &duckduckgo,
 };
 
 // Russia
 const PrepopulatedEngine* const engines_RU[] = {
-    &google, &yandex_ru, &mail_ru,
+    &yandex_ru, &google, &mail_ru, &bing,
 };
 
 // Rwanda
 const PrepopulatedEngine* const engines_RW[] = {
-    &google, &bing, &yahoo,
+    &google, &bing, &yahoo, &yandex_ru,
 };
 
 // Saudi Arabia
 const PrepopulatedEngine* const engines_SA[] = {
-    &google, &yahoo_maktoob, &bing,
+    &google, &bing, &yahoo, &yandex_com,
 };
 
 // Sweden
 const PrepopulatedEngine* const engines_SE[] = {
-    &google, &bing, &yahoo_se,
+    &google, &bing, &yahoo_se, &duckduckgo,
 };
 
 // Singapore
 const PrepopulatedEngine* const engines_SG[] = {
-    &google, &yahoo_sg, &bing,
+    &google, &bing, &yahoo_sg, &yandex_com,
 };
 
 // Slovenia
 const PrepopulatedEngine* const engines_SI[] = {
-    &google, &najdi, &ask,
+    &google, &bing, &yahoo, &duckduckgo,
 };
 
 // Slovakia
 const PrepopulatedEngine* const engines_SK[] = {
-    &google, &bing, &yahoo,
+    &google, &bing, &yahoo, &duckduckgo,
 };
 
 // El Salvador
 const PrepopulatedEngine* const engines_SV[] = {
-    &google, &yahoo, &bing,
+    &google, &bing, &yahoo, &duckduckgo,
 };
 
 // Syria
 const PrepopulatedEngine* const engines_SY[] = {
-    &google, &bing, &yahoo_maktoob,
+    &google, &bing, &yahoo, &yandex_ru,
 };
 
 // Thailand
 const PrepopulatedEngine* const engines_TH[] = {
-    &google, &yahoo_th, &bing,
+    &google, &yahoo_th, &bing, &ask,
 };
 
 // Tunisia
 const PrepopulatedEngine* const engines_TN[] = {
-    &google, &bing, &yahoo_maktoob,
+    &google, &yahoo, &bing, &yandex_ru,
 };
 
 // Turkey
 const PrepopulatedEngine* const engines_TR[] = {
-    &google, &bing, &yahoo_tr, &yandex_tr,
+    &google, &yandex_tr, &yahoo_tr, &bing,
 };
 
 // Trinidad and Tobago
 const PrepopulatedEngine* const engines_TT[] = {
-    &google, &bing, &yahoo,
+    &google, &bing, &yahoo, &duckduckgo,
 };
 
 // Taiwan
 const PrepopulatedEngine* const engines_TW[] = {
-    &google, &yahoo_tw, &bing,
+    &google, &yahoo_tw, &bing, &baidu,
 };
 
 // Tanzania
 const PrepopulatedEngine* const engines_TZ[] = {
-    &google, &yahoo, &bing,
+    &google, &bing, &yahoo, &yandex_ru,
 };
 
 // Ukraine
 const PrepopulatedEngine* const engines_UA[] = {
-    &google, &yandex_ua, &bing,
+    &google, &yandex_ua, &mail_ru, &bing,
 };
 
 // United States
 const PrepopulatedEngine* const engines_US[] = {
-    &google, &bing, &yahoo, &aol, &ask,
+    &google, &bing, &yahoo, &duckduckgo,
 };
 
 // Uruguay
 const PrepopulatedEngine* const engines_UY[] = {
-    &google, &bing, &yahoo,
+    &google, &bing, &yahoo, &duckduckgo,
 };
 
 // Venezuela
 const PrepopulatedEngine* const engines_VE[] = {
-    &google, &bing, &yahoo_ve,
+    &google, &yahoo_ve, &bing, &duckduckgo,
 };
 
 // Vietnam
 const PrepopulatedEngine* const engines_VN[] = {
-    &google, &yahoo_vn, &bing,
+    &google, &coccoc, &bing, &yahoo_vn,
 };
 
 // Yemen
 const PrepopulatedEngine* const engines_YE[] = {
-    &google, &bing, &yahoo_maktoob,
+    &google, &bing, &yahoo, &baidu,
 };
 
 // South Africa
 const PrepopulatedEngine* const engines_ZA[] = {
-    &google, &bing, &yahoo,
+    &google, &bing, &yahoo, &duckduckgo,
 };
 
 // Zimbabwe
 const PrepopulatedEngine* const engines_ZW[] = {
-    &google, &bing, &yahoo, &ask,
+    &google, &bing, &yahoo, &baidu,
 };
+// ----------------------------------------------------------------------------
 
 // A list of all the engines that we know about.
 const PrepopulatedEngine* const kAllEngines[] = {
     // Prepopulated engines:
-    &aol, &ask, &ask_br, &ask_uk, &baidu, &bing, &daum, &google, &kvasir,
-    &mail_ru, &najdi, &naver, &onet, &seznam, &sogou, &vinden, &virgilio,
-    &yahoo, &yahoo_ar, &yahoo_at, &yahoo_au, &yahoo_br, &yahoo_ca, &yahoo_ch,
-    &yahoo_cl, &yahoo_co, &yahoo_de, &yahoo_dk, &yahoo_es, &yahoo_fi, &yahoo_fr,
-    &yahoo_gr, &yahoo_hk, &yahoo_id, &yahoo_in, &yahoo_jp, &yahoo_maktoob,
+    &ask, &baidu, &bing, &coccoc, &daum, &duckduckgo, &google, &mail_ru, &naver,
+    &parsijoo, &qwant, &seznam, &sogou, &yahoo, &yahoo_ar, &yahoo_at, &yahoo_au,
+    &yahoo_br, &yahoo_ca, &yahoo_ch, &yahoo_cl, &yahoo_co, &yahoo_de, &yahoo_dk,
+    &yahoo_es, &yahoo_fi, &yahoo_fr, &yahoo_hk, &yahoo_id, &yahoo_in, &yahoo_jp,
     &yahoo_mx, &yahoo_my, &yahoo_nl, &yahoo_nz, &yahoo_pe, &yahoo_ph, &yahoo_qc,
-    &yahoo_ro, &yahoo_se, &yahoo_sg, &yahoo_th, &yahoo_tr, &yahoo_tw, &yahoo_uk,
-    &yahoo_ve, &yahoo_vn, &yandex_by, &yandex_kz, &yandex_ru, &yandex_tr,
+    &yahoo_se, &yahoo_sg, &yahoo_th, &yahoo_tr, &yahoo_tw, &yahoo_uk, &yahoo_ve,
+    &yahoo_vn, &yandex_by, &yandex_com, &yandex_kz, &yandex_ru, &yandex_tr,
     &yandex_ua,
 
     // UMA-only engines:
     &atlas_cz, &atlas_sk, &avg, &babylon, &conduit, &delfi_lt, &delfi_lv,
     &delta, &funmoods, &goo, &imesh, &iminent, &in, &incredibar, &libero, &neti,
     &nigma, &ok, &rambler, &sapo, &search_results, &searchnu, &snapdo,
-    &softonic, &sweetim, &terra_ar, &terra_es, &tut, &walla, &wp, &zoznam,
+    &softonic, &sweetim, &sweetpacks, &terra_ar, &terra_es, &tut, &walla, &wp,
+    &zoznam,
 };
 
+// clang-format on
+
 std::vector<std::unique_ptr<TemplateURLData>> GetPrepopulationSetFromCountryID(
     int country_id) {
   const PrepopulatedEngine* const* engines;
diff --git a/components/search_engines/template_url_prepopulate_data_unittest.cc b/components/search_engines/template_url_prepopulate_data_unittest.cc
index b76e6a7..17d550d 100644
--- a/components/search_engines/template_url_prepopulate_data_unittest.cc
+++ b/components/search_engines/template_url_prepopulate_data_unittest.cc
@@ -397,11 +397,12 @@
 }  // namespace
 
 TEST_F(TemplateURLPrepopulateDataTest, HttpsUrls) {
-  // Preexisting search engines that don't use HTTPS URLs.
-  // Don't add new entries to this list!
+  // Search engines that don't use HTTPS URLs.
+  // Since Chrome and the Internet are trying to transition from HTTP to HTTPS,
+  // please get approval from a PM before entering new HTTP exceptions here.
   std::set<int> exceptions{
-      4,  6,  16, 17, 21, 27, 35, 36, 43, 44, 45, 50, 54, 55, 56, 60, 61,
-      62, 63, 64, 65, 66, 68, 70, 74, 75, 76, 77, 78, 79, 80, 81, 85, 90,
+      4,  6,  16, 17, 21, 27, 35, 36, 43, 44, 45, 50, 54, 55, 56, 60, 61, 62,
+      63, 64, 65, 66, 68, 70, 74, 75, 76, 77, 78, 79, 80, 81, 85, 90, 91, 93,
   };
   using PrepopulatedEngine = TemplateURLPrepopulateData::PrepopulatedEngine;
   const std::vector<const PrepopulatedEngine*> all_engines =
@@ -449,12 +450,13 @@
   EXPECT_EQ(index, size_t{0});
   EXPECT_EQ(urls[index]->prepopulate_id, kGoogleId);
 
-  // TODO(orinj): Google is not first in CN; confirm it is found at index > 0.
+  // Google is not first in CN; confirm it is found at index > 0.
   // If Google ever does reach top in China, this test will need to be adjusted:
   // check template_url_prepopulate_data.cc reference orders (engines_CN, etc.)
   // to find a suitable country and index.
   prefs_.SetInteger(country_codes::kCountryIDAtInstall, 'C' << 8 | 'N');
   urls = TemplateURLPrepopulateData::GetPrepopulatedEngines(&prefs_, &index);
-  EXPECT_EQ(index, size_t{0});
+  EXPECT_GT(index, size_t{0});
+  EXPECT_LT(index, urls.size());
   EXPECT_EQ(urls[index]->prepopulate_id, kGoogleId);
 }