| 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 |