Index: Source/core/dom/DocumentStyleSheetCollection.cpp |
diff --git a/Source/core/dom/DocumentStyleSheetCollection.cpp b/Source/core/dom/DocumentStyleSheetCollection.cpp |
index e2834622287c55baeb2a4cb387e2fb712dae7c84..74d427b67d07df7600c64bc66dbf591f268c59f2 100644 |
--- a/Source/core/dom/DocumentStyleSheetCollection.cpp |
+++ b/Source/core/dom/DocumentStyleSheetCollection.cpp |
@@ -97,9 +97,12 @@ void DocumentStyleSheetCollection::updateActiveStyleSheets(StyleEngine& engine, |
if (change.styleResolverUpdateType == Reconstruct) { |
engine.clearMasterResolver(); |
- // FIMXE: The following depends on whether StyleRuleFontFace was modified or not. |
- // No need to always-clear font cache. |
- engine.clearFontCache(); |
+ // TODO(rune@opera.com): The following depends on whether StyleRuleFontFace was modified or not. |
+ // We should only remove modified/removed @font-face rules, or @font-face rules from removed |
+ // stylesheets. We currently avoid clearing the font cache when we have had an analyzed update |
+ // and no @font-face rules were removed, in which case requiresFullStyleRecalc will be false. |
+ if (change.requiresFullStyleRecalc) |
+ engine.clearFontCache(); |
} else if (StyleResolver* styleResolver = engine.resolver()) { |
if (change.styleResolverUpdateType != Additive) { |
ASSERT(change.styleResolverUpdateType == Reset); |