Chromium Code Reviews| 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..679c3f06a1cab479bc39e23f0487584efec51f64 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) { |
|
wkorman
2016/01/25 23:38:16
Blink seems to prefer the early-out
if (fontsList
drott
2016/02/02 17:28:28
Changed to early-return.
|
| + for (auto fontCandidate : platformFontListForFallbackPriority(fallbackPriority)) { |
| + if (isPlatformFontAvailable(fontDescription, fontCandidate)) { |
| + fontsList.append(fontCandidate); |
| + } |
| + } |
| + fontsListInitialized = true; |
| + } |
| + return fontsList; |
| + |
|
wkorman
2016/01/25 23:38:16
rm blank
drott
2016/02/02 17:28:28
Done.
|
| +} |
| + |
| +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(); |
|
drott
2016/02/02 17:28:28
This would require a EXPECT_DEATH in a gtest check
|
| + } |
| +} |
| + |
| void FontCache::releaseFontData(const SimpleFontData* fontData) |
| { |
| ASSERT(gFontDataCache); |