OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
3 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc.
All rights reserved. | 3 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc.
All rights reserved. |
4 * | 4 * |
5 * This library is free software; you can redistribute it and/or | 5 * This library is free software; you can redistribute it and/or |
6 * modify it under the terms of the GNU Library General Public | 6 * modify it under the terms of the GNU Library General Public |
7 * License as published by the Free Software Foundation; either | 7 * License as published by the Free Software Foundation; either |
8 * version 2 of the License, or (at your option) any later version. | 8 * version 2 of the License, or (at your option) any later version. |
9 * | 9 * |
10 * This library is distributed in the hope that it will be useful, | 10 * This library is distributed in the hope that it will be useful, |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
98 WillBeHeapVector<RuleFeature> uncommonAttributeRules; | 98 WillBeHeapVector<RuleFeature> uncommonAttributeRules; |
99 | 99 |
100 protected: | 100 protected: |
101 DescendantInvalidationSet* invalidationSetForSelector(const CSSSelector&); | 101 DescendantInvalidationSet* invalidationSetForSelector(const CSSSelector&); |
102 | 102 |
103 private: | 103 private: |
104 using InvalidationSetMap = WillBeHeapHashMap<AtomicString, RefPtrWillBeMembe
r<DescendantInvalidationSet>>; | 104 using InvalidationSetMap = WillBeHeapHashMap<AtomicString, RefPtrWillBeMembe
r<DescendantInvalidationSet>>; |
105 using PseudoTypeInvalidationSetMap = WillBeHeapHashMap<CSSSelector::PseudoTy
pe, RefPtrWillBeMember<DescendantInvalidationSet>, WTF::IntHash<unsigned>, WTF::
UnsignedWithZeroKeyHashTraits<unsigned>>; | 105 using PseudoTypeInvalidationSetMap = WillBeHeapHashMap<CSSSelector::PseudoTy
pe, RefPtrWillBeMember<DescendantInvalidationSet>, WTF::IntHash<unsigned>, WTF::
UnsignedWithZeroKeyHashTraits<unsigned>>; |
106 | 106 |
107 struct FeatureMetadata { | 107 struct FeatureMetadata { |
| 108 DISALLOW_ALLOCATION(); |
108 FeatureMetadata() | 109 FeatureMetadata() |
109 : usesFirstLineRules(false) | 110 : usesFirstLineRules(false) |
110 , usesWindowInactiveSelector(false) | 111 , usesWindowInactiveSelector(false) |
111 , foundSiblingSelector(false) | 112 , foundSiblingSelector(false) |
112 , maxDirectAdjacentSelectors(0) | 113 , maxDirectAdjacentSelectors(0) |
113 { } | 114 { } |
114 void add(const FeatureMetadata& other); | 115 void add(const FeatureMetadata& other); |
115 void clear(); | 116 void clear(); |
116 | 117 |
117 bool usesFirstLineRules; | 118 bool usesFirstLineRules; |
118 bool usesWindowInactiveSelector; | 119 bool usesWindowInactiveSelector; |
119 bool foundSiblingSelector; | 120 bool foundSiblingSelector; |
120 unsigned maxDirectAdjacentSelectors; | 121 unsigned maxDirectAdjacentSelectors; |
121 }; | 122 }; |
122 | 123 |
123 void collectFeaturesFromSelector(const CSSSelector&, FeatureMetadata&); | 124 void collectFeaturesFromSelector(const CSSSelector&, FeatureMetadata&); |
124 | 125 |
125 DescendantInvalidationSet& ensureClassInvalidationSet(const AtomicString& cl
assName); | 126 DescendantInvalidationSet& ensureClassInvalidationSet(const AtomicString& cl
assName); |
126 DescendantInvalidationSet& ensureAttributeInvalidationSet(const AtomicString
& attributeName); | 127 DescendantInvalidationSet& ensureAttributeInvalidationSet(const AtomicString
& attributeName); |
127 DescendantInvalidationSet& ensureIdInvalidationSet(const AtomicString& attri
buteName); | 128 DescendantInvalidationSet& ensureIdInvalidationSet(const AtomicString& attri
buteName); |
128 DescendantInvalidationSet& ensurePseudoInvalidationSet(CSSSelector::PseudoTy
pe); | 129 DescendantInvalidationSet& ensurePseudoInvalidationSet(CSSSelector::PseudoTy
pe); |
129 | 130 |
130 void updateInvalidationSets(const RuleData&); | 131 void updateInvalidationSets(const RuleData&); |
131 void updateInvalidationSetsForContentAttribute(const RuleData&); | 132 void updateInvalidationSetsForContentAttribute(const RuleData&); |
132 | 133 |
133 struct InvalidationSetFeatures { | 134 struct InvalidationSetFeatures { |
| 135 DISALLOW_ALLOCATION(); |
134 InvalidationSetFeatures() | 136 InvalidationSetFeatures() |
135 : customPseudoElement(false) | 137 : customPseudoElement(false) |
136 , hasBeforeOrAfter(false) | 138 , hasBeforeOrAfter(false) |
137 , treeBoundaryCrossing(false) | 139 , treeBoundaryCrossing(false) |
138 , adjacent(false) | 140 , adjacent(false) |
139 , insertionPointCrossing(false) | 141 , insertionPointCrossing(false) |
140 , forceSubtree(false) | 142 , forceSubtree(false) |
141 { } | 143 { } |
142 | 144 |
143 bool useSubtreeInvalidation() const { return forceSubtree || adjacent; } | 145 bool useSubtreeInvalidation() const { return forceSubtree || adjacent; } |
(...skipping 26 matching lines...) Expand all Loading... |
170 InvalidationSetMap m_attributeInvalidationSets; | 172 InvalidationSetMap m_attributeInvalidationSets; |
171 InvalidationSetMap m_idInvalidationSets; | 173 InvalidationSetMap m_idInvalidationSets; |
172 PseudoTypeInvalidationSetMap m_pseudoInvalidationSets; | 174 PseudoTypeInvalidationSetMap m_pseudoInvalidationSets; |
173 }; | 175 }; |
174 | 176 |
175 } // namespace blink | 177 } // namespace blink |
176 | 178 |
177 WTF_ALLOW_MOVE_AND_INIT_WITH_MEM_FUNCTIONS(blink::RuleFeature); | 179 WTF_ALLOW_MOVE_AND_INIT_WITH_MEM_FUNCTIONS(blink::RuleFeature); |
178 | 180 |
179 #endif // RuleFeature_h | 181 #endif // RuleFeature_h |
OLD | NEW |