OLD | NEW |
---|---|
(Empty) | |
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 | |
3 // found in the LICENSE file. | |
4 | |
5 #ifndef StyleInvalidationTreeWalk_h | |
6 #define StyleInvalidationTreeWalk_h | |
7 | |
8 #include "core/css/RuleFeature.h" | |
9 | |
10 namespace WebCore { | |
11 | |
12 class StyleInvalidationTreeWalk { | |
13 public: | |
14 static void computeStyleInvalidation(Document&, RuleFeatureSet*); | |
esprehn
2014/03/19 22:09:04
No static, this should work like the ChildInsertio
chrishtr
2014/03/19 22:49:39
The point of the static is to enforce invalidator
esprehn
2014/03/19 23:04:14
That's not the correct way to solve this. We have
chrishtr
2014/03/20 00:08:35
Matching style is good. Done.
| |
15 | |
16 private: | |
17 StyleInvalidationTreeWalk(const RuleFeatureSet*); | |
18 | |
19 bool invalidateStyle(Element*); | |
20 bool invalidateStyleForChildren(Element*); | |
21 | |
22 bool checkInvalidationSetsAgainstElement(Element*); | |
esprehn
2014/03/19 22:09:04
These should all be references.
chrishtr
2014/03/19 22:49:39
Done.
| |
23 | |
24 class RecursionCheckpoint; | |
25 class RecursionData { | |
26 public: | |
27 RecursionData() : m_foundInvalidationSet(false) { } | |
28 void pushInvalidationSet(const DescendantInvalidationSet&); | |
29 bool matchesCurrentInvalidationSets(Element*); | |
30 bool foundInvalidationSet() { return m_foundInvalidationSet; } | |
31 | |
32 private: | |
33 Vector<AtomicString> m_invalidationClasses; | |
34 bool m_foundInvalidationSet; | |
35 friend class RecursionCheckpoint; | |
esprehn
2014/03/19 22:09:04
No friends please.
chrishtr
2014/03/19 22:49:39
Done.
| |
36 }; | |
37 | |
38 class RecursionCheckpoint { | |
39 public: | |
40 RecursionCheckpoint(RecursionData* data) | |
41 : m_prevClassLength(data->m_invalidationClasses.size()), | |
42 m_prevFoundInvalidationSet(data->m_foundInvalidationSet), | |
43 m_data(data) | |
44 { } | |
45 ~RecursionCheckpoint() | |
46 { | |
47 m_data->m_invalidationClasses.remove(m_prevClassLength, m_data->m_in validationClasses.size() - m_prevClassLength); | |
48 m_data->m_foundInvalidationSet = m_prevFoundInvalidationSet; | |
49 } | |
50 | |
51 private: | |
52 int m_prevClassLength; | |
53 bool m_prevFoundInvalidationSet; | |
54 RecursionData* m_data; | |
55 }; | |
56 | |
57 const RuleFeatureSet* m_featureSet; | |
58 RecursionData m_recursionData; | |
59 }; | |
60 | |
61 } // namespace WebCore | |
62 | |
63 #endif // StyleInvalidationTreeWalk_h | |
OLD | NEW |