| Index: Source/core/css/CSSFontSelector.cpp
|
| diff --git a/Source/core/css/CSSFontSelector.cpp b/Source/core/css/CSSFontSelector.cpp
|
| index 7c8a46d1cfd5e45b711a9841da4eb2cd53593ca1..d44965d40bdd1a31ebbac5687fc1de577b6816a1 100644
|
| --- a/Source/core/css/CSSFontSelector.cpp
|
| +++ b/Source/core/css/CSSFontSelector.cpp
|
| @@ -108,12 +108,14 @@ void FontLoader::clearResourceFetcher()
|
| CSSFontSelector::CSSFontSelector(Document* document)
|
| : m_document(document)
|
| , m_fontLoader(document->fetcher())
|
| + , m_genericFontFamilySettings(document->frame()->settings()->genericFontFamilySettings())
|
| {
|
| // FIXME: An old comment used to say there was no need to hold a reference to m_document
|
| // because "we are guaranteed to be destroyed before the document". But there does not
|
| // seem to be any such guarantee.
|
|
|
| ASSERT(m_document);
|
| + ASSERT(m_document->frame());
|
| fontCache()->addClient(this);
|
| }
|
|
|
| @@ -161,47 +163,41 @@ void CSSFontSelector::removeFontFaceRule(const StyleRuleFontFace* fontFaceRule)
|
| m_cssSegmentedFontFaceCache.removeFontFaceRule(fontFaceRule);
|
| }
|
|
|
| -static AtomicString familyNameFromSettings(Settings* settings, const FontDescription& fontDescription, const AtomicString& genericFamilyName)
|
| +static AtomicString familyNameFromSettings(const GenericFontFamilySettings& settings, const FontDescription& fontDescription, const AtomicString& genericFamilyName)
|
| {
|
| - if (!settings)
|
| - return emptyAtom;
|
| -
|
| UScriptCode script = fontDescription.script();
|
|
|
| if (fontDescription.genericFamily() == FontDescription::StandardFamily && !fontDescription.isSpecifiedFont())
|
| - return settings->genericFontFamilySettings().standard(script);
|
| + return settings.standard(script);
|
|
|
| #if OS(ANDROID)
|
| return FontCache::getGenericFamilyNameForScript(genericFamilyName, script);
|
| #else
|
| if (genericFamilyName == FontFamilyNames::webkit_serif)
|
| - return settings->genericFontFamilySettings().serif(script);
|
| + return settings.serif(script);
|
| if (genericFamilyName == FontFamilyNames::webkit_sans_serif)
|
| - return settings->genericFontFamilySettings().sansSerif(script);
|
| + return settings.sansSerif(script);
|
| if (genericFamilyName == FontFamilyNames::webkit_cursive)
|
| - return settings->genericFontFamilySettings().cursive(script);
|
| + return settings.cursive(script);
|
| if (genericFamilyName == FontFamilyNames::webkit_fantasy)
|
| - return settings->genericFontFamilySettings().fantasy(script);
|
| + return settings.fantasy(script);
|
| if (genericFamilyName == FontFamilyNames::webkit_monospace)
|
| - return settings->genericFontFamilySettings().fixed(script);
|
| + return settings.fixed(script);
|
| if (genericFamilyName == FontFamilyNames::webkit_pictograph)
|
| - return settings->genericFontFamilySettings().pictograph(script);
|
| + return settings.pictograph(script);
|
| if (genericFamilyName == FontFamilyNames::webkit_standard)
|
| - return settings->genericFontFamilySettings().standard(script);
|
| + return settings.standard(script);
|
| #endif
|
| return emptyAtom;
|
| }
|
|
|
| PassRefPtr<FontData> CSSFontSelector::getFontData(const FontDescription& fontDescription, const AtomicString& familyName)
|
| {
|
| - if (!m_document || !m_document->frame())
|
| - return 0;
|
| -
|
| if (CSSSegmentedFontFace* face = m_cssSegmentedFontFaceCache.getFontFace(fontDescription, familyName))
|
| return face->getFontData(fontDescription);
|
|
|
| // Try to return the correct font based off our settings, in case we were handed the generic font family name.
|
| - AtomicString settingsFamilyName = familyNameFromSettings(m_document->frame()->settings(), fontDescription, familyName);
|
| + AtomicString settingsFamilyName = familyNameFromSettings(m_genericFontFamilySettings, fontDescription, familyName);
|
| if (settingsFamilyName.isEmpty())
|
| return 0;
|
|
|
|
|