Chromium Code Reviews| Index: third_party/WebKit/Source/platform/fonts/AcceptLanguagesResolver.cpp |
| diff --git a/third_party/WebKit/Source/platform/fonts/AcceptLanguagesResolver.cpp b/third_party/WebKit/Source/platform/fonts/AcceptLanguagesResolver.cpp |
| index dd67516705b201673ba410be2d6e25eb126894ff..5ae67b7cc5ae5b0103f2bab17a1e5c952d6cbc97 100644 |
| --- a/third_party/WebKit/Source/platform/fonts/AcceptLanguagesResolver.cpp |
| +++ b/third_party/WebKit/Source/platform/fonts/AcceptLanguagesResolver.cpp |
| @@ -4,58 +4,18 @@ |
| #include "platform/fonts/AcceptLanguagesResolver.h" |
| -#include "platform/Language.h" |
| -#include "platform/text/LocaleToScriptMapping.h" |
| -#include <unicode/locid.h> |
| +#include "platform/LayoutLocale.h" |
| namespace blink { |
| -UScriptCode AcceptLanguagesResolver::m_preferredHanScript = USCRIPT_COMMON; |
| -const char* AcceptLanguagesResolver::m_preferredHanSkFontMgrLocale = nullptr; |
| - |
| -// SkFontMgr requires script-based locale names, like "zh-Hant" and "zh-Hans", |
| -// instead of "zh-CN" and "zh-TW". |
| -static const char* toSkFontMgrLocaleForHan(UScriptCode script) |
| -{ |
| - switch (script) { |
| - case USCRIPT_KATAKANA_OR_HIRAGANA: |
| - return "ja-jp"; |
| - case USCRIPT_HANGUL: |
| - return "ko-kr"; |
| - case USCRIPT_SIMPLIFIED_HAN: |
| - return "zh-Hans"; |
| - case USCRIPT_TRADITIONAL_HAN: |
| - return "zh-Hant"; |
| - default: |
| - ASSERT_NOT_REACHED(); |
| - return nullptr; |
| - } |
| -} |
| - |
| void AcceptLanguagesResolver::acceptLanguagesChanged( |
| const String& acceptLanguages) |
| { |
| - // Use the UI locale if it can disambiguate the Unified Han. |
| - // Historically we use ICU on Windows. crbug.com/586520 |
| -#if OS(WIN) |
| - // Since Chrome synchronizes the ICU default locale with its UI locale, |
| - // this ICU locale tells the current UI locale of Chrome. |
| - m_preferredHanScript = scriptCodeForHanFromLocale( |
| - icu::Locale::getDefault().getName(), '_'); |
| -#else |
| - m_preferredHanScript = scriptCodeForHanFromLocale(defaultLanguage()); |
| -#endif |
| - if (m_preferredHanScript != USCRIPT_COMMON) { |
| - // We don't need additional locale if defaultLanguage() can disambiguate |
| - // since it's always passed to matchFamilyStyleCharacter() separately. |
| - m_preferredHanSkFontMgrLocale = nullptr; |
| - return; |
| - } |
| - |
| - updateFromAcceptLanguages(acceptLanguages); |
| + LayoutLocale::setLocaleForHan( |
|
drott
2016/07/28 08:05:23
This line looks a bit surprising to me. Is this tr
kojii
2016/07/29 04:27:40
No, the returned object is const. The pointer to t
drott
2016/08/02 07:14:15
Got it, thanks for the explanation. Now I see that
|
| + localeForHanFromAcceptLanguages(acceptLanguages)); |
| } |
| -void AcceptLanguagesResolver::updateFromAcceptLanguages( |
| +const LayoutLocale* AcceptLanguagesResolver::localeForHanFromAcceptLanguages( |
| const String& acceptLanguages) |
| { |
| // Use the first acceptLanguages that can disambiguate. |
| @@ -63,16 +23,12 @@ void AcceptLanguagesResolver::updateFromAcceptLanguages( |
| acceptLanguages.split(',', languages); |
| for (String token : languages) { |
| token = token.stripWhiteSpace(); |
| - m_preferredHanScript = scriptCodeForHanFromLocale(token); |
| - if (m_preferredHanScript != USCRIPT_COMMON) { |
| - m_preferredHanSkFontMgrLocale = toSkFontMgrLocaleForHan( |
| - m_preferredHanScript); |
| - return; |
| - } |
| + const LayoutLocale* locale = LayoutLocale::get(AtomicString(token)); |
| + if (locale->hasScriptForHan()) |
| + return locale; |
| } |
| - m_preferredHanScript = USCRIPT_COMMON; |
| - m_preferredHanSkFontMgrLocale = nullptr; |
| + return nullptr; |
| } |
| } // namespace blink |