| 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;
|
| }
|
|
|
|
|