| 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 | 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012 Apple Inc. All |
| 7 * rights reserved. | 7 * rights reserved. |
| 8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. | 8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. |
| 9 * (http://www.torchmobile.com/) | 9 * (http://www.torchmobile.com/) |
| 10 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) | 10 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) |
| (...skipping 29 matching lines...) Expand all Loading... |
| 40 | 40 |
| 41 namespace blink { | 41 namespace blink { |
| 42 | 42 |
| 43 using namespace HTMLNames; | 43 using namespace HTMLNames; |
| 44 | 44 |
| 45 ShadowTreeStyleSheetCollection::ShadowTreeStyleSheetCollection( | 45 ShadowTreeStyleSheetCollection::ShadowTreeStyleSheetCollection( |
| 46 ShadowRoot& shadowRoot) | 46 ShadowRoot& shadowRoot) |
| 47 : TreeScopeStyleSheetCollection(shadowRoot) {} | 47 : TreeScopeStyleSheetCollection(shadowRoot) {} |
| 48 | 48 |
| 49 void ShadowTreeStyleSheetCollection::collectStyleSheets( | 49 void ShadowTreeStyleSheetCollection::collectStyleSheets( |
| 50 StyleEngine& engine, | |
| 51 StyleSheetCollection& collection) { | 50 StyleSheetCollection& collection) { |
| 52 for (Node* n : m_styleSheetCandidateNodes) { | 51 for (Node* n : m_styleSheetCandidateNodes) { |
| 53 StyleSheetCandidate candidate(*n); | 52 StyleSheetCandidate candidate(*n); |
| 54 DCHECK(!candidate.isXSL()); | 53 DCHECK(!candidate.isXSL()); |
| 55 | 54 |
| 56 StyleSheet* sheet = candidate.sheet(); | 55 StyleSheet* sheet = candidate.sheet(); |
| 57 if (!sheet) | 56 if (!sheet) |
| 58 continue; | 57 continue; |
| 59 | 58 |
| 60 collection.appendSheetForList(sheet); | 59 collection.appendSheetForList(sheet); |
| 61 if (candidate.canBeActivated(nullAtom)) | 60 if (candidate.canBeActivated(nullAtom)) { |
| 62 collection.appendActiveStyleSheet(toCSSStyleSheet(sheet)); | 61 CSSStyleSheet* cssSheet = toCSSStyleSheet(sheet); |
| 62 collection.appendActiveStyleSheet(std::make_pair( |
| 63 cssSheet, document().styleEngine().ruleSetForSheet(*cssSheet))); |
| 64 } |
| 63 } | 65 } |
| 64 } | 66 } |
| 65 | 67 |
| 66 void ShadowTreeStyleSheetCollection::updateActiveStyleSheets( | 68 void ShadowTreeStyleSheetCollection::updateActiveStyleSheets() { |
| 67 StyleEngine& engine, | |
| 68 StyleResolverUpdateMode updateMode) { | |
| 69 // StyleSheetCollection is GarbageCollected<>, allocate it on the heap. | 69 // StyleSheetCollection is GarbageCollected<>, allocate it on the heap. |
| 70 StyleSheetCollection* collection = StyleSheetCollection::create(); | 70 StyleSheetCollection* collection = StyleSheetCollection::create(); |
| 71 collectStyleSheets(engine, *collection); | 71 collectStyleSheets(*collection); |
| 72 | 72 applyActiveStyleSheetChanges(*collection); |
| 73 StyleSheetChange change; | |
| 74 analyzeStyleSheetChange(updateMode, collection->activeAuthorStyleSheets(), | |
| 75 change); | |
| 76 | |
| 77 if (StyleResolver* styleResolver = engine.resolver()) { | |
| 78 if (change.styleResolverUpdateType != Additive) { | |
| 79 // We should not destroy StyleResolver when we find any stylesheet update | |
| 80 // in a shadow tree. In this case, we will reset rulesets created from | |
| 81 // style elements in the shadow tree. | |
| 82 engine.resetAuthorStyle(treeScope()); | |
| 83 styleResolver->removePendingAuthorStyleSheets(m_activeAuthorStyleSheets); | |
| 84 styleResolver->lazyAppendAuthorStyleSheets( | |
| 85 0, collection->activeAuthorStyleSheets()); | |
| 86 } else { | |
| 87 styleResolver->lazyAppendAuthorStyleSheets( | |
| 88 m_activeAuthorStyleSheets.size(), | |
| 89 collection->activeAuthorStyleSheets()); | |
| 90 } | |
| 91 } | |
| 92 if (change.requiresFullStyleRecalc) | |
| 93 toShadowRoot(treeScope().rootNode()) | |
| 94 .host() | |
| 95 .setNeedsStyleRecalc(SubtreeStyleChange, | |
| 96 StyleChangeReasonForTracing::create( | |
| 97 StyleChangeReason::ActiveStylesheetsUpdate)); | |
| 98 | |
| 99 collection->swap(*this); | |
| 100 collection->dispose(); | |
| 101 } | 73 } |
| 102 | 74 |
| 103 } // namespace blink | 75 } // namespace blink |
| OLD | NEW |