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 #ifndef StyleInvalidator_h | 5 #ifndef StyleInvalidator_h |
6 #define StyleInvalidator_h | 6 #define StyleInvalidator_h |
7 | 7 |
8 #include "heap/Heap.h" | 8 #include "heap/Heap.h" |
9 | 9 |
10 namespace WebCore { | 10 namespace WebCore { |
(...skipping 24 matching lines...) Expand all Loading... |
35 : m_foundInvalidationSet(false) | 35 : m_foundInvalidationSet(false) |
36 , m_invalidateCustomPseudo(false) | 36 , m_invalidateCustomPseudo(false) |
37 { } | 37 { } |
38 void pushInvalidationSet(const DescendantInvalidationSet&); | 38 void pushInvalidationSet(const DescendantInvalidationSet&); |
39 bool matchesCurrentInvalidationSets(Element&); | 39 bool matchesCurrentInvalidationSets(Element&); |
40 bool foundInvalidationSet() { return m_foundInvalidationSet; } | 40 bool foundInvalidationSet() { return m_foundInvalidationSet; } |
41 | 41 |
42 Vector<AtomicString> m_invalidationClasses; | 42 Vector<AtomicString> m_invalidationClasses; |
43 Vector<AtomicString> m_invalidationAttributes; | 43 Vector<AtomicString> m_invalidationAttributes; |
44 Vector<AtomicString> m_invalidationIds; | 44 Vector<AtomicString> m_invalidationIds; |
| 45 Vector<AtomicString> m_invalidationTagNames; |
45 bool m_foundInvalidationSet; | 46 bool m_foundInvalidationSet; |
46 bool m_invalidateCustomPseudo; | 47 bool m_invalidateCustomPseudo; |
47 }; | 48 }; |
48 | 49 |
49 class RecursionCheckpoint { | 50 class RecursionCheckpoint { |
50 public: | 51 public: |
51 RecursionCheckpoint(RecursionData* data) | 52 RecursionCheckpoint(RecursionData* data) |
52 : m_prevClassLength(data->m_invalidationClasses.size()), | 53 : m_prevClassLength(data->m_invalidationClasses.size()), |
53 m_prevAttributeLength(data->m_invalidationAttributes.size()), | 54 m_prevAttributeLength(data->m_invalidationAttributes.size()), |
54 m_prevIdLength(data->m_invalidationIds.size()), | 55 m_prevIdLength(data->m_invalidationIds.size()), |
| 56 m_prevTagNameLength(data->m_invalidationTagNames.size()), |
55 m_prevFoundInvalidationSet(data->m_foundInvalidationSet), | 57 m_prevFoundInvalidationSet(data->m_foundInvalidationSet), |
56 m_prevInvalidateCustomPseudo(data->m_invalidateCustomPseudo), | 58 m_prevInvalidateCustomPseudo(data->m_invalidateCustomPseudo), |
57 m_data(data) | 59 m_data(data) |
58 { } | 60 { } |
59 ~RecursionCheckpoint() | 61 ~RecursionCheckpoint() |
60 { | 62 { |
61 m_data->m_invalidationClasses.remove(m_prevClassLength, m_data->m_in
validationClasses.size() - m_prevClassLength); | 63 m_data->m_invalidationClasses.remove(m_prevClassLength, m_data->m_in
validationClasses.size() - m_prevClassLength); |
62 m_data->m_invalidationAttributes.remove(m_prevAttributeLength, m_dat
a->m_invalidationAttributes.size() - m_prevAttributeLength); | 64 m_data->m_invalidationAttributes.remove(m_prevAttributeLength, m_dat
a->m_invalidationAttributes.size() - m_prevAttributeLength); |
63 m_data->m_invalidationIds.remove(m_prevIdLength, m_data->m_invalidat
ionIds.size() - m_prevIdLength); | 65 m_data->m_invalidationIds.remove(m_prevIdLength, m_data->m_invalidat
ionIds.size() - m_prevIdLength); |
| 66 m_data->m_invalidationTagNames.remove(m_prevTagNameLength, m_data->m
_invalidationTagNames.size() - m_prevTagNameLength); |
64 m_data->m_foundInvalidationSet = m_prevFoundInvalidationSet; | 67 m_data->m_foundInvalidationSet = m_prevFoundInvalidationSet; |
65 m_data->m_invalidateCustomPseudo = m_prevInvalidateCustomPseudo; | 68 m_data->m_invalidateCustomPseudo = m_prevInvalidateCustomPseudo; |
66 } | 69 } |
67 | 70 |
68 private: | 71 private: |
69 int m_prevClassLength; | 72 int m_prevClassLength; |
70 int m_prevAttributeLength; | 73 int m_prevAttributeLength; |
71 int m_prevIdLength; | 74 int m_prevIdLength; |
| 75 int m_prevTagNameLength; |
72 bool m_prevFoundInvalidationSet; | 76 bool m_prevFoundInvalidationSet; |
73 bool m_prevInvalidateCustomPseudo; | 77 bool m_prevInvalidateCustomPseudo; |
74 RecursionData* m_data; | 78 RecursionData* m_data; |
75 }; | 79 }; |
76 | 80 |
77 typedef Vector<RefPtr<DescendantInvalidationSet> > InvalidationList; | 81 typedef Vector<RefPtr<DescendantInvalidationSet> > InvalidationList; |
78 typedef HashMap<Element*, OwnPtr<InvalidationList> > PendingInvalidationMap; | 82 typedef HashMap<Element*, OwnPtr<InvalidationList> > PendingInvalidationMap; |
79 | 83 |
80 InvalidationList& ensurePendingInvalidationList(Element&); | 84 InvalidationList& ensurePendingInvalidationList(Element&); |
81 | 85 |
82 PendingInvalidationMap m_pendingInvalidationMap; | 86 PendingInvalidationMap m_pendingInvalidationMap; |
83 RecursionData m_recursionData; | 87 RecursionData m_recursionData; |
84 }; | 88 }; |
85 | 89 |
86 } // namespace WebCore | 90 } // namespace WebCore |
87 | 91 |
88 #endif // StyleInvalidator_h | 92 #endif // StyleInvalidator_h |
OLD | NEW |