diff options
author | Andras Becsi <andras.becsi@digia.com> | 2013-12-11 21:33:03 +0100 |
---|---|---|
committer | Andras Becsi <andras.becsi@digia.com> | 2013-12-13 12:34:07 +0100 |
commit | f2a33ff9cbc6d19943f1c7fbddd1f23d23975577 (patch) | |
tree | 0586a32aa390ade8557dfd6b4897f43a07449578 /chromium/third_party/WebKit/Source/core/css/CSSFontFaceSource.cpp | |
parent | 5362912cdb5eea702b68ebe23702468d17c3017a (diff) |
Update Chromium to branch 1650 (31.0.1650.63)
Change-Id: I57d8c832eaec1eb2364e0a8e7352a6dd354db99f
Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
Diffstat (limited to 'chromium/third_party/WebKit/Source/core/css/CSSFontFaceSource.cpp')
-rw-r--r-- | chromium/third_party/WebKit/Source/core/css/CSSFontFaceSource.cpp | 57 |
1 files changed, 46 insertions, 11 deletions
diff --git a/chromium/third_party/WebKit/Source/core/css/CSSFontFaceSource.cpp b/chromium/third_party/WebKit/Source/core/css/CSSFontFaceSource.cpp index 1f160aa51f7..7fe19c9c864 100644 --- a/chromium/third_party/WebKit/Source/core/css/CSSFontFaceSource.cpp +++ b/chromium/third_party/WebKit/Source/core/css/CSSFontFaceSource.cpp @@ -28,7 +28,7 @@ #include "core/css/CSSFontFace.h" #include "core/css/CSSFontSelector.h" -#include "core/loader/cache/FontResource.h" +#include "core/fetch/FontResource.h" #include "core/platform/HistogramSupport.h" #include "core/platform/graphics/FontCache.h" #include "core/platform/graphics/FontDescription.h" @@ -68,9 +68,31 @@ void CSSFontFaceSource::pruneTable() if (m_fontDataTable.isEmpty()) return; + for (FontDataTable::iterator it = m_fontDataTable.begin(); it != m_fontDataTable.end(); ++it) { + if (SimpleFontData* fontData = it->value.get()) + fontData->clearCSSFontFaceSource(); + } m_fontDataTable.clear(); } +bool CSSFontFaceSource::isLocal() const +{ + if (m_font) + return false; +#if ENABLE(SVG_FONTS) + if (m_svgFontFaceElement) + return false; +#endif + return true; +} + +bool CSSFontFaceSource::isLoading() const +{ + if (m_font) + return !m_font->stillNeedsLoad() && !m_font->isLoaded(); + return false; +} + bool CSSFontFaceSource::isLoaded() const { if (m_font) @@ -109,11 +131,7 @@ PassRefPtr<SimpleFontData> CSSFontFaceSource::getFontData(const FontDescription& if (!isValid()) return 0; - if (!m_font -#if ENABLE(SVG_FONTS) - && !m_svgFontFaceElement -#endif - ) { + if (isLocal()) { // We're local. Just return a SimpleFontData from the normal cache. // We don't want to check alternate font family names here, so pass true as the checkingAlternateName parameter. RefPtr<SimpleFontData> fontData = fontCache()->getFontResourceData(fontDescription, m_string, true); @@ -141,7 +159,7 @@ PassRefPtr<SimpleFontData> CSSFontFaceSource::getFontData(const FontDescription& if (!m_externalSVGFontElement) { String fragmentIdentifier; size_t start = m_string.find('#'); - if (start != notFound) + if (start != kNotFound) fragmentIdentifier = m_string.string().substring(start + 1); m_externalSVGFontElement = m_font->getSVGFontById(fragmentIdentifier); } @@ -186,14 +204,11 @@ PassRefPtr<SimpleFontData> CSSFontFaceSource::getFontData(const FontDescription& #endif } } else { - // Kick off the load. Do it soon rather than now, because we may be in the middle of layout, - // and the loader may invoke arbitrary delegate or event handler code. - fontSelector->beginLoadingFontSoon(m_font.get()); - // This temporary font is not retained and should not be returned. FontCachePurgePreventer fontCachePurgePreventer; SimpleFontData* temporaryFont = fontCache()->getNonRetainedLastResortFallbackFont(fontDescription); fontData = SimpleFontData::create(temporaryFont->platformData(), true, true); + fontData->setCSSFontFaceSource(this); } return fontData; // No release, because fontData is a reference to a RefPtr that is held in the m_fontDataTable. @@ -234,6 +249,26 @@ bool CSSFontFaceSource::ensureFontData() return m_font->ensureCustomFontData(); } +bool CSSFontFaceSource::isLocalFontAvailable(const FontDescription& fontDescription) +{ + if (!isLocal()) + return false; + return fontCache()->isPlatformFontAvailable(fontDescription, m_string, true); +} + +void CSSFontFaceSource::willUseFontData() +{ + if (m_font) + m_font->willUseFontData(); +} + +void CSSFontFaceSource::beginLoadingFontSoon() +{ + ASSERT(m_face); + ASSERT(m_font); + m_face->beginLoadingFontSoon(m_font.get()); +} + void CSSFontFaceSource::FontLoadHistograms::loadStarted() { if (!m_loadStartTime) |