Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(590)

Unified Diff: Source/core/css/CSSFontSelector.cpp

Issue 93783005: Store a copy of generic font settings at CSSFontSelector. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;

Powered by Google App Engine
This is Rietveld 408576698