| Index: Source/core/css/CSSFontFace.cpp
|
| diff --git a/Source/core/css/CSSFontFace.cpp b/Source/core/css/CSSFontFace.cpp
|
| index ecdedb72a15787c8c9a3f18673b6c47712dff3b0..c667aaa185e971517e38224ec58638e912100bbc 100644
|
| --- a/Source/core/css/CSSFontFace.cpp
|
| +++ b/Source/core/css/CSSFontFace.cpp
|
| @@ -67,6 +67,18 @@ void CSSFontFace::setSegmentedFontFace(CSSSegmentedFontFace* segmentedFontFace)
|
| m_segmentedFontFace = segmentedFontFace;
|
| }
|
|
|
| +void CSSFontFace::beginLoadingFontSoon(FontResource* resource)
|
| +{
|
| + if (!m_segmentedFontFace)
|
| + return;
|
| +
|
| + CSSFontSelector* fontSelector = m_segmentedFontFace->fontSelector();
|
| + fontSelector->beginLoadingFontSoon(resource);
|
| +
|
| + if (loadStatus() == FontFace::Unloaded)
|
| + setLoadStatus(FontFace::Loading);
|
| +}
|
| +
|
| void CSSFontFace::fontLoaded(CSSFontFaceSource* source)
|
| {
|
| if (source != m_activeSource)
|
| @@ -100,19 +112,20 @@ PassRefPtr<SimpleFontData> CSSFontFace::getFontData(const FontDescription& fontD
|
| ASSERT(m_segmentedFontFace);
|
| CSSFontSelector* fontSelector = m_segmentedFontFace->fontSelector();
|
|
|
| - if (loadStatus() == FontFace::Unloaded)
|
| - setLoadStatus(FontFace::Loading);
|
| -
|
| size_t size = m_sources.size();
|
| for (size_t i = 0; i < size; ++i) {
|
| if (RefPtr<SimpleFontData> result = m_sources[i]->getFontData(fontDescription, syntheticBold, syntheticItalic, fontSelector)) {
|
| m_activeSource = m_sources[i].get();
|
| + if (loadStatus() == FontFace::Unloaded && (m_sources[i]->isLoading() || m_sources[i]->isLoaded()))
|
| + setLoadStatus(FontFace::Loading);
|
| if (loadStatus() == FontFace::Loading && m_sources[i]->isLoaded())
|
| setLoadStatus(FontFace::Loaded);
|
| return result.release();
|
| }
|
| }
|
|
|
| + if (loadStatus() == FontFace::Unloaded)
|
| + setLoadStatus(FontFace::Loading);
|
| if (loadStatus() == FontFace::Loading)
|
| setLoadStatus(FontFace::Error);
|
| return 0;
|
|
|