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

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

Issue 2349213004: Clean up some code in template_url_prepopuplate_data.cc. (Closed)
Patch Set: Oops 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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
(...skipping 518 matching lines...) Expand 10 before | Expand all | Expand 10 after
529 } 529 }
530 530
531 // SPECIAL CASE: Timor-Leste changed from 'TP' to 'TL' in 2002. Windows XP 531 // SPECIAL CASE: Timor-Leste changed from 'TP' to 'TL' in 2002. Windows XP
532 // predates this; we therefore map this value. 532 // predates this; we therefore map this value.
533 if (c1 == 'T' && c2 == 'P') 533 if (c1 == 'T' && c2 == 'P')
534 c2 = 'L'; 534 c2 = 'L';
535 535
536 return CountryCharsToCountryID(c1, c2); 536 return CountryCharsToCountryID(c1, c2);
537 } 537 }
538 538
539 int CountryStringToCountryID(const std::string& country) {
540 return (country.length() == 2)
541 ? CountryCharsToCountryIDWithUpdate(country[0], country[1])
542 : kCountryIDUnknown;
543 }
544
539 #if defined(OS_WIN) 545 #if defined(OS_WIN)
540 546
541 // For reference, a list of GeoIDs can be found at 547 // For reference, a list of GeoIDs can be found at
542 // http://msdn.microsoft.com/en-us/library/dd374073.aspx . 548 // http://msdn.microsoft.com/en-us/library/dd374073.aspx .
543 int GeoIDToCountryID(GEOID geo_id) { 549 int GeoIDToCountryID(GEOID geo_id) {
544 const int kISOBufferSize = 3; // Two plus one for the terminator. 550 const int kISOBufferSize = 3; // Two plus one for the terminator.
545 wchar_t isobuf[kISOBufferSize] = { 0 }; 551 wchar_t isobuf[kISOBufferSize] = { 0 };
546 int retval = GetGeoInfo(geo_id, GEO_ISO2, isobuf, kISOBufferSize, 0); 552 int retval = GetGeoInfo(geo_id, GEO_ISO2, isobuf, kISOBufferSize, 0);
547 553
548 if (retval == kISOBufferSize && 554 if (retval == kISOBufferSize &&
(...skipping 644 matching lines...) Expand 10 before | Expand all | Expand 10 after
1193 return kAllEngines[i]->type; 1199 return kAllEngines[i]->type;
1194 } 1200 }
1195 } 1201 }
1196 1202
1197 return SEARCH_ENGINE_OTHER; 1203 return SEARCH_ENGINE_OTHER;
1198 } 1204 }
1199 1205
1200 #if defined(OS_WIN) 1206 #if defined(OS_WIN)
1201 1207
1202 int GetCurrentCountryID() { 1208 int GetCurrentCountryID() {
1203 GEOID geo_id = GetUserGeoID(GEOCLASS_NATION); 1209 return GeoIDToCountryID(GetUserGeoID(GEOCLASS_NATION));
1204
1205 return GeoIDToCountryID(geo_id);
1206 } 1210 }
1207 1211
1208 #elif defined(OS_MACOSX) 1212 #elif defined(OS_MACOSX)
1209 1213
1210 int GetCurrentCountryID() { 1214 int GetCurrentCountryID() {
1211 base::ScopedCFTypeRef<CFLocaleRef> locale(CFLocaleCopyCurrent()); 1215 base::ScopedCFTypeRef<CFLocaleRef> locale(CFLocaleCopyCurrent());
1212 CFStringRef country = (CFStringRef)CFLocaleGetValue(locale.get(), 1216 CFStringRef country = (CFStringRef)CFLocaleGetValue(locale.get(),
1213 kCFLocaleCountryCode); 1217 kCFLocaleCountryCode);
1214 if (!country) 1218 if (!country)
1215 return kCountryIDUnknown; 1219 return kCountryIDUnknown;
1216 1220
1217 UniChar isobuf[2]; 1221 UniChar isobuf[2];
1218 CFRange char_range = CFRangeMake(0, 2); 1222 CFRange char_range = CFRangeMake(0, 2);
1219 CFStringGetCharacters(country, char_range, isobuf); 1223 CFStringGetCharacters(country, char_range, isobuf);
1220 1224
1221 return CountryCharsToCountryIDWithUpdate(static_cast<char>(isobuf[0]), 1225 return CountryCharsToCountryIDWithUpdate(static_cast<char>(isobuf[0]),
1222 static_cast<char>(isobuf[1])); 1226 static_cast<char>(isobuf[1]));
1223 } 1227 }
1224 1228
1225 #elif defined(OS_ANDROID) 1229 #elif defined(OS_ANDROID)
1226 1230
1227 int GetCurrentCountryID() { 1231 int GetCurrentCountryID() {
1228 const std::string& country_code = base::android::GetDefaultCountryCode(); 1232 return CountryStringToCountryID(base::android::GetDefaultCountryCode());
1229 return (country_code.size() == 2) ?
1230 CountryCharsToCountryIDWithUpdate(country_code[0], country_code[1]) :
1231 kCountryIDUnknown;
1232 } 1233 }
1233 1234
1234 #elif defined(OS_POSIX) 1235 #elif defined(OS_POSIX)
1235 1236
1236 int GetCurrentCountryID() { 1237 int GetCurrentCountryID() {
1237 const char* locale = setlocale(LC_MESSAGES, NULL); 1238 const char* locale = setlocale(LC_MESSAGES, NULL);
1238
1239 if (!locale) 1239 if (!locale)
1240 return kCountryIDUnknown; 1240 return kCountryIDUnknown;
1241 1241
1242 // The format of a locale name is: 1242 // The format of a locale name is:
1243 // language[_territory][.codeset][@modifier], where territory is an ISO 3166 1243 // language[_territory][.codeset][@modifier], where territory is an ISO 3166
1244 // country code, which is what we want. 1244 // country code, which is what we want.
1245
1246 // First remove the language portion.
1245 std::string locale_str(locale); 1247 std::string locale_str(locale);
1246 size_t begin = locale_str.find('_'); 1248 size_t territory_delim = locale_str.find('_');
1247 if (begin == std::string::npos || locale_str.size() - begin < 3) 1249 if (territory_delim == std::string::npos)
1248 return kCountryIDUnknown; 1250 return kCountryIDUnknown;
1251 locale_str.erase(0, territory_delim + 1);
1249 1252
1250 ++begin; 1253 // Next remove any codeset/modifier portion and uppercase.
1251 size_t end = locale_str.find_first_of(".@", begin); 1254 return CountryStringToCountryID(
1252 if (end == std::string::npos) 1255 base::ToUpperASCII(locale_str.substr(0, locale_str.find_first_of(".@"))));
1253 end = locale_str.size();
1254
1255 // The territory part must contain exactly two characters.
1256 if (end - begin == 2) {
1257 return CountryCharsToCountryIDWithUpdate(
1258 base::ToUpperASCII(locale_str[begin]),
1259 base::ToUpperASCII(locale_str[begin + 1]));
1260 }
1261
1262 return kCountryIDUnknown;
1263 } 1256 }
1264 1257
1265 #endif // OS_* 1258 #endif // OS_*
1266 1259
1267 } // namespace TemplateURLPrepopulateData 1260 } // namespace TemplateURLPrepopulateData
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698