Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(214)

Unified Diff: components/search_engines/template_url_prepopulate_data.cc

Issue 2347973002: Enable Chrome to tweak search engines for some locales (Closed)
Patch Set: comments Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/search_engines/template_url_prepopulate_data.cc
diff --git a/components/search_engines/template_url_prepopulate_data.cc b/components/search_engines/template_url_prepopulate_data.cc
index 076dcd62657d762db0fe83031310f29c73930105..5ed20a332f7deb4f8a36a049c1c983fa6df1f629 100644
--- a/components/search_engines/template_url_prepopulate_data.cc
+++ b/components/search_engines/template_url_prepopulate_data.cc
@@ -609,14 +609,20 @@ int GetCountryIDFromPrefs(PrefService* prefs) {
return prefs->GetInteger(prefs::kCountryIDAtInstall);
}
-void GetPrepopulationSetFromCountryID(PrefService* prefs,
+int CountryStringToCountryID(std::string country) {
+ if (country.length() != 2)
+ return kCountryIDUnknown;
+
+ return CountryCharsToCountryIDWithUpdate(country[0], country[1]);
+}
Peter Kasting 2016/09/19 21:06:23 I added this in https://codereview.chromium.org/23
Ian Wen 2016/09/20 04:48:03 Done.
+
+void GetPrepopulationSetFromCountryID(int country_id,
const PrepopulatedEngine*** engines,
size_t* num_engines) {
// NOTE: This function should ALWAYS set its outparams.
// If you add a new country make sure to update the unit test for coverage.
- switch (GetCountryIDFromPrefs(prefs)) {
-
+ switch (country_id) {
#define CHAR_A 'A'
#define CHAR_B 'B'
#define CHAR_C 'C'
@@ -967,6 +973,13 @@ void GetPrepopulationSetFromCountryID(PrefService* prefs,
}
}
+void GetPrepopulationSetFromPrefs(PrefService* prefs,
Peter Kasting 2016/09/19 21:06:23 Nit: You only call this helper once, and it's simp
Ian Wen 2016/09/20 04:48:03 Done.
+ const PrepopulatedEngine*** engines,
+ size_t* num_engines) {
+ GetPrepopulationSetFromCountryID(GetCountryIDFromPrefs(prefs), engines,
+ num_engines);
+}
+
std::unique_ptr<TemplateURLData> MakePrepopulatedTemplateURLData(
const base::string16& name,
const base::string16& keyword,
@@ -1104,6 +1117,30 @@ int GetDataVersion(PrefService* prefs) {
kCurrentDataVersion;
}
+std::vector<std::unique_ptr<TemplateURLData>> GetLocalPrepopulatedEngines(
Peter Kasting 2016/09/19 21:06:23 Nit: Function definition order should match .h dec
Ian Wen 2016/09/20 04:48:03 Done.
+ const std::string& locale,
+ PrefService* prefs,
+ bool* need_to_load) {
+ std::vector<std::unique_ptr<TemplateURLData>> t_urls;
+
+ int country_id = CountryStringToCountryID(locale);
+ DCHECK(country_id != kCountryIDUnknown);
Peter Kasting 2016/09/19 21:06:23 This DCHECK makes me nervous. Are you sure the ca
Ian Wen 2016/09/20 04:48:03 Done.
+
+ if (country_id == GetCountryIDFromPrefs(prefs)) {
+ *need_to_load = false;
+ return t_urls;
+ }
+ *need_to_load = true;
+
+ const PrepopulatedEngine** engines;
+ size_t num_engines;
+ GetPrepopulationSetFromCountryID(country_id, &engines, &num_engines);
Peter Kasting 2016/09/19 21:06:23 Nit: I suggest modifying GetPrepopulationSetFromCo
+ for (size_t i = 0; i != num_engines; ++i) {
+ t_urls.push_back(MakeTemplateURLDataFromPrepopulatedEngine(*engines[i]));
+ }
+ return t_urls;
+}
+
std::vector<std::unique_ptr<TemplateURLData>> GetPrepopulatedEngines(
PrefService* prefs,
size_t* default_search_provider_index) {
@@ -1117,7 +1154,7 @@ std::vector<std::unique_ptr<TemplateURLData>> GetPrepopulatedEngines(
const PrepopulatedEngine** engines;
size_t num_engines;
- GetPrepopulationSetFromCountryID(prefs, &engines, &num_engines);
+ GetPrepopulationSetFromPrefs(prefs, &engines, &num_engines);
for (size_t i = 0; i != num_engines; ++i) {
t_urls.push_back(MakeTemplateURLDataFromPrepopulatedEngine(*engines[i]));
}

Powered by Google App Engine
This is Rietveld 408576698