| 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(
|
| - 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(
|
|
|