Index: third_party/WebKit/Source/platform/text/LocaleWin.cpp |
diff --git a/third_party/WebKit/Source/platform/text/LocaleWin.cpp b/third_party/WebKit/Source/platform/text/LocaleWin.cpp |
index 121ca52e1bc77b8da13e8f2cada0f6896478789f..8c400713886a02cce4fa30ddafd7b941909b2a35 100644 |
--- a/third_party/WebKit/Source/platform/text/LocaleWin.cpp |
+++ b/third_party/WebKit/Source/platform/text/LocaleWin.cpp |
@@ -46,9 +46,6 @@ |
namespace blink { |
-typedef LCID (WINAPI* LocaleNameToLCIDPtr)(LPCWSTR, DWORD); |
-typedef HashMap<String, LCID> NameToLCIDMap; |
- |
static String extractLanguageCode(const String& locale) |
{ |
size_t dashPosition = locale.find('-'); |
@@ -57,90 +54,25 @@ static String extractLanguageCode(const String& locale) |
return locale.left(dashPosition); |
} |
-static String removeLastComponent(const String& name) |
-{ |
- size_t lastSeparator = name.reverseFind('-'); |
- if (lastSeparator == kNotFound) |
- return emptyString(); |
- return name.left(lastSeparator); |
-} |
- |
-static void ensureNameToLCIDMap(NameToLCIDMap& map) |
-{ |
- if (!map.isEmpty()) |
- return; |
- // http://www.microsoft.com/resources/msdn/goglobal/default.mspx |
- // We add only locales used in layout tests for now. |
- map.add("ar", 0x0001); |
- map.add("ar-eg", 0x0C01); |
- map.add("de", 0x0007); |
- map.add("de-de", 0x0407); |
- map.add("el", 0x0008); |
- map.add("el-gr", 0x0408); |
- map.add("en", 0x0009); |
- map.add("en-gb", 0x0809); |
- map.add("en-us", 0x0409); |
- map.add("fr", 0x000C); |
- map.add("fr-fr", 0x040C); |
- map.add("he", 0x000D); |
- map.add("he-il", 0x040D); |
- map.add("hi", 0x0039); |
- map.add("hi-in", 0x0439); |
- map.add("ja", 0x0011); |
- map.add("ja-jp", 0x0411); |
- map.add("ko", 0x0012); |
- map.add("ko-kr", 0x0412); |
- map.add("ru", 0x0019); |
- map.add("ru-ru", 0x0419); |
- map.add("zh-cn", 0x0804); |
- map.add("zh-tw", 0x0404); |
-} |
- |
-// Fallback implementation of LocaleNameToLCID API. This is used for |
-// testing on Windows XP. |
-// FIXME: Remove this, ensureNameToLCIDMap, and removeLastComponent when we drop |
-// Windows XP support. |
-static LCID WINAPI convertLocaleNameToLCID(LPCWSTR name, DWORD) |
-{ |
- if (!name || !name[0]) |
- return LOCALE_USER_DEFAULT; |
- DEFINE_STATIC_LOCAL(NameToLCIDMap, map, ()); |
- ensureNameToLCIDMap(map); |
- String localeName = String(name).replace('_', '-'); |
- localeName = localeName.lower(); |
- do { |
- NameToLCIDMap::const_iterator iterator = map.find(localeName); |
- if (iterator != map.end()) |
- return iterator->value; |
- localeName = removeLastComponent(localeName); |
- } while (!localeName.isEmpty()); |
- return LOCALE_USER_DEFAULT; |
-} |
- |
-static LCID LCIDFromLocaleInternal(LCID userDefaultLCID, const String& userDefaultLanguageCode, LocaleNameToLCIDPtr localeNameToLCID, const String& locale) |
+static LCID LCIDFromLocaleInternal(LCID userDefaultLCID, const String& userDefaultLanguageCode, const String& locale) |
{ |
String localeLanguageCode = extractLanguageCode(locale); |
if (equalIgnoringCase(localeLanguageCode, userDefaultLanguageCode)) |
return userDefaultLCID; |
- return localeNameToLCID(locale.charactersWithNullTermination().data(), 0); |
+ return ::LocaleNameToLCID(locale.charactersWithNullTermination().data(), 0); |
} |
static LCID LCIDFromLocale(const String& locale, bool defaultsForLocale) |
{ |
- // LocaleNameToLCID() is available since Windows Vista. |
- LocaleNameToLCIDPtr localeNameToLCID = reinterpret_cast<LocaleNameToLCIDPtr>(::GetProcAddress(::GetModuleHandle(L"kernel32"), "LocaleNameToLCID")); |
- if (!localeNameToLCID) |
- localeNameToLCID = convertLocaleNameToLCID; |
- |
// According to MSDN, 9 is enough for LOCALE_SISO639LANGNAME. |
const size_t languageCodeBufferSize = 9; |
WCHAR lowercaseLanguageCode[languageCodeBufferSize]; |
::GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SISO639LANGNAME | (defaultsForLocale ? LOCALE_NOUSEROVERRIDE : 0), lowercaseLanguageCode, languageCodeBufferSize); |
String userDefaultLanguageCode = String(lowercaseLanguageCode); |
- LCID lcid = LCIDFromLocaleInternal(LOCALE_USER_DEFAULT, userDefaultLanguageCode, localeNameToLCID, locale); |
+ LCID lcid = LCIDFromLocaleInternal(LOCALE_USER_DEFAULT, userDefaultLanguageCode, locale); |
if (!lcid) |
- lcid = LCIDFromLocaleInternal(LOCALE_USER_DEFAULT, userDefaultLanguageCode, localeNameToLCID, defaultLanguage()); |
+ lcid = LCIDFromLocaleInternal(LOCALE_USER_DEFAULT, userDefaultLanguageCode, defaultLanguage()); |
return lcid; |
} |