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

Side by Side Diff: components/search_engines/template_url_prepopulate_data.cc

Issue 2497853002: Create TemplateUrlData to base::Dictionary utility functions (Closed)
Patch Set: Fixed android compilation Created 4 years 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/search_engines/template_url_prepopulate_data.h" 5 #include "components/search_engines/template_url_prepopulate_data.h"
6 6
7 #if defined(OS_POSIX) && !defined(OS_MACOSX) 7 #if defined(OS_POSIX) && !defined(OS_MACOSX)
8 #include <locale.h> 8 #include <locale.h>
9 #endif 9 #endif
10 10
11 #include "base/logging.h" 11 #include "base/logging.h"
12 #include "base/macros.h" 12 #include "base/macros.h"
13 #include "base/strings/string16.h" 13 #include "base/strings/string16.h"
14 #include "base/strings/string_piece.h" 14 #include "base/strings/string_piece.h"
15 #include "base/strings/string_util.h" 15 #include "base/strings/string_util.h"
16 #include "base/strings/utf_string_conversions.h" 16 #include "base/strings/utf_string_conversions.h"
17 #include "build/build_config.h" 17 #include "build/build_config.h"
18 #include "components/google/core/browser/google_util.h" 18 #include "components/google/core/browser/google_util.h"
19 #include "components/pref_registry/pref_registry_syncable.h" 19 #include "components/pref_registry/pref_registry_syncable.h"
20 #include "components/prefs/pref_service.h" 20 #include "components/prefs/pref_service.h"
21 #include "components/search_engines/prepopulated_engines.h" 21 #include "components/search_engines/prepopulated_engines.h"
22 #include "components/search_engines/search_engines_pref_names.h" 22 #include "components/search_engines/search_engines_pref_names.h"
23 #include "components/search_engines/template_url_data.h" 23 #include "components/search_engines/template_url_data.h"
24 #include "components/search_engines/template_url_data_util.h"
24 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" 25 #include "net/base/registry_controlled_domains/registry_controlled_domain.h"
25 #include "url/gurl.h" 26 #include "url/gurl.h"
26 27
27 #if defined(OS_WIN) 28 #if defined(OS_WIN)
28 #undef IN // On Windows, windef.h defines this, which screws up "India" cases. 29 #undef IN // On Windows, windef.h defines this, which screws up "India" cases.
29 #elif defined(OS_MACOSX) 30 #elif defined(OS_MACOSX)
30 #include "base/mac/scoped_cftyperef.h" 31 #include "base/mac/scoped_cftyperef.h"
31 #endif 32 #endif
32 33
33 #if defined(OS_ANDROID) 34 #if defined(OS_ANDROID)
(...skipping 931 matching lines...) Expand 10 before | Expand all | Expand 10 after
965 UNHANDLED_COUNTRY(V, U) // Vanuatu 966 UNHANDLED_COUNTRY(V, U) // Vanuatu
966 UNHANDLED_COUNTRY(W, S) // Samoa 967 UNHANDLED_COUNTRY(W, S) // Samoa
967 UNHANDLED_COUNTRY(Z, M) // Zambia 968 UNHANDLED_COUNTRY(Z, M) // Zambia
968 case kCountryIDUnknown: 969 case kCountryIDUnknown:
969 default: // Unhandled location 970 default: // Unhandled location
970 END_UNHANDLED_COUNTRIES(def, ault) 971 END_UNHANDLED_COUNTRIES(def, ault)
971 } 972 }
972 973
973 std::vector<std::unique_ptr<TemplateURLData>> t_urls; 974 std::vector<std::unique_ptr<TemplateURLData>> t_urls;
974 for (size_t i = 0; i < num_engines; ++i) 975 for (size_t i = 0; i < num_engines; ++i)
975 t_urls.push_back(MakeTemplateURLDataFromPrepopulatedEngine(*engines[i])); 976 t_urls.push_back(TemplateURLDataFromPrepopulatedEngine(*engines[i]));
976 return t_urls; 977 return t_urls;
977 } 978 }
978 979
979 std::unique_ptr<TemplateURLData> MakePrepopulatedTemplateURLData(
980 const base::string16& name,
981 const base::string16& keyword,
982 const base::StringPiece& search_url,
983 const base::StringPiece& suggest_url,
984 const base::StringPiece& instant_url,
985 const base::StringPiece& image_url,
986 const base::StringPiece& new_tab_url,
987 const base::StringPiece& contextual_search_url,
988 const base::StringPiece& search_url_post_params,
989 const base::StringPiece& suggest_url_post_params,
990 const base::StringPiece& instant_url_post_params,
991 const base::StringPiece& image_url_post_params,
992 const base::StringPiece& favicon_url,
993 const base::StringPiece& encoding,
994 const base::ListValue& alternate_urls,
995 const base::StringPiece& search_terms_replacement_key,
996 int id) {
997 std::unique_ptr<TemplateURLData> data(new TemplateURLData);
998
999 data->SetShortName(name);
1000 data->SetKeyword(keyword);
1001 data->SetURL(search_url.as_string());
1002 data->suggestions_url = suggest_url.as_string();
1003 data->instant_url = instant_url.as_string();
1004 data->image_url = image_url.as_string();
1005 data->new_tab_url = new_tab_url.as_string();
1006 data->contextual_search_url = contextual_search_url.as_string();
1007 data->search_url_post_params = search_url_post_params.as_string();
1008 data->suggestions_url_post_params = suggest_url_post_params.as_string();
1009 data->instant_url_post_params = instant_url_post_params.as_string();
1010 data->image_url_post_params = image_url_post_params.as_string();
1011 data->favicon_url = GURL(favicon_url);
1012 data->safe_for_autoreplace = true;
1013 data->input_encodings.push_back(encoding.as_string());
1014 data->date_created = base::Time();
1015 data->last_modified = base::Time();
1016 data->prepopulate_id = id;
1017 for (size_t i = 0; i < alternate_urls.GetSize(); ++i) {
1018 std::string alternate_url;
1019 alternate_urls.GetString(i, &alternate_url);
1020 DCHECK(!alternate_url.empty());
1021 data->alternate_urls.push_back(alternate_url);
1022 }
1023 data->search_terms_replacement_key = search_terms_replacement_key.as_string();
1024 return data;
1025 }
1026
1027 std::vector<std::unique_ptr<TemplateURLData>> GetPrepopulatedTemplateURLData( 980 std::vector<std::unique_ptr<TemplateURLData>> GetPrepopulatedTemplateURLData(
1028 PrefService* prefs) { 981 PrefService* prefs) {
1029 std::vector<std::unique_ptr<TemplateURLData>> t_urls; 982 std::vector<std::unique_ptr<TemplateURLData>> t_urls;
1030 if (!prefs) 983 if (!prefs)
1031 return t_urls; 984 return t_urls;
1032 985
1033 const base::ListValue* list = prefs->GetList(prefs::kSearchProviderOverrides); 986 const base::ListValue* list = prefs->GetList(prefs::kSearchProviderOverrides);
1034 if (!list) 987 if (!list)
1035 return t_urls; 988 return t_urls;
1036 989
1037 size_t num_engines = list->GetSize(); 990 size_t num_engines = list->GetSize();
1038 for (size_t i = 0; i != num_engines; ++i) { 991 for (size_t i = 0; i != num_engines; ++i) {
1039 const base::DictionaryValue* engine; 992 const base::DictionaryValue* engine;
1040 base::string16 name; 993 if (list->GetDictionary(i, &engine)) {
1041 base::string16 keyword; 994 auto t_url = TemplateURLDataFromOverrideDictionary(*engine);
1042 std::string search_url; 995 if (t_url)
1043 std::string favicon_url; 996 t_urls.push_back(std::move(t_url));
1044 std::string encoding;
1045 int id = -1;
1046 // The following fields are required for each search engine configuration.
1047 if (list->GetDictionary(i, &engine) &&
1048 engine->GetString("name", &name) && !name.empty() &&
1049 engine->GetString("keyword", &keyword) && !keyword.empty() &&
1050 engine->GetString("search_url", &search_url) && !search_url.empty() &&
1051 engine->GetString("favicon_url", &favicon_url) &&
1052 !favicon_url.empty() &&
1053 engine->GetString("encoding", &encoding) && !encoding.empty() &&
1054 engine->GetInteger("id", &id)) {
1055 // These fields are optional.
1056 std::string suggest_url;
1057 std::string instant_url;
1058 std::string image_url;
1059 std::string new_tab_url;
1060 std::string contextual_search_url;
1061 std::string search_url_post_params;
1062 std::string suggest_url_post_params;
1063 std::string instant_url_post_params;
1064 std::string image_url_post_params;
1065 base::ListValue empty_list;
1066 const base::ListValue* alternate_urls = &empty_list;
1067 std::string search_terms_replacement_key;
1068 engine->GetString("suggest_url", &suggest_url);
1069 engine->GetString("instant_url", &instant_url);
1070 engine->GetString("image_url", &image_url);
1071 engine->GetString("new_tab_url", &new_tab_url);
1072 engine->GetString("contextual_search_url", &contextual_search_url);
1073 engine->GetString("search_url_post_params", &search_url_post_params);
1074 engine->GetString("suggest_url_post_params", &suggest_url_post_params);
1075 engine->GetString("instant_url_post_params", &instant_url_post_params);
1076 engine->GetString("image_url_post_params", &image_url_post_params);
1077 engine->GetList("alternate_urls", &alternate_urls);
1078 engine->GetString("search_terms_replacement_key",
1079 &search_terms_replacement_key);
1080 t_urls.push_back(MakePrepopulatedTemplateURLData(
1081 name, keyword, search_url, suggest_url, instant_url, image_url,
1082 new_tab_url, contextual_search_url, search_url_post_params,
1083 suggest_url_post_params, instant_url_post_params,
1084 image_url_post_params, favicon_url, encoding, *alternate_urls,
1085 search_terms_replacement_key, id));
1086 } 997 }
1087 } 998 }
1088 return t_urls; 999 return t_urls;
1089 } 1000 }
1090 1001
1091 bool SameDomain(const GURL& given_url, const GURL& prepopulated_url) { 1002 bool SameDomain(const GURL& given_url, const GURL& prepopulated_url) {
1092 return prepopulated_url.is_valid() && 1003 return prepopulated_url.is_valid() &&
1093 net::registry_controlled_domains::SameDomainOrHost( 1004 net::registry_controlled_domains::SameDomainOrHost(
1094 given_url, prepopulated_url, 1005 given_url, prepopulated_url,
1095 net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES); 1006 net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES);
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
1138 1049
1139 return GetPrepopulationSetFromCountryID(country_id); 1050 return GetPrepopulationSetFromCountryID(country_id);
1140 } 1051 }
1141 #endif 1052 #endif
1142 1053
1143 std::vector<const PrepopulatedEngine*> GetAllPrepopulatedEngines() { 1054 std::vector<const PrepopulatedEngine*> GetAllPrepopulatedEngines() {
1144 return std::vector<const PrepopulatedEngine*>(std::begin(kAllEngines), 1055 return std::vector<const PrepopulatedEngine*>(std::begin(kAllEngines),
1145 std::end(kAllEngines)); 1056 std::end(kAllEngines));
1146 } 1057 }
1147 1058
1148 std::unique_ptr<TemplateURLData> MakeTemplateURLDataFromPrepopulatedEngine(
1149 const PrepopulatedEngine& engine) {
1150 base::ListValue alternate_urls;
1151 if (engine.alternate_urls) {
1152 for (size_t i = 0; i < engine.alternate_urls_size; ++i)
1153 alternate_urls.AppendString(std::string(engine.alternate_urls[i]));
1154 }
1155
1156 return MakePrepopulatedTemplateURLData(
1157 base::WideToUTF16(engine.name), base::WideToUTF16(engine.keyword),
1158 engine.search_url, engine.suggest_url, engine.instant_url,
1159 engine.image_url, engine.new_tab_url, engine.contextual_search_url,
1160 engine.search_url_post_params, engine.suggest_url_post_params,
1161 engine.instant_url_post_params, engine.image_url_post_params,
1162 engine.favicon_url, engine.encoding, alternate_urls,
1163 engine.search_terms_replacement_key, engine.id);
1164 }
1165
1166 void ClearPrepopulatedEnginesInPrefs(PrefService* prefs) { 1059 void ClearPrepopulatedEnginesInPrefs(PrefService* prefs) {
1167 if (!prefs) 1060 if (!prefs)
1168 return; 1061 return;
1169 1062
1170 prefs->ClearPref(prefs::kSearchProviderOverrides); 1063 prefs->ClearPref(prefs::kSearchProviderOverrides);
1171 prefs->ClearPref(prefs::kSearchProviderOverridesVersion); 1064 prefs->ClearPref(prefs::kSearchProviderOverridesVersion);
1172 } 1065 }
1173 1066
1174 std::unique_ptr<TemplateURLData> GetPrepopulatedDefaultSearch( 1067 std::unique_ptr<TemplateURLData> GetPrepopulatedDefaultSearch(
1175 PrefService* prefs) { 1068 PrefService* prefs) {
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
1261 locale_str.erase(0, territory_delim + 1); 1154 locale_str.erase(0, territory_delim + 1);
1262 1155
1263 // Next remove any codeset/modifier portion and uppercase. 1156 // Next remove any codeset/modifier portion and uppercase.
1264 return CountryStringToCountryID( 1157 return CountryStringToCountryID(
1265 base::ToUpperASCII(locale_str.substr(0, locale_str.find_first_of(".@")))); 1158 base::ToUpperASCII(locale_str.substr(0, locale_str.find_first_of(".@"))));
1266 } 1159 }
1267 1160
1268 #endif // OS_* 1161 #endif // OS_*
1269 1162
1270 } // namespace TemplateURLPrepopulateData 1163 } // namespace TemplateURLPrepopulateData
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698