| Index: Source/core/css/CSSSegmentedFontFaceCache.cpp
|
| diff --git a/Source/core/css/CSSSegmentedFontFaceCache.cpp b/Source/core/css/CSSSegmentedFontFaceCache.cpp
|
| index da5041570ab215797b155350cdc1978f22200bf0..17803d82821eb8d0f36ea375e95f2aa622866d3d 100644
|
| --- a/Source/core/css/CSSSegmentedFontFaceCache.cpp
|
| +++ b/Source/core/css/CSSSegmentedFontFaceCache.cpp
|
| @@ -35,7 +35,6 @@
|
| #include "core/css/CSSSegmentedFontFace.h"
|
| #include "core/css/CSSValueList.h"
|
| #include "core/css/StyleRule.h"
|
| -#include "core/dom/Document.h"
|
| #include "core/fetch/FontResource.h"
|
| #include "core/fetch/ResourceFetcher.h"
|
| #include "platform/fonts/FontDescription.h"
|
| @@ -48,37 +47,29 @@ CSSSegmentedFontFaceCache::CSSSegmentedFontFaceCache()
|
| {
|
| }
|
|
|
| -void CSSSegmentedFontFaceCache::addFontFaceRule(CSSFontSelector* cssFontSelector, const StyleRuleFontFace* fontFaceRule)
|
| +void CSSSegmentedFontFaceCache::add(CSSFontSelector* cssFontSelector, const StyleRuleFontFace* fontFaceRule, PassRefPtr<CSSFontFace> prpCssFontFace)
|
| {
|
| - RefPtr<FontFace> fontFace = FontFace::create(fontFaceRule);
|
| - if (!fontFace || fontFace->family().isEmpty())
|
| - return;
|
| -
|
| - unsigned traitsMask = fontFace->traitsMask();
|
| - if (!traitsMask)
|
| - return;
|
| -
|
| - RefPtr<CSSFontFace> cssFontFace = fontFace->createCSSFontFace(cssFontSelector->document());
|
| - if (!cssFontFace || !cssFontFace->isValid())
|
| - return;
|
| + RefPtr<CSSFontFace> cssFontFace = prpCssFontFace;
|
|
|
| if (!m_styleRuleToFontFace.add(fontFaceRule, cssFontFace).isNewEntry)
|
| return;
|
|
|
| + FontFace* fontFace = cssFontFace->fontFace();
|
| +
|
| OwnPtr<TraitsMap>& familyFontFaces = m_fontFaces.add(fontFace->family(), nullptr).iterator->value;
|
| if (!familyFontFaces)
|
| familyFontFaces = adoptPtr(new TraitsMap);
|
|
|
| - RefPtr<CSSSegmentedFontFace>& segmentedFontFace = familyFontFaces->add(traitsMask, 0).iterator->value;
|
| + RefPtr<CSSSegmentedFontFace>& segmentedFontFace = familyFontFaces->add(fontFace->traitsMask(), 0).iterator->value;
|
| if (!segmentedFontFace)
|
| - segmentedFontFace = CSSSegmentedFontFace::create(cssFontSelector, static_cast<FontTraitsMask>(traitsMask));
|
| + segmentedFontFace = CSSSegmentedFontFace::create(cssFontSelector, static_cast<FontTraitsMask>(fontFace->traitsMask()));
|
|
|
| segmentedFontFace->appendFontFace(cssFontFace);
|
|
|
| ++m_version;
|
| }
|
|
|
| -void CSSSegmentedFontFaceCache::removeFontFaceRule(const StyleRuleFontFace* fontFaceRule)
|
| +void CSSSegmentedFontFaceCache::remove(const StyleRuleFontFace* fontFaceRule)
|
| {
|
| StyleRuleToFontFace::iterator styleRuleToFontFaceIter = m_styleRuleToFontFace.find(fontFaceRule);
|
| if (styleRuleToFontFaceIter == m_styleRuleToFontFace.end())
|
| @@ -186,7 +177,7 @@ static inline bool compareFontFaces(CSSSegmentedFontFace* first, CSSSegmentedFon
|
| return false;
|
| }
|
|
|
| -CSSSegmentedFontFace* CSSSegmentedFontFaceCache::getFontFace(const FontDescription& fontDescription, const AtomicString& family)
|
| +CSSSegmentedFontFace* CSSSegmentedFontFaceCache::get(const FontDescription& fontDescription, const AtomicString& family)
|
| {
|
| TraitsMap* familyFontFaces = m_fontFaces.get(family);
|
| if (!familyFontFaces || familyFontFaces->isEmpty())
|
|
|