Chromium Code Reviews| Index: third_party/WebKit/Source/core/dom/DocumentStyleSheetCollection.cpp |
| diff --git a/third_party/WebKit/Source/core/dom/DocumentStyleSheetCollection.cpp b/third_party/WebKit/Source/core/dom/DocumentStyleSheetCollection.cpp |
| index fa84e9e997b1793540c568ecd97633d14e90c8eb..1bd5732603c926dac2a58fbee5ecf11a67fefc69 100644 |
| --- a/third_party/WebKit/Source/core/dom/DocumentStyleSheetCollection.cpp |
| +++ b/third_party/WebKit/Source/core/dom/DocumentStyleSheetCollection.cpp |
| @@ -45,7 +45,6 @@ DocumentStyleSheetCollection::DocumentStyleSheetCollection(TreeScope& treeScope) |
| } |
| void DocumentStyleSheetCollection::collectStyleSheetsFromCandidates( |
| - StyleEngine& engine, |
| DocumentStyleSheetCollector& collector) { |
| for (Node* n : m_styleSheetCandidateNodes) { |
| StyleSheetCandidate candidate(*n); |
| @@ -70,64 +69,37 @@ void DocumentStyleSheetCollection::collectStyleSheetsFromCandidates( |
| continue; |
| collector.appendSheetForList(sheet); |
| - if (candidate.canBeActivated(engine.preferredStylesheetSetName())) |
| - collector.appendActiveStyleSheet(toCSSStyleSheet(sheet)); |
| + if (!candidate.canBeActivated( |
| + document().styleEngine().preferredStylesheetSetName())) |
| + continue; |
| + |
| + CSSStyleSheet* cssSheet = toCSSStyleSheet(sheet); |
| + collector.appendActiveStyleSheet(std::make_pair( |
| + cssSheet, document().styleEngine().ruleSetForSheet(*cssSheet))); |
| } |
| } |
| void DocumentStyleSheetCollection::collectStyleSheets( |
| - StyleEngine& engine, |
| DocumentStyleSheetCollector& collector) { |
| - DCHECK_EQ(&document().styleEngine(), &engine); |
| - collector.appendActiveStyleSheets(engine.injectedAuthorStyleSheets()); |
| - collectStyleSheetsFromCandidates(engine, collector); |
| - if (engine.inspectorStyleSheet()) |
| - collector.appendActiveStyleSheet(engine.inspectorStyleSheet()); |
| + for (auto& sheet : document().styleEngine().injectedAuthorStyleSheets()) { |
| + collector.appendActiveStyleSheet(std::make_pair( |
| + sheet, document().styleEngine().ruleSetForSheet(*sheet))); |
| + } |
| + collectStyleSheetsFromCandidates(collector); |
| + if (CSSStyleSheet* inspectorSheet = |
| + document().styleEngine().inspectorStyleSheet()) { |
| + collector.appendActiveStyleSheet(std::make_pair( |
| + inspectorSheet, |
| + document().styleEngine().ruleSetForSheet(*inspectorSheet))); |
| + } |
| } |
| -void DocumentStyleSheetCollection::updateActiveStyleSheets( |
|
esprehn
2016/12/09 01:36:21
Amazing!
|
| - StyleEngine& engine, |
| - StyleResolverUpdateMode updateMode) { |
| +void DocumentStyleSheetCollection::updateActiveStyleSheets() { |
| // StyleSheetCollection is GarbageCollected<>, allocate it on the heap. |
| StyleSheetCollection* collection = StyleSheetCollection::create(); |
| ActiveDocumentStyleSheetCollector collector(*collection); |
| - collectStyleSheets(engine, collector); |
| - |
| - StyleSheetChange change; |
| - analyzeStyleSheetChange(updateMode, collection->activeAuthorStyleSheets(), |
| - change); |
| - |
| - if (change.styleResolverUpdateType == Reconstruct) { |
| - engine.clearMasterResolver(); |
| - // 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) { |
| - DCHECK_EQ(change.styleResolverUpdateType, Reset); |
| - engine.resetAuthorStyle(treeScope()); |
| - engine.removeFontFaceRules(change.fontFaceRulesToRemove); |
| - styleResolver->removePendingAuthorStyleSheets(m_activeAuthorStyleSheets); |
| - styleResolver->lazyAppendAuthorStyleSheets( |
| - 0, collection->activeAuthorStyleSheets()); |
| - } else { |
| - styleResolver->lazyAppendAuthorStyleSheets( |
| - m_activeAuthorStyleSheets.size(), |
| - collection->activeAuthorStyleSheets()); |
| - } |
| - } |
| - if (change.requiresFullStyleRecalc) |
| - document().setNeedsStyleRecalc( |
| - SubtreeStyleChange, StyleChangeReasonForTracing::create( |
| - StyleChangeReason::ActiveStylesheetsUpdate)); |
| - |
| - collection->swap(*this); |
| - collection->dispose(); |
| + collectStyleSheets(collector); |
| + applyActiveStyleSheetChanges(*collection); |
| } |
| void DocumentStyleSheetCollection::collectViewportRules( |