| Index: third_party/WebKit/Source/platform/fonts/FontCache.cpp
|
| diff --git a/third_party/WebKit/Source/platform/fonts/FontCache.cpp b/third_party/WebKit/Source/platform/fonts/FontCache.cpp
|
| index 462f0d04ff0cd9443d31061f85b23e7733a538f1..25c2468323f3563b657cc2225b6e5520446a17da 100644
|
| --- a/third_party/WebKit/Source/platform/fonts/FontCache.cpp
|
| +++ b/third_party/WebKit/Source/platform/fonts/FontCache.cpp
|
| @@ -194,6 +194,40 @@ SimpleFontData* FontCache::getNonRetainedLastResortFallbackFont(const FontDescri
|
| return getLastResortFallbackFont(fontDescription, DoNotRetain).leakRef();
|
| }
|
|
|
| +template <FontFallbackPriority fallbackPriority>
|
| +const Vector<AtomicString>& FontCache::initAndGetFontListForFallbackPriority(const FontDescription& fontDescription)
|
| +{
|
| + DEFINE_STATIC_LOCAL(Vector<AtomicString>, fontsList, ());
|
| + DEFINE_STATIC_LOCAL(bool, fontsListInitialized, (false));
|
| + if (fontsListInitialized)
|
| + return fontsList;
|
| +
|
| + for (auto fontCandidate :
|
| + platformFontListForFallbackPriority(fallbackPriority)) {
|
| + if (isPlatformFontAvailable(fontDescription, fontCandidate))
|
| + fontsList.append(fontCandidate);
|
| + }
|
| + fontsListInitialized = true;
|
| + return fontsList;
|
| +}
|
| +
|
| +const Vector<AtomicString>& FontCache::fontListForFallbackPriority(const FontDescription& fontDescription, FontFallbackPriority fallbackPriority)
|
| +{
|
| + // Explicit template instantiations for valid values.
|
| + switch (fallbackPriority) {
|
| + case FontFallbackPriority::Symbols:
|
| + return initAndGetFontListForFallbackPriority<FontFallbackPriority::Symbols>(fontDescription);
|
| + case FontFallbackPriority::Math:
|
| + return initAndGetFontListForFallbackPriority<FontFallbackPriority::Math>(fontDescription);
|
| + case FontFallbackPriority::EmojiText:
|
| + return initAndGetFontListForFallbackPriority<FontFallbackPriority::EmojiText>(fontDescription);
|
| + case FontFallbackPriority::EmojiEmoji:
|
| + return initAndGetFontListForFallbackPriority<FontFallbackPriority::EmojiEmoji>(fontDescription);
|
| + default:
|
| + RELEASE_ASSERT_NOT_REACHED();
|
| + }
|
| +}
|
| +
|
| void FontCache::releaseFontData(const SimpleFontData* fontData)
|
| {
|
| ASSERT(gFontDataCache);
|
|
|