| 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(
|
| + 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
|
|
|