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

Unified Diff: components/search_engines/template_url_prepopulate_data.cc

Issue 1130183004: [iOS] Expose TemplateURLPrepopulateData::GetCurrentCountryID() (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address second round of comments Created 5 years, 7 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 e66a22f4cc76dd3791e07b34c0ac3660ee48989f..1f93c947e7a405919782f147ace2632de94c0730 100644
--- a/components/search_engines/template_url_prepopulate_data.cc
+++ b/components/search_engines/template_url_prepopulate_data.cc
@@ -536,128 +536,6 @@ int CountryCharsToCountryIDWithUpdate(char c1, char c2) {
return CountryCharsToCountryID(c1, c2);
}
-#if defined(OS_WIN)
-
-// For reference, a list of GeoIDs can be found at
-// http://msdn.microsoft.com/en-us/library/dd374073.aspx .
-int GeoIDToCountryID(GEOID geo_id) {
- const int kISOBufferSize = 3; // Two plus one for the terminator.
- wchar_t isobuf[kISOBufferSize] = { 0 };
- int retval = GetGeoInfo(geo_id, GEO_ISO2, isobuf, kISOBufferSize, 0);
-
- if (retval == kISOBufferSize &&
- !(isobuf[0] == L'X' && isobuf[1] == L'X'))
- return CountryCharsToCountryIDWithUpdate(static_cast<char>(isobuf[0]),
- static_cast<char>(isobuf[1]));
-
- // Various locations have ISO codes that Windows does not return.
- switch (geo_id) {
- case 0x144: // Guernsey
- return CountryCharsToCountryID('G', 'G');
- case 0x148: // Jersey
- return CountryCharsToCountryID('J', 'E');
- case 0x3B16: // Isle of Man
- return CountryCharsToCountryID('I', 'M');
-
- // 'UM' (U.S. Minor Outlying Islands)
- case 0x7F: // Johnston Atoll
- case 0x102: // Wake Island
- case 0x131: // Baker Island
- case 0x146: // Howland Island
- case 0x147: // Jarvis Island
- case 0x149: // Kingman Reef
- case 0x152: // Palmyra Atoll
- case 0x52FA: // Midway Islands
- return CountryCharsToCountryID('U', 'M');
-
- // 'SH' (Saint Helena)
- case 0x12F: // Ascension Island
- case 0x15C: // Tristan da Cunha
- return CountryCharsToCountryID('S', 'H');
-
- // 'IO' (British Indian Ocean Territory)
- case 0x13A: // Diego Garcia
- return CountryCharsToCountryID('I', 'O');
-
- // Other cases where there is no ISO country code; we assign countries that
- // can serve as reasonable defaults.
- case 0x154: // Rota Island
- case 0x155: // Saipan
- case 0x15A: // Tinian Island
- return CountryCharsToCountryID('U', 'S');
- case 0x134: // Channel Islands
- return CountryCharsToCountryID('G', 'B');
- case 0x143: // Guantanamo Bay
- default:
- return kCountryIDUnknown;
- }
-}
-
-int GetCurrentCountryID() {
- GEOID geo_id = GetUserGeoID(GEOCLASS_NATION);
-
- return GeoIDToCountryID(geo_id);
-}
-
-#elif defined(OS_MACOSX)
-
-int GetCurrentCountryID() {
- base::ScopedCFTypeRef<CFLocaleRef> locale(CFLocaleCopyCurrent());
- CFStringRef country = (CFStringRef)CFLocaleGetValue(locale.get(),
- kCFLocaleCountryCode);
- if (!country)
- return kCountryIDUnknown;
-
- UniChar isobuf[2];
- CFRange char_range = CFRangeMake(0, 2);
- CFStringGetCharacters(country, char_range, isobuf);
-
- return CountryCharsToCountryIDWithUpdate(static_cast<char>(isobuf[0]),
- static_cast<char>(isobuf[1]));
-}
-
-#elif defined(OS_ANDROID)
-
-int GetCurrentCountryID() {
- const std::string& country_code = base::android::GetDefaultCountryCode();
- return (country_code.size() == 2) ?
- CountryCharsToCountryIDWithUpdate(country_code[0], country_code[1]) :
- kCountryIDUnknown;
-}
-
-#elif defined(OS_POSIX)
-
-int GetCurrentCountryID() {
- const char* locale = setlocale(LC_MESSAGES, NULL);
-
- if (!locale)
- return kCountryIDUnknown;
-
- // The format of a locale name is:
- // language[_territory][.codeset][@modifier], where territory is an ISO 3166
- // country code, which is what we want.
- std::string locale_str(locale);
- size_t begin = locale_str.find('_');
- if (begin == std::string::npos || locale_str.size() - begin < 3)
- return kCountryIDUnknown;
-
- ++begin;
- size_t end = locale_str.find_first_of(".@", begin);
- if (end == std::string::npos)
- end = locale_str.size();
-
- // The territory part must contain exactly two characters.
- if (end - begin == 2) {
- return CountryCharsToCountryIDWithUpdate(
- base::ToUpperASCII(locale_str[begin]),
- base::ToUpperASCII(locale_str[begin + 1]));
- }
-
- return kCountryIDUnknown;
-}
-
-#endif // OS_*
-
int GetCountryIDFromPrefs(PrefService* prefs) {
if (!prefs)
return GetCurrentCountryID();
@@ -1180,6 +1058,131 @@ bool SameDomain(const GURL& given_url, const GURL& prepopulated_url) {
} // namespace
+#if defined(OS_WIN)
+
+namespace {
+
+// For reference, a list of GeoIDs can be found at
+// http://msdn.microsoft.com/en-us/library/dd374073.aspx .
+int GeoIDToCountryID(GEOID geo_id) {
Peter Kasting 2015/05/18 18:31:34 Nit: Leave this function (still #if'd) where it us
sdefresne 2015/05/19 09:04:22 Done.
+ const int kISOBufferSize = 3; // Two plus one for the terminator.
+ wchar_t isobuf[kISOBufferSize] = { 0 };
+ int retval = GetGeoInfo(geo_id, GEO_ISO2, isobuf, kISOBufferSize, 0);
+
+ if (retval == kISOBufferSize &&
+ !(isobuf[0] == L'X' && isobuf[1] == L'X'))
+ return CountryCharsToCountryIDWithUpdate(static_cast<char>(isobuf[0]),
+ static_cast<char>(isobuf[1]));
+
+ // Various locations have ISO codes that Windows does not return.
+ switch (geo_id) {
+ case 0x144: // Guernsey
+ return CountryCharsToCountryID('G', 'G');
+ case 0x148: // Jersey
+ return CountryCharsToCountryID('J', 'E');
+ case 0x3B16: // Isle of Man
+ return CountryCharsToCountryID('I', 'M');
+
+ // 'UM' (U.S. Minor Outlying Islands)
+ case 0x7F: // Johnston Atoll
+ case 0x102: // Wake Island
+ case 0x131: // Baker Island
+ case 0x146: // Howland Island
+ case 0x147: // Jarvis Island
+ case 0x149: // Kingman Reef
+ case 0x152: // Palmyra Atoll
+ case 0x52FA: // Midway Islands
+ return CountryCharsToCountryID('U', 'M');
+
+ // 'SH' (Saint Helena)
+ case 0x12F: // Ascension Island
+ case 0x15C: // Tristan da Cunha
+ return CountryCharsToCountryID('S', 'H');
+
+ // 'IO' (British Indian Ocean Territory)
+ case 0x13A: // Diego Garcia
+ return CountryCharsToCountryID('I', 'O');
+
+ // Other cases where there is no ISO country code; we assign countries that
+ // can serve as reasonable defaults.
+ case 0x154: // Rota Island
+ case 0x155: // Saipan
+ case 0x15A: // Tinian Island
+ return CountryCharsToCountryID('U', 'S');
+ case 0x134: // Channel Islands
+ return CountryCharsToCountryID('G', 'B');
+ case 0x143: // Guantanamo Bay
+ default:
+ return kCountryIDUnknown;
+ }
+}
+
+} // namespace
+
+int GetCurrentCountryID() {
+ GEOID geo_id = GetUserGeoID(GEOCLASS_NATION);
+
+ return GeoIDToCountryID(geo_id);
+}
+
+#elif defined(OS_MACOSX)
+
+int GetCurrentCountryID() {
+ base::ScopedCFTypeRef<CFLocaleRef> locale(CFLocaleCopyCurrent());
+ CFStringRef country = (CFStringRef)CFLocaleGetValue(locale.get(),
+ kCFLocaleCountryCode);
+ if (!country)
+ return kCountryIDUnknown;
+
+ UniChar isobuf[2];
+ CFRange char_range = CFRangeMake(0, 2);
+ CFStringGetCharacters(country, char_range, isobuf);
+
+ return CountryCharsToCountryIDWithUpdate(static_cast<char>(isobuf[0]),
+ static_cast<char>(isobuf[1]));
+}
+
+#elif defined(OS_ANDROID)
+
+int GetCurrentCountryID() {
+ const std::string& country_code = base::android::GetDefaultCountryCode();
+ return (country_code.size() == 2) ?
+ CountryCharsToCountryIDWithUpdate(country_code[0], country_code[1]) :
+ kCountryIDUnknown;
+}
+
+#elif defined(OS_POSIX)
+
+int GetCurrentCountryID() {
+ const char* locale = setlocale(LC_MESSAGES, NULL);
+
+ if (!locale)
+ return kCountryIDUnknown;
+
+ // The format of a locale name is:
+ // language[_territory][.codeset][@modifier], where territory is an ISO 3166
+ // country code, which is what we want.
+ std::string locale_str(locale);
+ size_t begin = locale_str.find('_');
+ if (begin == std::string::npos || locale_str.size() - begin < 3)
+ return kCountryIDUnknown;
+
+ ++begin;
+ size_t end = locale_str.find_first_of(".@", begin);
+ if (end == std::string::npos)
+ end = locale_str.size();
+
+ // The territory part must contain exactly two characters.
+ if (end - begin == 2) {
+ return CountryCharsToCountryIDWithUpdate(
+ base::ToUpperASCII(locale_str[begin]),
+ base::ToUpperASCII(locale_str[begin + 1]));
+ }
+
+ return kCountryIDUnknown;
+}
+
+#endif // OS_*
// Global functions -----------------------------------------------------------

Powered by Google App Engine
This is Rietveld 408576698