| Index: third_party/WebKit/Source/core/css/ActiveStyleSheets.cpp
|
| diff --git a/third_party/WebKit/Source/core/css/ActiveStyleSheets.cpp b/third_party/WebKit/Source/core/css/ActiveStyleSheets.cpp
|
| index 271359d1c38166960c6ce78a2135b79d86e6b21a..5c5326338612c35413b2aff4bd8d5f28ca167fa0 100644
|
| --- a/third_party/WebKit/Source/core/css/ActiveStyleSheets.cpp
|
| +++ b/third_party/WebKit/Source/core/css/ActiveStyleSheets.cpp
|
| @@ -103,94 +103,4 @@ ActiveSheetsChange compareActiveStyleSheets(
|
| return changedRuleSets.size() ? ActiveSheetsChanged : NoActiveSheetsChanged;
|
| }
|
|
|
| -namespace {
|
| -
|
| -enum RuleSetFlags {
|
| - FontFaceRules = 1 << 0,
|
| - KeyframesRules = 1 << 1,
|
| - FullRecalcRules = 1 << 2
|
| -};
|
| -
|
| -unsigned getRuleSetFlags(const HeapVector<Member<RuleSet>> ruleSets) {
|
| - unsigned flags = 0;
|
| - for (auto& ruleSet : ruleSets) {
|
| - ruleSet->compactRulesIfNeeded();
|
| - if (!ruleSet->keyframesRules().isEmpty())
|
| - flags |= KeyframesRules;
|
| - if (!ruleSet->fontFaceRules().isEmpty())
|
| - flags |= FontFaceRules;
|
| - if (ruleSet->needsFullRecalcForRuleSetInvalidation())
|
| - flags |= FullRecalcRules;
|
| - }
|
| - return flags;
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -void applyRuleSetChanges(StyleEngine& engine,
|
| - TreeScope& treeScope,
|
| - const ActiveStyleSheetVector& oldStyleSheets,
|
| - const ActiveStyleSheetVector& newStyleSheets) {
|
| - HeapVector<Member<RuleSet>> changedRuleSets;
|
| -
|
| - ActiveSheetsChange change =
|
| - compareActiveStyleSheets(oldStyleSheets, newStyleSheets, changedRuleSets);
|
| - if (change == NoActiveSheetsChanged)
|
| - return;
|
| -
|
| - // TODO(rune@opera.com): engine.setNeedsGlobalRuleSetUpdate();
|
| -
|
| - unsigned changedRuleFlags = getRuleSetFlags(changedRuleSets);
|
| - bool fontsChanged = treeScope.rootNode().isDocumentNode() &&
|
| - (changedRuleFlags & FontFaceRules);
|
| - unsigned appendStartIndex = 0;
|
| -
|
| - // We don't need to clear the font cache if new sheets are appended.
|
| - if (fontsChanged && change == ActiveSheetsChanged)
|
| - engine.clearFontCache();
|
| -
|
| - // - If all sheets were removed, we remove the ScopedStyleResolver.
|
| - // - If new sheets were appended to existing ones, start appending after the
|
| - // common prefix.
|
| - // - For other diffs, reset author style and re-add all sheets for the
|
| - // TreeScope.
|
| - if (treeScope.scopedStyleResolver()) {
|
| - if (newStyleSheets.isEmpty())
|
| - engine.resetAuthorStyle(treeScope);
|
| - else if (change == ActiveSheetsAppended)
|
| - appendStartIndex = oldStyleSheets.size();
|
| - else
|
| - treeScope.scopedStyleResolver()->resetAuthorStyle();
|
| - }
|
| -
|
| - if (!newStyleSheets.isEmpty()) {
|
| - treeScope.ensureScopedStyleResolver().appendActiveStyleSheets(
|
| - appendStartIndex, newStyleSheets);
|
| - }
|
| -
|
| - if (treeScope.document().hasPendingForcedStyleRecalc())
|
| - return;
|
| -
|
| - if (!treeScope.document().body() ||
|
| - treeScope.document().hasNodesWithPlaceholderStyle()) {
|
| - treeScope.document().setNeedsStyleRecalc(
|
| - SubtreeStyleChange, StyleChangeReasonForTracing::create(
|
| - StyleChangeReason::CleanupPlaceholderStyles));
|
| - return;
|
| - }
|
| -
|
| - if (changedRuleFlags & KeyframesRules)
|
| - ScopedStyleResolver::keyframesRulesAdded(treeScope);
|
| -
|
| - if (fontsChanged || (changedRuleFlags & FullRecalcRules)) {
|
| - ScopedStyleResolver::invalidationRootForTreeScope(treeScope)
|
| - .setNeedsStyleRecalc(SubtreeStyleChange,
|
| - StyleChangeReasonForTracing::create(
|
| - StyleChangeReason::ActiveStylesheetsUpdate));
|
| - return;
|
| - }
|
| -
|
| - engine.scheduleInvalidationsForRuleSets(treeScope, changedRuleSets);
|
| -}
|
| -
|
| } // namespace blink
|
|
|