| 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 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 45 namespace WebCore { | 45 namespace WebCore { |
| 46 | 46 |
| 47 using namespace HTMLNames; | 47 using namespace HTMLNames; |
| 48 | 48 |
| 49 DocumentStyleSheetCollection::DocumentStyleSheetCollection(TreeScope& treeScope) | 49 DocumentStyleSheetCollection::DocumentStyleSheetCollection(TreeScope& treeScope) |
| 50 : StyleSheetCollection(treeScope) | 50 : StyleSheetCollection(treeScope) |
| 51 { | 51 { |
| 52 ASSERT(treeScope.rootNode() == treeScope.rootNode()->document()); | 52 ASSERT(treeScope.rootNode() == treeScope.rootNode()->document()); |
| 53 } | 53 } |
| 54 | 54 |
| 55 static void collectActiveCSSStyleSheetsFromSeamlessParents(StyleSheetCollectionB
ase& collection, Document* document) |
| 56 { |
| 57 HTMLIFrameElement* seamlessParentIFrame = document->seamlessParentIFrame(); |
| 58 if (!seamlessParentIFrame) |
| 59 return; |
| 60 collection.appendActiveStyleSheets(seamlessParentIFrame->document().styleEng
ine()->activeAuthorStyleSheets()); |
| 61 } |
| 62 |
| 55 void DocumentStyleSheetCollection::collectStyleSheets(StyleEngine* engine, Style
SheetCollectionBase& collection) | 63 void DocumentStyleSheetCollection::collectStyleSheets(StyleEngine* engine, Style
SheetCollectionBase& collection) |
| 56 { | 64 { |
| 65 collection.appendActiveStyleSheets(engine->injectedAuthorStyleSheets()); |
| 66 collection.appendActiveStyleSheets(engine->documentAuthorStyleSheets()); |
| 67 collectActiveCSSStyleSheetsFromSeamlessParents(collection, document()); |
| 68 |
| 57 DocumentOrderedList::iterator begin = m_styleSheetCandidateNodes.begin(); | 69 DocumentOrderedList::iterator begin = m_styleSheetCandidateNodes.begin(); |
| 58 DocumentOrderedList::iterator end = m_styleSheetCandidateNodes.end(); | 70 DocumentOrderedList::iterator end = m_styleSheetCandidateNodes.end(); |
| 59 for (DocumentOrderedList::iterator it = begin; it != end; ++it) { | 71 for (DocumentOrderedList::iterator it = begin; it != end; ++it) { |
| 60 Node* n = *it; | 72 Node* n = *it; |
| 61 StyleSheet* sheet = 0; | 73 StyleSheet* sheet = 0; |
| 62 CSSStyleSheet* activeSheet = 0; | 74 CSSStyleSheet* activeSheet = 0; |
| 63 if (n->nodeType() == Node::PROCESSING_INSTRUCTION_NODE && !document()->i
sHTMLDocument()) { | 75 if (n->nodeType() == Node::PROCESSING_INSTRUCTION_NODE && !document()->i
sHTMLDocument()) { |
| 64 // Processing instruction (XML documents only). | 76 // Processing instruction (XML documents only). |
| 65 // We don't support linking to embedded CSS stylesheets, see <https:
//bugs.webkit.org/show_bug.cgi?id=49281> for discussion. | 77 // We don't support linking to embedded CSS stylesheets, see <https:
//bugs.webkit.org/show_bug.cgi?id=49281> for discussion. |
| 66 ProcessingInstruction* pi = toProcessingInstruction(n); | 78 ProcessingInstruction* pi = toProcessingInstruction(n); |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 130 activeSheet = 0; | 142 activeSheet = 0; |
| 131 } | 143 } |
| 132 | 144 |
| 133 if (sheet) | 145 if (sheet) |
| 134 collection.appendSheetForList(sheet); | 146 collection.appendSheetForList(sheet); |
| 135 if (activeSheet) | 147 if (activeSheet) |
| 136 collection.appendActiveStyleSheet(activeSheet); | 148 collection.appendActiveStyleSheet(activeSheet); |
| 137 } | 149 } |
| 138 } | 150 } |
| 139 | 151 |
| 140 static void collectActiveCSSStyleSheetsFromSeamlessParents(StyleSheetCollectionB
ase& collection, Document* document) | |
| 141 { | |
| 142 HTMLIFrameElement* seamlessParentIFrame = document->seamlessParentIFrame(); | |
| 143 if (!seamlessParentIFrame) | |
| 144 return; | |
| 145 collection.appendActiveStyleSheets(seamlessParentIFrame->document().styleEng
ine()->activeAuthorStyleSheets()); | |
| 146 } | 152 } |
| 147 | |
| 148 bool DocumentStyleSheetCollection::updateActiveStyleSheets(StyleEngine* engine,
StyleResolverUpdateMode updateMode) | |
| 149 { | |
| 150 StyleSheetCollectionBase collection; | |
| 151 collection.appendActiveStyleSheets(engine->injectedAuthorStyleSheets()); | |
| 152 collection.appendActiveStyleSheets(engine->documentAuthorStyleSheets()); | |
| 153 collectActiveCSSStyleSheetsFromSeamlessParents(collection, document()); | |
| 154 collectStyleSheets(engine, collection); | |
| 155 | |
| 156 StyleSheetChange change; | |
| 157 analyzeStyleSheetChange(updateMode, collection, change); | |
| 158 | |
| 159 if (change.styleResolverUpdateType == Reconstruct) { | |
| 160 engine->clearResolver(); | |
| 161 } else if (StyleResolver* styleResolver = engine->resolverIfExists()) { | |
| 162 // FIXME: We might have already had styles in child treescope. In this c
ase, we cannot use buildScopedStyleTreeInDocumentOrder. | |
| 163 // Need to change "false" to some valid condition. | |
| 164 styleResolver->setBuildScopedStyleTreeInDocumentOrder(false); | |
| 165 if (change.styleResolverUpdateType != Additive) { | |
| 166 ASSERT(change.styleResolverUpdateType == Reset || change.styleResolv
erUpdateType == ResetStyleResolverAndFontSelector); | |
| 167 resetAllRuleSetsInTreeScope(styleResolver); | |
| 168 if (change.styleResolverUpdateType == ResetStyleResolverAndFontSelec
tor) | |
| 169 styleResolver->resetFontSelector(); | |
| 170 styleResolver->removePendingAuthorStyleSheets(m_activeAuthorStyleShe
ets); | |
| 171 styleResolver->lazyAppendAuthorStyleSheets(0, collection.activeAutho
rStyleSheets()); | |
| 172 } else { | |
| 173 styleResolver->lazyAppendAuthorStyleSheets(m_activeAuthorStyleSheets
.size(), collection.activeAuthorStyleSheets()); | |
| 174 } | |
| 175 } | |
| 176 m_scopingNodesForStyleScoped.didRemoveScopingNodes(); | |
| 177 collection.swap(*this); | |
| 178 updateUsesRemUnits(); | |
| 179 | |
| 180 return change.requiresFullStyleRecalc; | |
| 181 } | |
| 182 | |
| 183 } | |
| OLD | NEW |