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 23 matching lines...) Expand all Loading... |
34 RecursionData() | 34 RecursionData() |
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 bool m_foundInvalidationSet; | 45 bool m_foundInvalidationSet; |
45 bool m_invalidateCustomPseudo; | 46 bool m_invalidateCustomPseudo; |
46 }; | 47 }; |
47 | 48 |
48 class RecursionCheckpoint { | 49 class RecursionCheckpoint { |
49 public: | 50 public: |
50 RecursionCheckpoint(RecursionData* data) | 51 RecursionCheckpoint(RecursionData* data) |
51 : m_prevClassLength(data->m_invalidationClasses.size()), | 52 : m_prevClassLength(data->m_invalidationClasses.size()), |
52 m_prevAttributeLength(data->m_invalidationAttributes.size()), | 53 m_prevAttributeLength(data->m_invalidationAttributes.size()), |
| 54 m_prevIdLength(data->m_invalidationIds.size()), |
53 m_prevFoundInvalidationSet(data->m_foundInvalidationSet), | 55 m_prevFoundInvalidationSet(data->m_foundInvalidationSet), |
54 m_prevInvalidateCustomPseudo(data->m_invalidateCustomPseudo), | 56 m_prevInvalidateCustomPseudo(data->m_invalidateCustomPseudo), |
55 m_data(data) | 57 m_data(data) |
56 { } | 58 { } |
57 ~RecursionCheckpoint() | 59 ~RecursionCheckpoint() |
58 { | 60 { |
59 m_data->m_invalidationClasses.remove(m_prevClassLength, m_data->m_in
validationClasses.size() - m_prevClassLength); | 61 m_data->m_invalidationClasses.remove(m_prevClassLength, m_data->m_in
validationClasses.size() - m_prevClassLength); |
60 m_data->m_invalidationAttributes.remove(m_prevAttributeLength, m_dat
a->m_invalidationAttributes.size() - m_prevAttributeLength); | 62 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); |
61 m_data->m_foundInvalidationSet = m_prevFoundInvalidationSet; | 64 m_data->m_foundInvalidationSet = m_prevFoundInvalidationSet; |
62 m_data->m_invalidateCustomPseudo = m_prevInvalidateCustomPseudo; | 65 m_data->m_invalidateCustomPseudo = m_prevInvalidateCustomPseudo; |
63 } | 66 } |
64 | 67 |
65 private: | 68 private: |
66 int m_prevClassLength; | 69 int m_prevClassLength; |
67 int m_prevAttributeLength; | 70 int m_prevAttributeLength; |
| 71 int m_prevIdLength; |
68 bool m_prevFoundInvalidationSet; | 72 bool m_prevFoundInvalidationSet; |
69 bool m_prevInvalidateCustomPseudo; | 73 bool m_prevInvalidateCustomPseudo; |
70 RecursionData* m_data; | 74 RecursionData* m_data; |
71 }; | 75 }; |
72 | 76 |
73 typedef Vector<RefPtr<DescendantInvalidationSet> > InvalidationList; | 77 typedef Vector<RefPtr<DescendantInvalidationSet> > InvalidationList; |
74 typedef HashMap<Element*, OwnPtr<InvalidationList> > PendingInvalidationMap; | 78 typedef HashMap<Element*, OwnPtr<InvalidationList> > PendingInvalidationMap; |
75 | 79 |
76 InvalidationList& ensurePendingInvalidationList(Element&); | 80 InvalidationList& ensurePendingInvalidationList(Element&); |
77 | 81 |
78 PendingInvalidationMap m_pendingInvalidationMap; | 82 PendingInvalidationMap m_pendingInvalidationMap; |
79 RecursionData m_recursionData; | 83 RecursionData m_recursionData; |
80 }; | 84 }; |
81 | 85 |
82 } // namespace WebCore | 86 } // namespace WebCore |
83 | 87 |
84 #endif // StyleInvalidator_h | 88 #endif // StyleInvalidator_h |
OLD | NEW |