| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
| 4 * (C) 2001 Dirk Mueller (mueller@kde.org) | 4 * (C) 2001 Dirk Mueller (mueller@kde.org) |
| 5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org) | 5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org) |
| 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012 Apple Inc. All r
ights reserved. | 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012 Apple Inc. All r
ights reserved. |
| 7 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t
orchmobile.com/) | 7 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t
orchmobile.com/) |
| 8 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) | 8 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) |
| 9 * Copyright (C) 2013 Google Inc. All rights reserved. | 9 * Copyright (C) 2013 Google Inc. All rights reserved. |
| 10 * | 10 * |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 74 return; | 74 return; |
| 75 } | 75 } |
| 76 | 76 |
| 77 continue; | 77 continue; |
| 78 } | 78 } |
| 79 | 79 |
| 80 if (candidate.isImport()) { | 80 if (candidate.isImport()) { |
| 81 Document* document = candidate.importedDocument(); | 81 Document* document = candidate.importedDocument(); |
| 82 if (!document) | 82 if (!document) |
| 83 continue; | 83 continue; |
| 84 if (collector.hasVisited(document)) | 84 document->styleEngine()->updateStyleSheetsInImport(collector); |
| 85 continue; | |
| 86 collector.markVisited(document); | |
| 87 document->styleEngine()->collectDocumentStyleSheets(collector); | |
| 88 continue; | 85 continue; |
| 89 } | 86 } |
| 90 | 87 |
| 91 if (candidate.isEnabledAndLoading()) { | 88 if (candidate.isEnabledAndLoading()) { |
| 92 // it is loading but we should still decide which style sheet set to
use | 89 // it is loading but we should still decide which style sheet set to
use |
| 93 if (candidate.hasPreferrableName(engine->preferredStylesheetSetName(
))) | 90 if (candidate.hasPreferrableName(engine->preferredStylesheetSetName(
))) |
| 94 engine->selectStylesheetSetName(candidate.title()); | 91 engine->selectStylesheetSetName(candidate.title()); |
| 95 continue; | 92 continue; |
| 96 } | 93 } |
| 97 | 94 |
| 98 StyleSheet* sheet = candidate.sheet(); | 95 StyleSheet* sheet = candidate.sheet(); |
| 99 if (!sheet) | 96 if (!sheet) |
| 100 continue; | 97 continue; |
| 101 | 98 |
| 102 if (candidate.hasPreferrableName(engine->preferredStylesheetSetName())) | 99 if (candidate.hasPreferrableName(engine->preferredStylesheetSetName())) |
| 103 engine->selectStylesheetSetName(candidate.title()); | 100 engine->selectStylesheetSetName(candidate.title()); |
| 104 if (collector.isCollectingForList(m_treeScope)) | 101 collector.appendSheetForList(sheet); |
| 105 collector.appendSheetForList(sheet); | |
| 106 if (candidate.canBeActivated(engine->preferredStylesheetSetName())) | 102 if (candidate.canBeActivated(engine->preferredStylesheetSetName())) |
| 107 collector.appendActiveStyleSheet(toCSSStyleSheet(sheet)); | 103 collector.appendActiveStyleSheet(toCSSStyleSheet(sheet)); |
| 108 } | 104 } |
| 109 } | 105 } |
| 110 | 106 |
| 111 static void collectActiveCSSStyleSheetsFromSeamlessParents(StyleSheetCollectionB
ase& collection, Document* document) | 107 static void collectActiveCSSStyleSheetsFromSeamlessParents(DocumentStyleSheetCol
lector& collector, Document* document) |
| 112 { | 108 { |
| 113 HTMLIFrameElement* seamlessParentIFrame = document->seamlessParentIFrame(); | 109 HTMLIFrameElement* seamlessParentIFrame = document->seamlessParentIFrame(); |
| 114 if (!seamlessParentIFrame) | 110 if (!seamlessParentIFrame) |
| 115 return; | 111 return; |
| 116 collection.appendActiveStyleSheets(seamlessParentIFrame->document().styleEng
ine()->activeAuthorStyleSheets()); | 112 collector.appendActiveStyleSheets(seamlessParentIFrame->document().styleEngi
ne()->activeAuthorStyleSheets()); |
| 117 } | 113 } |
| 118 | 114 |
| 119 void DocumentStyleSheetCollection::collectStyleSheets(StyleEngine* engine, Docum
entStyleSheetCollector& collector) | 115 void DocumentStyleSheetCollection::collectStyleSheets(StyleEngine* engine, Docum
entStyleSheetCollector& collector) |
| 120 { | 116 { |
| 121 ASSERT(document()->styleEngine() == engine); | 117 ASSERT(document()->styleEngine() == engine); |
| 122 collector.appendActiveStyleSheets(engine->injectedAuthorStyleSheets()); | 118 collector.appendActiveStyleSheets(engine->injectedAuthorStyleSheets()); |
| 123 collector.appendActiveStyleSheets(engine->documentAuthorStyleSheets()); | 119 collector.appendActiveStyleSheets(engine->documentAuthorStyleSheets()); |
| 124 collectActiveCSSStyleSheetsFromSeamlessParents(collector.collection(), docum
ent()); | 120 collectActiveCSSStyleSheetsFromSeamlessParents(collector, document()); |
| 125 collectStyleSheetsFromCandidates(engine, collector); | 121 collectStyleSheetsFromCandidates(engine, collector); |
| 126 } | 122 } |
| 127 | 123 |
| 128 bool DocumentStyleSheetCollection::updateActiveStyleSheets(StyleEngine* engine,
StyleResolverUpdateMode updateMode) | 124 bool DocumentStyleSheetCollection::updateActiveStyleSheets(StyleEngine* engine,
StyleResolverUpdateMode updateMode) |
| 129 { | 125 { |
| 130 DocumentStyleSheetCollector collector(m_treeScope); | 126 StyleSheetCollectionBase collection; |
| 127 ActiveDocumentStyleSheetCollector collector(collection); |
| 131 collectStyleSheets(engine, collector); | 128 collectStyleSheets(engine, collector); |
| 132 | 129 |
| 133 StyleSheetChange change; | 130 StyleSheetChange change; |
| 134 analyzeStyleSheetChange(updateMode, collector.collection(), change); | 131 analyzeStyleSheetChange(updateMode, collection, change); |
| 135 | 132 |
| 136 if (change.styleResolverUpdateType == Reconstruct) { | 133 if (change.styleResolverUpdateType == Reconstruct) { |
| 137 engine->clearMasterResolver(); | 134 engine->clearMasterResolver(); |
| 138 engine->resetFontSelector(); | 135 engine->resetFontSelector(); |
| 139 } else if (StyleResolver* styleResolver = engine->resolver()) { | 136 } else if (StyleResolver* styleResolver = engine->resolver()) { |
| 140 // FIXME: We might have already had styles in child treescope. In this c
ase, we cannot use buildScopedStyleTreeInDocumentOrder. | 137 // FIXME: We might have already had styles in child treescope. In this c
ase, we cannot use buildScopedStyleTreeInDocumentOrder. |
| 141 // Need to change "false" to some valid condition. | 138 // Need to change "false" to some valid condition. |
| 142 styleResolver->setBuildScopedStyleTreeInDocumentOrder(false); | 139 styleResolver->setBuildScopedStyleTreeInDocumentOrder(false); |
| 143 if (change.styleResolverUpdateType != Additive) { | 140 if (change.styleResolverUpdateType != Additive) { |
| 144 ASSERT(change.styleResolverUpdateType == Reset || change.styleResolv
erUpdateType == ResetStyleResolverAndFontSelector); | 141 ASSERT(change.styleResolverUpdateType == Reset || change.styleResolv
erUpdateType == ResetStyleResolverAndFontSelector); |
| 145 resetAllRuleSetsInTreeScope(styleResolver); | 142 resetAllRuleSetsInTreeScope(styleResolver); |
| 146 if (change.styleResolverUpdateType == ResetStyleResolverAndFontSelec
tor) | 143 if (change.styleResolverUpdateType == ResetStyleResolverAndFontSelec
tor) |
| 147 engine->resetFontSelector(); | 144 engine->resetFontSelector(); |
| 148 styleResolver->removePendingAuthorStyleSheets(m_activeAuthorStyleShe
ets); | 145 styleResolver->removePendingAuthorStyleSheets(m_activeAuthorStyleShe
ets); |
| 149 styleResolver->lazyAppendAuthorStyleSheets(0, collector.collection()
.activeAuthorStyleSheets()); | 146 styleResolver->lazyAppendAuthorStyleSheets(0, collection.activeAutho
rStyleSheets()); |
| 150 } else { | 147 } else { |
| 151 styleResolver->lazyAppendAuthorStyleSheets(m_activeAuthorStyleSheets
.size(), collector.collection().activeAuthorStyleSheets()); | 148 styleResolver->lazyAppendAuthorStyleSheets(m_activeAuthorStyleSheets
.size(), collection.activeAuthorStyleSheets()); |
| 152 } | 149 } |
| 153 } else if (change.styleResolverUpdateType == ResetStyleResolverAndFontSelect
or) { | 150 } else if (change.styleResolverUpdateType == ResetStyleResolverAndFontSelect
or) { |
| 154 engine->resetFontSelector(); | 151 engine->resetFontSelector(); |
| 155 } | 152 } |
| 156 m_scopingNodesForStyleScoped.didRemoveScopingNodes(); | 153 m_scopingNodesForStyleScoped.didRemoveScopingNodes(); |
| 157 collector.setCollectionTo(*this); | 154 |
| 155 collection.swap(*this); |
| 156 |
| 158 updateUsesRemUnits(); | 157 updateUsesRemUnits(); |
| 159 | 158 |
| 160 return change.requiresFullStyleRecalc; | 159 return change.requiresFullStyleRecalc; |
| 161 } | 160 } |
| 162 | 161 |
| 163 } | 162 } |
| OLD | NEW |