Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(45)

Side by Side Diff: third_party/WebKit/Source/core/dom/StyleEngine.h

Issue 1913833002: Current work-in-progress crbug.com/567021 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed html import issue. Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012 Apple Inc. All
7 * rights reserved. 7 * rights reserved.
8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. 8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved.
9 * (http://www.torchmobile.com/) 9 * (http://www.torchmobile.com/)
10 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) 10 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 93
94 const HeapVector<TraceWrapperMember<StyleSheet>>& 94 const HeapVector<TraceWrapperMember<StyleSheet>>&
95 styleSheetsForStyleSheetList(TreeScope&); 95 styleSheetsForStyleSheetList(TreeScope&);
96 96
97 const HeapVector<TraceWrapperMember<CSSStyleSheet>>& 97 const HeapVector<TraceWrapperMember<CSSStyleSheet>>&
98 injectedAuthorStyleSheets() const { 98 injectedAuthorStyleSheets() const {
99 return m_injectedAuthorStyleSheets; 99 return m_injectedAuthorStyleSheets;
100 } 100 }
101 CSSStyleSheet* inspectorStyleSheet() const { return m_inspectorStyleSheet; } 101 CSSStyleSheet* inspectorStyleSheet() const { return m_inspectorStyleSheet; }
102 102
103 const HeapVector<Member<CSSStyleSheet>> activeStyleSheetsForInspector() const; 103 const ActiveStyleSheetVector activeStyleSheetsForInspector();
104 104
105 bool needsActiveStyleUpdate() const; 105 bool needsActiveStyleUpdate() const;
106 void setNeedsActiveStyleUpdate(StyleSheet*, StyleResolverUpdateMode); 106 void setNeedsActiveStyleUpdate(TreeScope&);
107 void addStyleSheetCandidateNode(Node&); 107 void addStyleSheetCandidateNode(Node&);
108 void removeStyleSheetCandidateNode(Node&); 108 void removeStyleSheetCandidateNode(Node&);
109 void removeStyleSheetCandidateNode(Node&, TreeScope&); 109 void removeStyleSheetCandidateNode(Node&, TreeScope&);
110 void modifiedStyleSheetCandidateNode(Node&); 110 void modifiedStyleSheetCandidateNode(Node&);
111 void mediaQueriesChangedInScope(TreeScope&);
111 void watchedSelectorsChanged(); 112 void watchedSelectorsChanged();
112 void initialViewportChanged(); 113 void initialViewportChanged();
113 void viewportRulesChanged(); 114 void viewportRulesChanged();
114 void importRemoved(); 115 void importAddedOrRemoved();
115 116
116 void injectAuthorSheet(StyleSheetContents* authorSheet); 117 void injectAuthorSheet(StyleSheetContents* authorSheet);
117 CSSStyleSheet& ensureInspectorStyleSheet(); 118 CSSStyleSheet& ensureInspectorStyleSheet();
118 RuleSet* watchedSelectorsRuleSet() { 119 RuleSet* watchedSelectorsRuleSet() {
119 return m_globalRuleSet.watchedSelectorsRuleSet(); 120 return m_globalRuleSet.watchedSelectorsRuleSet();
120 } 121 }
121 122
122 RuleSet* ruleSetForSheet(CSSStyleSheet&); 123 RuleSet* ruleSetForSheet(CSSStyleSheet&);
123 void mediaQueryAffectingValueChanged(); 124 void mediaQueryAffectingValueChanged();
124 void updateStyleSheetsInImport(DocumentStyleSheetCollector& parentCollector); 125 void updateStyleSheetsInImport(DocumentStyleSheetCollector& parentCollector);
125 void updateActiveStyleSheets(StyleResolverUpdateMode);
126 void updateActiveStyle(); 126 void updateActiveStyle();
127 void markAllTreeScopesDirty() { m_allTreeScopesDirty = true; } 127 void markAllTreeScopesDirty() { m_allTreeScopesDirty = true; }
128 128
129 enum ActiveSheetsUpdate { DontUpdateActiveSheets, UpdateActiveSheets };
130 String preferredStylesheetSetName() const { 129 String preferredStylesheetSetName() const {
131 return m_preferredStylesheetSetName; 130 return m_preferredStylesheetSetName;
132 } 131 }
133 String selectedStylesheetSetName() const { 132 String selectedStylesheetSetName() const {
134 return m_selectedStylesheetSetName; 133 return m_selectedStylesheetSetName;
135 } 134 }
136 void setPreferredStylesheetSetNameIfNotSet(const String&, ActiveSheetsUpdate); 135 void setPreferredStylesheetSetNameIfNotSet(const String&);
137 void setSelectedStylesheetSetName(const String&); 136 void setSelectedStylesheetSetName(const String&);
138 void setHttpDefaultStyle(const String&); 137 void setHttpDefaultStyle(const String&);
139 138
140 void addPendingSheet(StyleEngineContext&); 139 void addPendingSheet(StyleEngineContext&);
141 void removePendingSheet(Node& styleSheetCandidateNode, 140 void removePendingSheet(Node& styleSheetCandidateNode,
142 const StyleEngineContext&); 141 const StyleEngineContext&);
143 142
144 bool hasPendingScriptBlockingSheets() const { 143 bool hasPendingScriptBlockingSheets() const {
145 return m_pendingScriptBlockingStylesheets > 0; 144 return m_pendingScriptBlockingStylesheets > 0;
146 } 145 }
(...skipping 30 matching lines...) Expand all
177 return m_treeBoundaryCrossingScopes; 176 return m_treeBoundaryCrossingScopes;
178 } 177 }
179 void resetAuthorStyle(TreeScope&); 178 void resetAuthorStyle(TreeScope&);
180 179
181 StyleResolver* resolver() const { return m_resolver; } 180 StyleResolver* resolver() const { return m_resolver; }
182 181
183 void setRuleUsageTracker(StyleRuleUsageTracker*); 182 void setRuleUsageTracker(StyleRuleUsageTracker*);
184 183
185 StyleResolver& ensureResolver() { 184 StyleResolver& ensureResolver() {
186 updateActiveStyle(); 185 updateActiveStyle();
187 if (!m_resolver) { 186 if (!m_resolver)
188 createResolver(); 187 createResolver();
189 } else if (m_resolver->hasPendingAuthorStyleSheets()) {
190 m_resolver->appendPendingAuthorStyleSheets();
191 finishAppendAuthorStyleSheets();
192 } else if (m_globalRuleSet.isDirty()) {
193 m_globalRuleSet.update(document());
194 }
195 return *m_resolver; 188 return *m_resolver;
196 } 189 }
197 190
198 bool hasResolver() const { return m_resolver; } 191 bool hasResolver() const { return m_resolver; }
199 void clearResolver(); 192 void clearResolver();
200 void clearMasterResolver();
201 193
202 StyleInvalidator& styleInvalidator() { return m_styleInvalidator; } 194 StyleInvalidator& styleInvalidator() { return m_styleInvalidator; }
203 bool mediaQueryAffectedByViewportChange(); 195 bool mediaQueryAffectedByViewportChange();
204 bool mediaQueryAffectedByDeviceChange(); 196 bool mediaQueryAffectedByDeviceChange();
205 bool hasViewportDependentMediaQueries() const { 197 bool hasViewportDependentMediaQueries() const {
206 return !m_globalRuleSet.ruleFeatureSet() 198 return !m_globalRuleSet.ruleFeatureSet()
207 .viewportDependentMediaQueryResults() 199 .viewportDependentMediaQueryResults()
208 .isEmpty(); 200 .isEmpty();
209 } 201 }
210 202
211 CSSFontSelector* fontSelector() { return m_fontSelector; } 203 CSSFontSelector* fontSelector() { return m_fontSelector; }
212 void setFontSelector(CSSFontSelector*); 204 void setFontSelector(CSSFontSelector*);
213 205
214 void removeFontFaceRules(const HeapVector<Member<const StyleRuleFontFace>>&); 206 void removeFontFaceRules(const HeapVector<Member<const StyleRuleFontFace>>&);
215 void clearFontCache(); 207 void clearFontCache();
216 // updateGenericFontFamilySettings is used from WebSettingsImpl. 208 // updateGenericFontFamilySettings is used from WebSettingsImpl.
217 void updateGenericFontFamilySettings(); 209 void updateGenericFontFamilySettings();
218 210
219 void didDetach(); 211 void didDetach();
220 bool shouldClearResolver() const;
221 void resolverChanged(StyleResolverUpdateMode);
222 212
223 CSSStyleSheet* createSheet(Element&, 213 CSSStyleSheet* createSheet(Element&,
224 const String& text, 214 const String& text,
225 TextPosition startPosition, 215 TextPosition startPosition,
226 StyleEngineContext&); 216 StyleEngineContext&);
227 217
228 void collectScopedStyleFeaturesTo(RuleFeatureSet&) const; 218 void collectScopedStyleFeaturesTo(RuleFeatureSet&) const;
229 void ensureUAStyleForFullscreen(); 219 void ensureUAStyleForFullscreen();
230 void ensureUAStyleForElement(const Element&); 220 void ensureUAStyleForElement(const Element&);
231 221
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 Document& document() const { return *m_document; } 282 Document& document() const { return *m_document; }
293 283
294 typedef HeapHashSet<Member<TreeScope>> UnorderedTreeScopeSet; 284 typedef HeapHashSet<Member<TreeScope>> UnorderedTreeScopeSet;
295 285
296 void mediaQueryAffectingValueChanged(UnorderedTreeScopeSet&); 286 void mediaQueryAffectingValueChanged(UnorderedTreeScopeSet&);
297 const RuleFeatureSet& ruleFeatureSet() const { 287 const RuleFeatureSet& ruleFeatureSet() const {
298 return m_globalRuleSet.ruleFeatureSet(); 288 return m_globalRuleSet.ruleFeatureSet();
299 } 289 }
300 290
301 void createResolver(); 291 void createResolver();
302 void appendActiveAuthorStyleSheets();
303 void finishAppendAuthorStyleSheets();
304 292
305 CSSStyleSheet* parseSheet(Element&, 293 CSSStyleSheet* parseSheet(Element&,
306 const String& text, 294 const String& text,
307 TextPosition startPosition); 295 TextPosition startPosition);
308 296
309 const DocumentStyleSheetCollection& documentStyleSheetCollection() const { 297 const DocumentStyleSheetCollection& documentStyleSheetCollection() const {
310 DCHECK(m_documentStyleSheetCollection); 298 DCHECK(m_documentStyleSheetCollection);
311 return *m_documentStyleSheetCollection; 299 return *m_documentStyleSheetCollection;
312 } 300 }
313 301
314 DocumentStyleSheetCollection& documentStyleSheetCollection() { 302 DocumentStyleSheetCollection& documentStyleSheetCollection() {
315 DCHECK(m_documentStyleSheetCollection); 303 DCHECK(m_documentStyleSheetCollection);
316 return *m_documentStyleSheetCollection; 304 return *m_documentStyleSheetCollection;
317 } 305 }
318 306
319 void updateActiveStyleSheetsInShadow( 307 void updateActiveStyleSheetsInShadow(
320 StyleResolverUpdateMode,
321 TreeScope*, 308 TreeScope*,
322 UnorderedTreeScopeSet& treeScopesRemoved); 309 UnorderedTreeScopeSet& treeScopesRemoved);
323 310
324 bool shouldSkipInvalidationFor(const Element&) const; 311 bool shouldSkipInvalidationFor(const Element&) const;
325 void scheduleRuleSetInvalidationsForElement( 312 void scheduleRuleSetInvalidationsForElement(
326 Element&, 313 Element&,
327 const HeapVector<Member<RuleSet>>&); 314 const HeapVector<Member<RuleSet>>&);
328 void invalidateSlottedElements(HTMLSlotElement&); 315 void invalidateSlottedElements(HTMLSlotElement&);
329 316
330 void updateViewport(); 317 void updateViewport();
(...skipping 11 matching lines...) Expand all
342 int m_pendingRenderBlockingStylesheets = 0; 329 int m_pendingRenderBlockingStylesheets = 0;
343 330
344 HeapVector<TraceWrapperMember<CSSStyleSheet>> m_injectedAuthorStyleSheets; 331 HeapVector<TraceWrapperMember<CSSStyleSheet>> m_injectedAuthorStyleSheets;
345 Member<CSSStyleSheet> m_inspectorStyleSheet; 332 Member<CSSStyleSheet> m_inspectorStyleSheet;
346 333
347 TraceWrapperMember<DocumentStyleSheetCollection> 334 TraceWrapperMember<DocumentStyleSheetCollection>
348 m_documentStyleSheetCollection; 335 m_documentStyleSheetCollection;
349 336
350 Member<StyleRuleUsageTracker> m_tracker; 337 Member<StyleRuleUsageTracker> m_tracker;
351 338
352 typedef HeapHashMap<WeakMember<TreeScope>, 339 using StyleSheetCollectionMap =
353 Member<ShadowTreeStyleSheetCollection>> 340 HeapHashMap<WeakMember<TreeScope>,
354 StyleSheetCollectionMap; 341 Member<ShadowTreeStyleSheetCollection>>;
355 StyleSheetCollectionMap m_styleSheetCollectionMap; 342 StyleSheetCollectionMap m_styleSheetCollectionMap;
356 343
357 bool m_documentScopeDirty = true; 344 bool m_documentScopeDirty = true;
358 bool m_allTreeScopesDirty = false; 345 bool m_allTreeScopesDirty = false;
359 UnorderedTreeScopeSet m_dirtyTreeScopes; 346 UnorderedTreeScopeSet m_dirtyTreeScopes;
360 UnorderedTreeScopeSet m_activeTreeScopes; 347 UnorderedTreeScopeSet m_activeTreeScopes;
361 DocumentOrderedList m_treeBoundaryCrossingScopes; 348 DocumentOrderedList m_treeBoundaryCrossingScopes;
362 349
363 String m_preferredStylesheetSetName; 350 String m_preferredStylesheetSetName;
364 String m_selectedStylesheetSetName; 351 String m_selectedStylesheetSetName;
365 352
366 CSSGlobalRuleSet m_globalRuleSet; 353 CSSGlobalRuleSet m_globalRuleSet;
367 354
368 bool m_usesRemUnits = false; 355 bool m_usesRemUnits = false;
369 bool m_ignorePendingStylesheets = false; 356 bool m_ignorePendingStylesheets = false;
370 bool m_didCalculateResolver = false;
371 357
372 Member<StyleResolver> m_resolver; 358 Member<StyleResolver> m_resolver;
373 Member<ViewportStyleResolver> m_viewportResolver; 359 Member<ViewportStyleResolver> m_viewportResolver;
374 Member<MediaQueryEvaluator> m_mediaQueryEvaluator; 360 Member<MediaQueryEvaluator> m_mediaQueryEvaluator;
375 StyleInvalidator m_styleInvalidator; 361 StyleInvalidator m_styleInvalidator;
376 362
377 Member<CSSFontSelector> m_fontSelector; 363 Member<CSSFontSelector> m_fontSelector;
378 364
379 HeapHashMap<AtomicString, WeakMember<StyleSheetContents>> m_textToSheetCache; 365 HeapHashMap<AtomicString, WeakMember<StyleSheetContents>> m_textToSheetCache;
380 HeapHashMap<WeakMember<StyleSheetContents>, AtomicString> m_sheetToTextCache; 366 HeapHashMap<WeakMember<StyleSheetContents>, AtomicString> m_sheetToTextCache;
381 367
382 std::unique_ptr<StyleResolverStats> m_styleResolverStats; 368 std::unique_ptr<StyleResolverStats> m_styleResolverStats;
383 unsigned m_styleForElementCount = 0; 369 unsigned m_styleForElementCount = 0;
384 370
385 friend class StyleEngineTest; 371 friend class StyleEngineTest;
386 }; 372 };
387 373
388 } // namespace blink 374 } // namespace blink
389 375
390 #endif 376 #endif
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/dom/StyleElement.cpp ('k') | third_party/WebKit/Source/core/dom/StyleEngine.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698