| Index: Source/core/dom/DocumentStyleSheetCollection.cpp
|
| diff --git a/Source/core/dom/DocumentStyleSheetCollection.cpp b/Source/core/dom/DocumentStyleSheetCollection.cpp
|
| index 07a8160e095c7570549dd92d5debd885e0900c25..9d69218ed3f925091d899bbe27178dec8b265aea 100644
|
| --- a/Source/core/dom/DocumentStyleSheetCollection.cpp
|
| +++ b/Source/core/dom/DocumentStyleSheetCollection.cpp
|
| @@ -81,10 +81,7 @@ void DocumentStyleSheetCollection::collectStyleSheetsFromCandidates(StyleEngine*
|
| Document* document = candidate.importedDocument();
|
| if (!document)
|
| continue;
|
| - if (collector.hasVisited(document))
|
| - continue;
|
| - collector.markVisited(document);
|
| - document->styleEngine()->collectDocumentStyleSheets(collector);
|
| + document->styleEngine()->updateStyleSheetsInImport(collector);
|
| continue;
|
| }
|
|
|
| @@ -101,19 +98,18 @@ void DocumentStyleSheetCollection::collectStyleSheetsFromCandidates(StyleEngine*
|
|
|
| if (candidate.hasPreferrableName(engine->preferredStylesheetSetName()))
|
| engine->selectStylesheetSetName(candidate.title());
|
| - if (collector.isCollectingForList(m_treeScope))
|
| - collector.appendSheetForList(sheet);
|
| + collector.appendSheetForList(sheet);
|
| if (candidate.canBeActivated(engine->preferredStylesheetSetName()))
|
| collector.appendActiveStyleSheet(toCSSStyleSheet(sheet));
|
| }
|
| }
|
|
|
| -static void collectActiveCSSStyleSheetsFromSeamlessParents(StyleSheetCollectionBase& collection, Document* document)
|
| +static void collectActiveCSSStyleSheetsFromSeamlessParents(DocumentStyleSheetCollector& collector, Document* document)
|
| {
|
| HTMLIFrameElement* seamlessParentIFrame = document->seamlessParentIFrame();
|
| if (!seamlessParentIFrame)
|
| return;
|
| - collection.appendActiveStyleSheets(seamlessParentIFrame->document().styleEngine()->activeAuthorStyleSheets());
|
| + collector.appendActiveStyleSheets(seamlessParentIFrame->document().styleEngine()->activeAuthorStyleSheets());
|
| }
|
|
|
| void DocumentStyleSheetCollection::collectStyleSheets(StyleEngine* engine, DocumentStyleSheetCollector& collector)
|
| @@ -121,17 +117,18 @@ void DocumentStyleSheetCollection::collectStyleSheets(StyleEngine* engine, Docum
|
| ASSERT(document()->styleEngine() == engine);
|
| collector.appendActiveStyleSheets(engine->injectedAuthorStyleSheets());
|
| collector.appendActiveStyleSheets(engine->documentAuthorStyleSheets());
|
| - collectActiveCSSStyleSheetsFromSeamlessParents(collector.collection(), document());
|
| + collectActiveCSSStyleSheetsFromSeamlessParents(collector, document());
|
| collectStyleSheetsFromCandidates(engine, collector);
|
| }
|
|
|
| bool DocumentStyleSheetCollection::updateActiveStyleSheets(StyleEngine* engine, StyleResolverUpdateMode updateMode)
|
| {
|
| - DocumentStyleSheetCollector collector(m_treeScope);
|
| + StyleSheetCollectionBase collection;
|
| + ActiveDocumentStyleSheetCollector collector(collection);
|
| collectStyleSheets(engine, collector);
|
|
|
| StyleSheetChange change;
|
| - analyzeStyleSheetChange(updateMode, collector.collection(), change);
|
| + analyzeStyleSheetChange(updateMode, collection, change);
|
|
|
| if (change.styleResolverUpdateType == Reconstruct) {
|
| engine->clearMasterResolver();
|
| @@ -146,15 +143,17 @@ bool DocumentStyleSheetCollection::updateActiveStyleSheets(StyleEngine* engine,
|
| if (change.styleResolverUpdateType == ResetStyleResolverAndFontSelector)
|
| engine->resetFontSelector();
|
| styleResolver->removePendingAuthorStyleSheets(m_activeAuthorStyleSheets);
|
| - styleResolver->lazyAppendAuthorStyleSheets(0, collector.collection().activeAuthorStyleSheets());
|
| + styleResolver->lazyAppendAuthorStyleSheets(0, collection.activeAuthorStyleSheets());
|
| } else {
|
| - styleResolver->lazyAppendAuthorStyleSheets(m_activeAuthorStyleSheets.size(), collector.collection().activeAuthorStyleSheets());
|
| + styleResolver->lazyAppendAuthorStyleSheets(m_activeAuthorStyleSheets.size(), collection.activeAuthorStyleSheets());
|
| }
|
| } else if (change.styleResolverUpdateType == ResetStyleResolverAndFontSelector) {
|
| engine->resetFontSelector();
|
| }
|
| m_scopingNodesForStyleScoped.didRemoveScopingNodes();
|
| - collector.setCollectionTo(*this);
|
| +
|
| + collection.swap(*this);
|
| +
|
| updateUsesRemUnits();
|
|
|
| return change.requiresFullStyleRecalc;
|
|
|