Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(10)

Side by Side Diff: third_party/WebKit/Source/core/css/invalidation/StyleInvalidator.cpp

Issue 2699883002: Add type selector invalidation set for ruleset invalidations. (Closed)
Patch Set: Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 15 matching lines...) Expand all
26 // with InvalidationSet to avoid additional GOT lookup cost. 26 // with InvalidationSet to avoid additional GOT lookup cost.
27 static const unsigned char* s_tracingEnabled = nullptr; 27 static const unsigned char* s_tracingEnabled = nullptr;
28 28
29 #define TRACE_STYLE_INVALIDATOR_INVALIDATION_IF_ENABLED(element, reason) \ 29 #define TRACE_STYLE_INVALIDATOR_INVALIDATION_IF_ENABLED(element, reason) \
30 if (UNLIKELY(*s_tracingEnabled)) \ 30 if (UNLIKELY(*s_tracingEnabled)) \
31 TRACE_STYLE_INVALIDATOR_INVALIDATION(element, reason); 31 TRACE_STYLE_INVALIDATOR_INVALIDATION(element, reason);
32 32
33 void StyleInvalidator::invalidate(Document& document) { 33 void StyleInvalidator::invalidate(Document& document) {
34 RecursionData recursionData; 34 RecursionData recursionData;
35 SiblingData siblingData; 35 SiblingData siblingData;
36 if (UNLIKELY(document.needsStyleInvalidation()))
37 pushInvalidationSetsForContainerNode(document, recursionData, siblingData);
36 if (Element* documentElement = document.documentElement()) 38 if (Element* documentElement = document.documentElement())
37 invalidate(*documentElement, recursionData, siblingData); 39 invalidate(*documentElement, recursionData, siblingData);
38 document.clearChildNeedsStyleInvalidation(); 40 document.clearChildNeedsStyleInvalidation();
39 document.clearNeedsStyleInvalidation(); 41 document.clearNeedsStyleInvalidation();
40 m_pendingInvalidationMap.clear(); 42 m_pendingInvalidationMap.clear();
41 } 43 }
42 44
43 void StyleInvalidator::scheduleInvalidationSetsForNode( 45 void StyleInvalidator::scheduleInvalidationSetsForNode(
44 const InvalidationLists& invalidationLists, 46 const InvalidationLists& invalidationLists,
45 ContainerNode& node) { 47 ContainerNode& node) {
(...skipping 382 matching lines...) Expand 10 before | Expand all | Expand 10 after
428 continue; 430 continue;
429 if (recursionData.matchesCurrentInvalidationSetsAsSlotted( 431 if (recursionData.matchesCurrentInvalidationSetsAsSlotted(
430 toElement(*distributedNode))) 432 toElement(*distributedNode)))
431 distributedNode->setNeedsStyleRecalc( 433 distributedNode->setNeedsStyleRecalc(
432 LocalStyleChange, StyleChangeReasonForTracing::create( 434 LocalStyleChange, StyleChangeReasonForTracing::create(
433 StyleChangeReason::StyleInvalidator)); 435 StyleChangeReason::StyleInvalidator));
434 } 436 }
435 } 437 }
436 438
437 } // namespace blink 439 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698