OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
4 * (C) 2001 Dirk Mueller (mueller@kde.org) | 4 * (C) 2001 Dirk Mueller (mueller@kde.org) |
5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org) | 5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org) |
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012 Apple Inc. All r
ights reserved. | 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012 Apple Inc. All r
ights reserved. |
7 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t
orchmobile.com/) | 7 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t
orchmobile.com/) |
8 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) | 8 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) |
9 * Copyright (C) 2011 Google Inc. All rights reserved. | 9 * Copyright (C) 2011 Google Inc. All rights reserved. |
10 * | 10 * |
(...skipping 12 matching lines...) Expand all Loading... |
23 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | 23 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
24 * Boston, MA 02110-1301, USA. | 24 * Boston, MA 02110-1301, USA. |
25 * | 25 * |
26 */ | 26 */ |
27 | 27 |
28 #ifndef StyleEngine_h | 28 #ifndef StyleEngine_h |
29 #define StyleEngine_h | 29 #define StyleEngine_h |
30 | 30 |
31 #include "core/CoreExport.h" | 31 #include "core/CoreExport.h" |
32 #include "core/css/CSSFontSelectorClient.h" | 32 #include "core/css/CSSFontSelectorClient.h" |
| 33 #include "core/css/CSSGlobalRuleSet.h" |
33 #include "core/css/invalidation/StyleInvalidator.h" | 34 #include "core/css/invalidation/StyleInvalidator.h" |
34 #include "core/css/resolver/StyleResolver.h" | 35 #include "core/css/resolver/StyleResolver.h" |
35 #include "core/css/resolver/StyleResolverStats.h" | 36 #include "core/css/resolver/StyleResolverStats.h" |
36 #include "core/dom/Document.h" | 37 #include "core/dom/Document.h" |
37 #include "core/dom/DocumentOrderedList.h" | 38 #include "core/dom/DocumentOrderedList.h" |
38 #include "core/dom/DocumentStyleSheetCollection.h" | 39 #include "core/dom/DocumentStyleSheetCollection.h" |
39 #include "core/dom/StyleEngineContext.h" | 40 #include "core/dom/StyleEngineContext.h" |
40 #include "platform/heap/Handle.h" | 41 #include "platform/heap/Handle.h" |
41 #include "wtf/Allocator.h" | 42 #include "wtf/Allocator.h" |
42 #include "wtf/ListHashSet.h" | 43 #include "wtf/ListHashSet.h" |
43 #include "wtf/TemporaryChange.h" | 44 #include "wtf/TemporaryChange.h" |
44 #include "wtf/Vector.h" | 45 #include "wtf/Vector.h" |
45 #include "wtf/text/WTFString.h" | 46 #include "wtf/text/WTFString.h" |
46 | 47 |
47 namespace blink { | 48 namespace blink { |
48 | 49 |
49 class CSSFontSelector; | 50 class CSSFontSelector; |
50 class CSSStyleSheet; | 51 class CSSStyleSheet; |
| 52 class MediaQueryEvaluator; |
51 class Node; | 53 class Node; |
52 class RuleFeatureSet; | 54 class RuleFeatureSet; |
53 class ShadowTreeStyleSheetCollection; | 55 class ShadowTreeStyleSheetCollection; |
54 class StyleRuleFontFace; | 56 class StyleRuleFontFace; |
55 class StyleSheet; | 57 class StyleSheet; |
56 class StyleSheetContents; | 58 class StyleSheetContents; |
| 59 class ViewportStyleResolver; |
57 | 60 |
58 class CORE_EXPORT StyleEngine final : public GarbageCollectedFinalized<StyleEngi
ne>, public CSSFontSelectorClient { | 61 class CORE_EXPORT StyleEngine final : public GarbageCollectedFinalized<StyleEngi
ne>, public CSSFontSelectorClient { |
59 USING_GARBAGE_COLLECTED_MIXIN(StyleEngine); | 62 USING_GARBAGE_COLLECTED_MIXIN(StyleEngine); |
60 public: | 63 public: |
61 | 64 |
62 class IgnoringPendingStylesheet : public TemporaryChange<bool> { | 65 class IgnoringPendingStylesheet : public TemporaryChange<bool> { |
63 DISALLOW_NEW(); | 66 DISALLOW_NEW(); |
64 public: | 67 public: |
65 IgnoringPendingStylesheet(StyleEngine& engine) | 68 IgnoringPendingStylesheet(StyleEngine& engine) |
66 : TemporaryChange<bool>(engine.m_ignorePendingStylesheets, true) | 69 : TemporaryChange<bool>(engine.m_ignorePendingStylesheets, true) |
67 { | 70 { |
68 } | 71 } |
69 }; | 72 }; |
70 | 73 |
71 friend class IgnoringPendingStylesheet; | 74 friend class IgnoringPendingStylesheet; |
72 | 75 |
73 static StyleEngine* create(Document& document) { return new StyleEngine(docu
ment); } | 76 static StyleEngine* create(Document& document) { return new StyleEngine(docu
ment); } |
74 | 77 |
75 ~StyleEngine(); | 78 ~StyleEngine(); |
76 | 79 |
77 const HeapVector<Member<StyleSheet>>& styleSheetsForStyleSheetList(TreeScope
&); | 80 const HeapVector<Member<StyleSheet>>& styleSheetsForStyleSheetList(TreeScope
&); |
| 81 const HeapVector<Member<CSSStyleSheet>>& injectedAuthorStyleSheets() const {
return m_injectedAuthorStyleSheets; } |
| 82 const ActiveStyleSheetVector activeStyleSheetsForInspector(); |
78 | 83 |
79 const HeapVector<Member<CSSStyleSheet>>& injectedAuthorStyleSheets() const {
return m_injectedAuthorStyleSheets; } | 84 void setNeedsActiveStyleUpdate(TreeScope&); |
| 85 void setNeedsGlobalRuleSetUpdate() { m_needsGlobalRuleSetUpdate = true; } |
| 86 bool needsActiveStyleUpdate() const { return needsActiveStyleSheetUpdate() |
| m_needsGlobalRuleSetUpdate; } |
| 87 void updateActiveStyle(); |
80 | 88 |
81 const HeapVector<Member<CSSStyleSheet>> activeStyleSheetsForInspector() cons
t; | |
82 | |
83 void setNeedsActiveStyleUpdate(StyleSheet*, StyleResolverUpdateMode); | |
84 void addStyleSheetCandidateNode(Node*); | 89 void addStyleSheetCandidateNode(Node*); |
85 void removeStyleSheetCandidateNode(Node*); | 90 void removeStyleSheetCandidateNode(Node*); |
86 void removeStyleSheetCandidateNode(Node*, TreeScope&); | 91 void removeStyleSheetCandidateNode(Node*, TreeScope&); |
87 void modifiedStyleSheetCandidateNode(Node*); | 92 void modifiedStyleSheetCandidateNode(Node*); |
| 93 |
88 void watchedSelectorsChanged(); | 94 void watchedSelectorsChanged(); |
89 | |
90 void injectAuthorSheet(StyleSheetContents* authorSheet); | 95 void injectAuthorSheet(StyleSheetContents* authorSheet); |
91 | 96 |
92 void clearMediaQueryRuleSetStyleSheets(); | 97 void mediaQueryAffectingValueChanged(); |
93 void updateStyleSheetsInImport(DocumentStyleSheetCollector& parentCollector)
; | 98 void updateStyleSheetsInImport(DocumentStyleSheetCollector& parentCollector)
; |
94 void updateActiveStyleSheets(StyleResolverUpdateMode); | |
95 | 99 |
96 String preferredStylesheetSetName() const { return m_preferredStylesheetSetN
ame; } | 100 String preferredStylesheetSetName() const { return m_preferredStylesheetSetN
ame; } |
97 String selectedStylesheetSetName() const { return m_selectedStylesheetSetNam
e; } | 101 String selectedStylesheetSetName() const { return m_selectedStylesheetSetNam
e; } |
98 void setPreferredStylesheetSetNameIfNotSet(const String&); | 102 void setPreferredStylesheetSetNameIfNotSet(const String&); |
99 void setSelectedStylesheetSetName(const String&); | 103 void setSelectedStylesheetSetName(const String&); |
100 void setHttpDefaultStyle(const String&); | 104 void setHttpDefaultStyle(const String&); |
101 | 105 |
102 void addPendingSheet(StyleEngineContext&); | 106 void addPendingSheet(StyleEngineContext&); |
103 void removePendingSheet(Node* styleSheetCandidateNode, const StyleEngineCont
ext&); | 107 void removePendingSheet(Node* styleSheetCandidateNode, const StyleEngineCont
ext&); |
104 | 108 |
105 bool hasPendingScriptBlockingSheets() const { return m_pendingScriptBlocking
Stylesheets > 0; } | 109 bool hasPendingScriptBlockingSheets() const { return m_pendingScriptBlocking
Stylesheets; } |
106 bool hasPendingRenderBlockingSheets() const { return m_pendingRenderBlocking
Stylesheets > 0; } | 110 bool hasPendingRenderBlockingSheets() const { return m_pendingRenderBlocking
Stylesheets; } |
107 bool haveScriptBlockingStylesheetsLoaded() const { return !hasPendingScriptB
lockingSheets() || m_ignorePendingStylesheets; } | 111 bool haveScriptBlockingStylesheetsLoaded() const { return !hasPendingScriptB
lockingSheets() || m_ignorePendingStylesheets; } |
108 bool haveRenderBlockingStylesheetsLoaded() const { return !hasPendingRenderB
lockingSheets() || m_ignorePendingStylesheets; } | 112 bool haveRenderBlockingStylesheetsLoaded() const { return !hasPendingRenderB
lockingSheets() || m_ignorePendingStylesheets; } |
109 bool ignoringPendingStylesheets() const { return m_ignorePendingStylesheets;
} | 113 bool ignoringPendingStylesheets() const { return m_ignorePendingStylesheets;
} |
110 | 114 |
111 unsigned maxDirectAdjacentSelectors() const { return m_maxDirectAdjacentSele
ctors; } | |
112 bool usesSiblingRules() const { return m_usesSiblingRules; } | |
113 bool usesFirstLineRules() const { return m_usesFirstLineRules; } | |
114 bool usesWindowInactiveSelector() const { return m_usesWindowInactiveSelecto
r; } | |
115 | |
116 bool usesRemUnits() const { return m_usesRemUnits; } | 115 bool usesRemUnits() const { return m_usesRemUnits; } |
117 void setUsesRemUnit(bool b) { m_usesRemUnits = b; } | 116 void setUsesRemUnit(bool b) { m_usesRemUnits = b; } |
118 | 117 |
119 void resetCSSFeatureFlags(const RuleFeatureSet&); | 118 unsigned maxDirectAdjacentSelectors() const { return m_globalRuleSet.m_featu
res.maxDirectAdjacentSelectors(); } |
| 119 bool usesSiblingRules() const { return m_globalRuleSet.m_features.usesSiblin
gRules(); } |
| 120 bool usesFirstLineRules() const { return m_globalRuleSet.m_features.usesFirs
tLineRules(); } |
| 121 bool usesWindowInactiveSelector() const { return m_globalRuleSet.m_features.
usesWindowInactiveSelector(); } |
| 122 RuleSet* watchedSelectorsRuleSet() { return m_globalRuleSet.m_watchedSelecto
rsRuleSet; } |
120 | 123 |
121 void didRemoveShadowRoot(ShadowRoot*); | 124 void didRemoveShadowRoot(ShadowRoot*); |
122 void shadowRootRemovedFromDocument(ShadowRoot*); | 125 void shadowRootRemovedFromDocument(ShadowRoot*); |
123 void appendActiveAuthorStyleSheets(); | 126 void markAllTreeScopesDirty() { m_allTreeScopesDirty = true; } |
| 127 void addTreeBoundaryCrossingScope(ContainerNode& scope); |
| 128 |
| 129 void collectScopedStyleFeaturesTo(RuleFeatureSet&) const; |
| 130 |
| 131 RuleSet& ensureRuleSetForSheet(CSSStyleSheet&); |
124 | 132 |
125 StyleResolver* resolver() const | 133 StyleResolver* resolver() const |
126 { | 134 { |
127 return m_resolver.get(); | 135 return m_resolver.get(); |
128 } | 136 } |
129 | 137 |
130 StyleResolver& ensureResolver() | 138 StyleResolver& ensureResolver() |
131 { | 139 { |
132 if (!m_resolver) { | 140 updateActiveStyle(); |
| 141 if (!m_resolver) |
133 createResolver(); | 142 createResolver(); |
134 } else if (m_resolver->hasPendingAuthorStyleSheets()) { | |
135 m_resolver->appendPendingAuthorStyleSheets(); | |
136 } | |
137 return *m_resolver.get(); | 143 return *m_resolver.get(); |
138 } | 144 } |
139 | 145 |
140 bool hasResolver() const { return m_resolver.get(); } | 146 bool hasResolver() const { return m_resolver.get(); } |
141 void clearResolver(); | 147 void clearResolver(); |
142 void clearMasterResolver(); | |
143 | 148 |
144 StyleInvalidator& styleInvalidator() { return m_styleInvalidator; } | 149 StyleInvalidator& styleInvalidator() { return m_styleInvalidator; } |
| 150 MediaQueryEvaluator& ensureMediaQueryEvaluator(); |
| 151 bool mediaQueryAffectedByViewportChange(); |
| 152 bool mediaQueryAffectedByDeviceChange(); |
| 153 bool hasViewportDependentMediaQueries() const { return !m_globalRuleSet.m_fe
atures.viewportDependentMediaQueryResults.isEmpty(); } |
145 | 154 |
146 CSSFontSelector* fontSelector() { return m_fontSelector.get(); } | 155 CSSFontSelector* fontSelector() { return m_fontSelector.get(); } |
147 void setFontSelector(CSSFontSelector*); | 156 void setFontSelector(CSSFontSelector*); |
148 | 157 |
149 void removeFontFaceRules(const HeapVector<Member<const StyleRuleFontFace>>&)
; | 158 void removeFontFaceRules(const HeapVector<Member<const StyleRuleFontFace>>&)
; |
| 159 void removeFontFaceRules(const HeapVector<Member<StyleRuleFontFace>>&); |
150 void clearFontCache(); | 160 void clearFontCache(); |
151 // updateGenericFontFamilySettings is used from WebSettingsImpl. | 161 // updateGenericFontFamilySettings is used from WebSettingsImpl. |
152 void updateGenericFontFamilySettings(); | 162 void updateGenericFontFamilySettings(); |
153 | 163 |
| 164 ViewportStyleResolver& ensureViewportStyleResolver(); |
| 165 |
154 void didDetach(); | 166 void didDetach(); |
155 bool shouldClearResolver() const; | 167 bool shouldClearResolver() const; |
156 void resolverChanged(StyleResolverUpdateMode); | |
157 | 168 |
158 CSSStyleSheet* createSheet(Element*, const String& text, TextPosition startP
osition, StyleEngineContext&); | 169 CSSStyleSheet* createSheet(Element*, const String& text, TextPosition startP
osition, StyleEngineContext&); |
159 void removeSheet(StyleSheetContents*); | 170 void removeSheet(StyleSheetContents*); |
160 | 171 |
161 void collectScopedStyleFeaturesTo(RuleFeatureSet&) const; | |
162 void ensureFullscreenUAStyle(); | |
163 | |
164 void platformColorsChanged(); | 172 void platformColorsChanged(); |
165 | 173 |
| 174 bool hasRulesForId(const AtomicString& id) const; |
166 void classChangedForElement(const SpaceSplitString& changedClasses, Element&
); | 175 void classChangedForElement(const SpaceSplitString& changedClasses, Element&
); |
167 void classChangedForElement(const SpaceSplitString& oldClasses, const SpaceS
plitString& newClasses, Element&); | 176 void classChangedForElement(const SpaceSplitString& oldClasses, const SpaceS
plitString& newClasses, Element&); |
168 void attributeChangedForElement(const QualifiedName& attributeName, Element&
); | 177 void attributeChangedForElement(const QualifiedName& attributeName, Element&
); |
169 void idChangedForElement(const AtomicString& oldId, const AtomicString& newI
d, Element&); | 178 void idChangedForElement(const AtomicString& oldId, const AtomicString& newI
d, Element&); |
170 void pseudoStateChangedForElement(CSSSelector::PseudoType, Element&); | 179 void pseudoStateChangedForElement(CSSSelector::PseudoType, Element&); |
| 180 void scheduleInvalidationsForRuleSets(TreeScope&, const HeapVector<Member<Ru
leSet>>&); |
| 181 |
| 182 void ensureUAStyleForFullscreen(); |
| 183 void ensureUAStyleForElement(const Element&); |
| 184 |
| 185 PassRefPtr<ComputedStyle> findSharedStyle(const ElementResolveContext&); |
| 186 |
| 187 const DocumentOrderedList& treeBoundaryCrossingScopes() const { return m_tre
eBoundaryCrossingScopes; } |
171 | 188 |
172 unsigned styleForElementCount() const { return m_styleForElementCount; } | 189 unsigned styleForElementCount() const { return m_styleForElementCount; } |
173 void incStyleForElementCount() { m_styleForElementCount++; } | 190 void incStyleForElementCount() { m_styleForElementCount++; } |
174 | 191 |
175 StyleResolverStats* stats() { return m_styleResolverStats.get(); } | 192 StyleResolverStats* stats() { return m_styleResolverStats.get(); } |
176 void setStatsEnabled(bool); | 193 void setStatsEnabled(bool); |
177 | 194 |
178 DECLARE_VIRTUAL_TRACE(); | 195 DECLARE_VIRTUAL_TRACE(); |
179 | 196 |
180 DECLARE_TRACE_WRAPPERS(); | 197 DECLARE_TRACE_WRAPPERS(); |
181 | 198 |
182 private: | 199 private: |
183 // CSSFontSelectorClient implementation. | 200 // CSSFontSelectorClient implementation. |
184 void fontsNeedUpdate(CSSFontSelector*) override; | 201 void fontsNeedUpdate(CSSFontSelector*) override; |
185 | 202 |
186 private: | 203 private: |
187 StyleEngine(Document&); | 204 StyleEngine(Document&); |
188 | 205 |
| 206 void updateViewport(); |
| 207 void updateActiveStyleSheets(); |
| 208 void updateGlobalRuleSet(); |
| 209 |
| 210 bool needsActiveStyleSheetUpdate() const { return m_allTreeScopesDirty || m_
documentScopeDirty || m_dirtyTreeScopes.size(); } |
| 211 |
189 TreeScopeStyleSheetCollection* ensureStyleSheetCollectionFor(TreeScope&); | 212 TreeScopeStyleSheetCollection* ensureStyleSheetCollectionFor(TreeScope&); |
190 TreeScopeStyleSheetCollection* styleSheetCollectionFor(TreeScope&); | 213 TreeScopeStyleSheetCollection* styleSheetCollectionFor(TreeScope&); |
191 bool shouldUpdateDocumentStyleSheetCollection(StyleResolverUpdateMode) const
; | 214 bool shouldUpdateDocumentStyleSheetCollection() const; |
192 bool shouldUpdateShadowTreeStyleSheetCollection(StyleResolverUpdateMode) con
st; | 215 bool shouldUpdateShadowTreeStyleSheetCollection() const; |
193 | 216 |
194 void markDocumentDirty(); | 217 void markDocumentDirty(); |
195 void markTreeScopeDirty(TreeScope&); | 218 void markTreeScopeDirty(TreeScope&); |
196 | 219 |
197 bool isMaster() const { return m_isMaster; } | 220 bool isMaster() const { return m_isMaster; } |
198 Document* master(); | 221 Document* master(); |
199 Document& document() const { return *m_document; } | 222 Document& document() const { return *m_document; } |
200 | 223 |
201 typedef HeapHashSet<Member<TreeScope>> UnorderedTreeScopeSet; | 224 typedef HeapHashSet<Member<TreeScope>> UnorderedTreeScopeSet; |
202 | 225 |
203 void clearMediaQueryRuleSetOnTreeScopeStyleSheets(UnorderedTreeScopeSet&); | 226 void mediaQueryAffectingValueChanged(UnorderedTreeScopeSet&); |
| 227 const RuleFeatureSet& ruleFeatureSet() const { return m_globalRuleSet.m_feat
ures; } |
204 | 228 |
205 void createResolver(); | 229 void createResolver(); |
206 | 230 |
207 static CSSStyleSheet* parseSheet(Element*, const String& text, TextPosition
startPosition); | 231 CSSStyleSheet* parseSheet(Element*, const String& text, TextPosition startPo
sition); |
208 | 232 |
209 const DocumentStyleSheetCollection* documentStyleSheetCollection() const | 233 const DocumentStyleSheetCollection* documentStyleSheetCollection() const |
210 { | 234 { |
211 return m_documentStyleSheetCollection.get(); | 235 return m_documentStyleSheetCollection.get(); |
212 } | 236 } |
213 | 237 |
214 DocumentStyleSheetCollection* documentStyleSheetCollection() | 238 DocumentStyleSheetCollection* documentStyleSheetCollection() |
215 { | 239 { |
216 return m_documentStyleSheetCollection.get(); | 240 return m_documentStyleSheetCollection.get(); |
217 } | 241 } |
218 | 242 |
219 void updateActiveStyleSheetsInShadow(StyleResolverUpdateMode, TreeScope*, Un
orderedTreeScopeSet& treeScopesRemoved); | 243 void updateActiveStyleSheetsInShadow(TreeScope*, UnorderedTreeScopeSet& tree
ScopesRemoved); |
220 | 244 |
221 bool shouldSkipInvalidationFor(const Element&) const; | 245 bool shouldSkipInvalidationFor(const Element&) const; |
| 246 void scheduleRuleSetInvalidationsForElement(Element&, const HeapVector<Membe
r<RuleSet>>&); |
222 | 247 |
223 Member<Document> m_document; | 248 Member<Document> m_document; |
224 bool m_isMaster; | 249 bool m_isMaster; |
225 | 250 |
226 // Track the number of currently loading top-level stylesheets needed for la
yout. | 251 // Track the number of currently loading top-level stylesheets needed for la
yout. |
227 // Sheets loaded using the @import directive are not included in this count. | 252 // Sheets loaded using the @import directive are not included in this count. |
228 // We use this count of pending sheets to detect when we can begin attaching | 253 // We use this count of pending sheets to detect when we can begin attaching |
229 // elements and when it is safe to execute scripts. | 254 // elements and when it is safe to execute scripts. |
230 int m_pendingScriptBlockingStylesheets = 0; | 255 unsigned m_pendingScriptBlockingStylesheets = 0; |
231 int m_pendingRenderBlockingStylesheets = 0; | 256 unsigned m_pendingRenderBlockingStylesheets = 0; |
232 | 257 |
233 HeapVector<Member<CSSStyleSheet>> m_injectedAuthorStyleSheets; | 258 HeapVector<Member<CSSStyleSheet>> m_injectedAuthorStyleSheets; |
234 | |
235 Member<DocumentStyleSheetCollection> m_documentStyleSheetCollection; | 259 Member<DocumentStyleSheetCollection> m_documentStyleSheetCollection; |
236 | 260 |
237 typedef HeapHashMap<WeakMember<TreeScope>, Member<ShadowTreeStyleSheetCollec
tion>> StyleSheetCollectionMap; | 261 using StyleSheetCollectionMap = HeapHashMap<WeakMember<TreeScope>, Member<Sh
adowTreeStyleSheetCollection>>; |
| 262 |
238 StyleSheetCollectionMap m_styleSheetCollectionMap; | 263 StyleSheetCollectionMap m_styleSheetCollectionMap; |
239 | 264 |
240 bool m_documentScopeDirty = true; | 265 bool m_documentScopeDirty = true; |
| 266 bool m_allTreeScopesDirty = false; |
241 UnorderedTreeScopeSet m_dirtyTreeScopes; | 267 UnorderedTreeScopeSet m_dirtyTreeScopes; |
242 UnorderedTreeScopeSet m_activeTreeScopes; | 268 UnorderedTreeScopeSet m_activeTreeScopes; |
| 269 DocumentOrderedList m_treeBoundaryCrossingScopes; |
243 | 270 |
244 String m_preferredStylesheetSetName; | 271 String m_preferredStylesheetSetName; |
245 String m_selectedStylesheetSetName; | 272 String m_selectedStylesheetSetName; |
246 | 273 |
247 bool m_usesSiblingRules = false; | 274 CSSGlobalRuleSet m_globalRuleSet; |
248 bool m_usesFirstLineRules = false; | 275 |
249 bool m_usesWindowInactiveSelector = false; | 276 bool m_needsGlobalRuleSetUpdate = true; |
250 bool m_usesRemUnits = false; | 277 bool m_usesRemUnits = false; |
251 unsigned m_maxDirectAdjacentSelectors = 0; | |
252 | |
253 bool m_ignorePendingStylesheets = false; | 278 bool m_ignorePendingStylesheets = false; |
254 bool m_didCalculateResolver = false; | 279 bool m_didCalculateResolver = false; |
255 | 280 |
256 Member<StyleResolver> m_resolver; | 281 Member<StyleResolver> m_resolver; |
| 282 Member<ViewportStyleResolver> m_viewportResolver; |
| 283 Member<MediaQueryEvaluator> m_medium; |
257 StyleInvalidator m_styleInvalidator; | 284 StyleInvalidator m_styleInvalidator; |
258 | 285 |
259 Member<CSSFontSelector> m_fontSelector; | 286 Member<CSSFontSelector> m_fontSelector; |
260 | 287 |
261 HeapHashMap<AtomicString, Member<StyleSheetContents>> m_textToSheetCache; | 288 HeapHashMap<AtomicString, Member<StyleSheetContents>> m_textToSheetCache; |
262 HeapHashMap<Member<StyleSheetContents>, AtomicString> m_sheetToTextCache; | 289 HeapHashMap<Member<StyleSheetContents>, AtomicString> m_sheetToTextCache; |
263 | 290 |
264 OwnPtr<StyleResolverStats> m_styleResolverStats; | 291 OwnPtr<StyleResolverStats> m_styleResolverStats; |
265 unsigned m_styleForElementCount = 0; | 292 unsigned m_styleForElementCount = 0; |
266 | 293 |
267 friend class StyleEngineTest; | 294 friend class StyleEngineTest; |
268 }; | 295 }; |
269 | 296 |
270 } // namespace blink | 297 } // namespace blink |
271 | 298 |
272 #endif | 299 #endif |
OLD | NEW |