OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "core/css/invalidation/StyleInvalidator.h" | 5 #include "core/css/invalidation/StyleInvalidator.h" |
6 | 6 |
7 #include "core/css/invalidation/InvalidationSet.h" | 7 #include "core/css/invalidation/InvalidationSet.h" |
8 #include "core/dom/Document.h" | 8 #include "core/dom/Document.h" |
9 #include "core/dom/Element.h" | 9 #include "core/dom/Element.h" |
10 #include "core/dom/ElementTraversal.h" | 10 #include "core/dom/ElementTraversal.h" |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
163 void StyleInvalidator::SiblingData::pushInvalidationSet(const SiblingInvalidatio
nSet& invalidationSet) | 163 void StyleInvalidator::SiblingData::pushInvalidationSet(const SiblingInvalidatio
nSet& invalidationSet) |
164 { | 164 { |
165 unsigned invalidationLimit; | 165 unsigned invalidationLimit; |
166 if (invalidationSet.maxDirectAdjacentSelectors() == UINT_MAX) | 166 if (invalidationSet.maxDirectAdjacentSelectors() == UINT_MAX) |
167 invalidationLimit = UINT_MAX; | 167 invalidationLimit = UINT_MAX; |
168 else | 168 else |
169 invalidationLimit = m_elementIndex + invalidationSet.maxDirectAdjacentSe
lectors(); | 169 invalidationLimit = m_elementIndex + invalidationSet.maxDirectAdjacentSe
lectors(); |
170 m_invalidationEntries.append(Entry(&invalidationSet, invalidationLimit)); | 170 m_invalidationEntries.append(Entry(&invalidationSet, invalidationLimit)); |
171 } | 171 } |
172 | 172 |
173 bool StyleInvalidator::SiblingData::matchCurrentInvalidationSets(Element& elemen
t, RecursionData& recursionData) const | 173 bool StyleInvalidator::SiblingData::matchCurrentInvalidationSets(Element& elemen
t, RecursionData& recursionData) |
174 { | 174 { |
175 bool thisElementNeedsStyleRecalc = false; | 175 bool thisElementNeedsStyleRecalc = false; |
176 ASSERT(!recursionData.wholeSubtreeInvalid()); | 176 ASSERT(!recursionData.wholeSubtreeInvalid()); |
177 | 177 |
178 unsigned index = 0; | 178 unsigned index = 0; |
179 while (index < m_invalidationEntries.size()) { | 179 while (index < m_invalidationEntries.size()) { |
180 if (m_elementIndex > m_invalidationEntries[index].m_invalidationLimit) { | 180 if (m_elementIndex > m_invalidationEntries[index].m_invalidationLimit) { |
181 // m_invalidationEntries[index] only applies to earlier siblings. Re
move it. | 181 // m_invalidationEntries[index] only applies to earlier siblings. Re
move it. |
182 m_invalidationEntries[index] = m_invalidationEntries.last(); | 182 m_invalidationEntries[index] = m_invalidationEntries.last(); |
183 m_invalidationEntries.removeLast(); | 183 m_invalidationEntries.removeLast(); |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
327 distributedNode->setNeedsStyleRecalc(LocalStyleChange, StyleChangeRe
asonForTracing::create(StyleChangeReason::StyleInvalidator)); | 327 distributedNode->setNeedsStyleRecalc(LocalStyleChange, StyleChangeRe
asonForTracing::create(StyleChangeReason::StyleInvalidator)); |
328 } | 328 } |
329 } | 329 } |
330 | 330 |
331 DEFINE_TRACE(StyleInvalidator) | 331 DEFINE_TRACE(StyleInvalidator) |
332 { | 332 { |
333 visitor->trace(m_pendingInvalidationMap); | 333 visitor->trace(m_pendingInvalidationMap); |
334 } | 334 } |
335 | 335 |
336 } // namespace blink | 336 } // namespace blink |
OLD | NEW |