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

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

Issue 2572473006: Revert of Collect active stylesheets and and apply asynchronously. (Closed)
Patch Set: 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 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 92
93 const HeapVector<TraceWrapperMember<StyleSheet>>& 93 const HeapVector<TraceWrapperMember<StyleSheet>>&
94 styleSheetsForStyleSheetList(TreeScope&); 94 styleSheetsForStyleSheetList(TreeScope&);
95 95
96 const HeapVector<TraceWrapperMember<CSSStyleSheet>>& 96 const HeapVector<TraceWrapperMember<CSSStyleSheet>>&
97 injectedAuthorStyleSheets() const { 97 injectedAuthorStyleSheets() const {
98 return m_injectedAuthorStyleSheets; 98 return m_injectedAuthorStyleSheets;
99 } 99 }
100 CSSStyleSheet* inspectorStyleSheet() const { return m_inspectorStyleSheet; } 100 CSSStyleSheet* inspectorStyleSheet() const { return m_inspectorStyleSheet; }
101 101
102 const ActiveStyleSheetVector activeStyleSheetsForInspector(); 102 const HeapVector<Member<CSSStyleSheet>> activeStyleSheetsForInspector() const;
103 103
104 bool needsActiveStyleUpdate() const; 104 bool needsActiveStyleUpdate() const;
105 void setNeedsActiveStyleUpdate(TreeScope&); 105 void setNeedsActiveStyleUpdate(TreeScope&);
106 void addStyleSheetCandidateNode(Node&); 106 void addStyleSheetCandidateNode(Node&);
107 void removeStyleSheetCandidateNode(Node&, ContainerNode& insertionPoint); 107 void removeStyleSheetCandidateNode(Node&, ContainerNode& insertionPoint);
108 void modifiedStyleSheetCandidateNode(Node&); 108 void modifiedStyleSheetCandidateNode(Node&);
109 void mediaQueriesChangedInScope(TreeScope&); 109 void mediaQueriesChangedInScope(TreeScope&);
110 void watchedSelectorsChanged(); 110 void watchedSelectorsChanged();
111 void initialViewportChanged(); 111 void initialViewportChanged();
112 void viewportRulesChanged(); 112 void viewportRulesChanged();
113 void htmlImportAddedOrRemoved(); 113 void htmlImportAddedOrRemoved();
114 114
115 void injectAuthorSheet(StyleSheetContents* authorSheet); 115 void injectAuthorSheet(StyleSheetContents* authorSheet);
116 CSSStyleSheet& ensureInspectorStyleSheet(); 116 CSSStyleSheet& ensureInspectorStyleSheet();
117 RuleSet* watchedSelectorsRuleSet() { 117 RuleSet* watchedSelectorsRuleSet() {
118 return m_globalRuleSet.watchedSelectorsRuleSet(); 118 return m_globalRuleSet.watchedSelectorsRuleSet();
119 } 119 }
120 120
121 RuleSet* ruleSetForSheet(CSSStyleSheet&); 121 RuleSet* ruleSetForSheet(CSSStyleSheet&);
122 void mediaQueryAffectingValueChanged(); 122 void mediaQueryAffectingValueChanged();
123 void updateStyleSheetsInImport(DocumentStyleSheetCollector& parentCollector); 123 void updateStyleSheetsInImport(DocumentStyleSheetCollector& parentCollector);
124 void updateActiveStyleSheets(StyleResolverUpdateMode);
124 void updateActiveStyle(); 125 void updateActiveStyle();
125 void markAllTreeScopesDirty() { m_allTreeScopesDirty = true; } 126 void markAllTreeScopesDirty() { m_allTreeScopesDirty = true; }
126 127
127 enum ActiveSheetsUpdate { DontUpdateActiveSheets, UpdateActiveSheets }; 128 enum ActiveSheetsUpdate { DontUpdateActiveSheets, UpdateActiveSheets };
128 String preferredStylesheetSetName() const { 129 String preferredStylesheetSetName() const {
129 return m_preferredStylesheetSetName; 130 return m_preferredStylesheetSetName;
130 } 131 }
131 String selectedStylesheetSetName() const { 132 String selectedStylesheetSetName() const {
132 return m_selectedStylesheetSetName; 133 return m_selectedStylesheetSetName;
133 } 134 }
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 return m_treeBoundaryCrossingScopes; 176 return m_treeBoundaryCrossingScopes;
176 } 177 }
177 void resetAuthorStyle(TreeScope&); 178 void resetAuthorStyle(TreeScope&);
178 179
179 StyleResolver* resolver() const { return m_resolver; } 180 StyleResolver* resolver() const { return m_resolver; }
180 181
181 void setRuleUsageTracker(StyleRuleUsageTracker*); 182 void setRuleUsageTracker(StyleRuleUsageTracker*);
182 183
183 StyleResolver& ensureResolver() { 184 StyleResolver& ensureResolver() {
184 updateActiveStyle(); 185 updateActiveStyle();
185 if (!m_resolver) 186 if (!m_resolver) {
186 createResolver(); 187 createResolver();
188 } else if (m_resolver->hasPendingAuthorStyleSheets()) {
189 m_resolver->appendPendingAuthorStyleSheets();
190 finishAppendAuthorStyleSheets();
191 } else if (m_globalRuleSet.isDirty()) {
192 m_globalRuleSet.update(document());
193 }
187 return *m_resolver; 194 return *m_resolver;
188 } 195 }
189 196
190 bool hasResolver() const { return m_resolver; } 197 bool hasResolver() const { return m_resolver; }
191 void clearResolver(); 198 void clearResolver();
199 void clearMasterResolver();
192 200
193 StyleInvalidator& styleInvalidator() { return m_styleInvalidator; } 201 StyleInvalidator& styleInvalidator() { return m_styleInvalidator; }
194 bool mediaQueryAffectedByViewportChange(); 202 bool mediaQueryAffectedByViewportChange();
195 bool mediaQueryAffectedByDeviceChange(); 203 bool mediaQueryAffectedByDeviceChange();
196 bool hasViewportDependentMediaQueries() const { 204 bool hasViewportDependentMediaQueries() const {
197 return !m_globalRuleSet.ruleFeatureSet() 205 return !m_globalRuleSet.ruleFeatureSet()
198 .viewportDependentMediaQueryResults() 206 .viewportDependentMediaQueryResults()
199 .isEmpty(); 207 .isEmpty();
200 } 208 }
201 209
202 CSSFontSelector* fontSelector() { return m_fontSelector; } 210 CSSFontSelector* fontSelector() { return m_fontSelector; }
203 void setFontSelector(CSSFontSelector*); 211 void setFontSelector(CSSFontSelector*);
204 212
205 void removeFontFaceRules(const HeapVector<Member<const StyleRuleFontFace>>&); 213 void removeFontFaceRules(const HeapVector<Member<const StyleRuleFontFace>>&);
206 void clearFontCache(); 214 void clearFontCache();
207 // updateGenericFontFamilySettings is used from WebSettingsImpl. 215 // updateGenericFontFamilySettings is used from WebSettingsImpl.
208 void updateGenericFontFamilySettings(); 216 void updateGenericFontFamilySettings();
209 217
210 void didDetach(); 218 void didDetach();
211 void resolverChanged(StyleResolverUpdateMode) {} 219 bool shouldClearResolver() const;
220 void resolverChanged(StyleResolverUpdateMode);
212 221
213 CSSStyleSheet* createSheet(Element&, 222 CSSStyleSheet* createSheet(Element&,
214 const String& text, 223 const String& text,
215 TextPosition startPosition, 224 TextPosition startPosition,
216 StyleEngineContext&); 225 StyleEngineContext&);
217 226
218 void collectScopedStyleFeaturesTo(RuleFeatureSet&) const; 227 void collectScopedStyleFeaturesTo(RuleFeatureSet&) const;
219 void ensureUAStyleForFullscreen(); 228 void ensureUAStyleForFullscreen();
220 void ensureUAStyleForElement(const Element&); 229 void ensureUAStyleForElement(const Element&);
221 230
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 Document& document() const { return *m_document; } 291 Document& document() const { return *m_document; }
283 292
284 typedef HeapHashSet<Member<TreeScope>> UnorderedTreeScopeSet; 293 typedef HeapHashSet<Member<TreeScope>> UnorderedTreeScopeSet;
285 294
286 void mediaQueryAffectingValueChanged(UnorderedTreeScopeSet&); 295 void mediaQueryAffectingValueChanged(UnorderedTreeScopeSet&);
287 const RuleFeatureSet& ruleFeatureSet() const { 296 const RuleFeatureSet& ruleFeatureSet() const {
288 return m_globalRuleSet.ruleFeatureSet(); 297 return m_globalRuleSet.ruleFeatureSet();
289 } 298 }
290 299
291 void createResolver(); 300 void createResolver();
301 void appendActiveAuthorStyleSheets();
302 void finishAppendAuthorStyleSheets();
292 303
293 CSSStyleSheet* parseSheet(Element&, 304 CSSStyleSheet* parseSheet(Element&,
294 const String& text, 305 const String& text,
295 TextPosition startPosition); 306 TextPosition startPosition);
296 307
297 const DocumentStyleSheetCollection& documentStyleSheetCollection() const { 308 const DocumentStyleSheetCollection& documentStyleSheetCollection() const {
298 DCHECK(m_documentStyleSheetCollection); 309 DCHECK(m_documentStyleSheetCollection);
299 return *m_documentStyleSheetCollection; 310 return *m_documentStyleSheetCollection;
300 } 311 }
301 312
302 DocumentStyleSheetCollection& documentStyleSheetCollection() { 313 DocumentStyleSheetCollection& documentStyleSheetCollection() {
303 DCHECK(m_documentStyleSheetCollection); 314 DCHECK(m_documentStyleSheetCollection);
304 return *m_documentStyleSheetCollection; 315 return *m_documentStyleSheetCollection;
305 } 316 }
306 317
307 void updateActiveStyleSheetsInShadow( 318 void updateActiveStyleSheetsInShadow(
319 StyleResolverUpdateMode,
308 TreeScope*, 320 TreeScope*,
309 UnorderedTreeScopeSet& treeScopesRemoved); 321 UnorderedTreeScopeSet& treeScopesRemoved);
310 322
311 bool shouldSkipInvalidationFor(const Element&) const; 323 bool shouldSkipInvalidationFor(const Element&) const;
312 void scheduleRuleSetInvalidationsForElement( 324 void scheduleRuleSetInvalidationsForElement(
313 Element&, 325 Element&,
314 const HeapHashSet<Member<RuleSet>>&); 326 const HeapHashSet<Member<RuleSet>>&);
315 void invalidateSlottedElements(HTMLSlotElement&); 327 void invalidateSlottedElements(HTMLSlotElement&);
316 328
317 void updateViewport(); 329 void updateViewport();
(...skipping 11 matching lines...) Expand all
329 int m_pendingRenderBlockingStylesheets = 0; 341 int m_pendingRenderBlockingStylesheets = 0;
330 342
331 HeapVector<TraceWrapperMember<CSSStyleSheet>> m_injectedAuthorStyleSheets; 343 HeapVector<TraceWrapperMember<CSSStyleSheet>> m_injectedAuthorStyleSheets;
332 Member<CSSStyleSheet> m_inspectorStyleSheet; 344 Member<CSSStyleSheet> m_inspectorStyleSheet;
333 345
334 TraceWrapperMember<DocumentStyleSheetCollection> 346 TraceWrapperMember<DocumentStyleSheetCollection>
335 m_documentStyleSheetCollection; 347 m_documentStyleSheetCollection;
336 348
337 Member<StyleRuleUsageTracker> m_tracker; 349 Member<StyleRuleUsageTracker> m_tracker;
338 350
339 using StyleSheetCollectionMap = 351 typedef HeapHashMap<WeakMember<TreeScope>,
340 HeapHashMap<WeakMember<TreeScope>, 352 Member<ShadowTreeStyleSheetCollection>>
341 Member<ShadowTreeStyleSheetCollection>>; 353 StyleSheetCollectionMap;
342 StyleSheetCollectionMap m_styleSheetCollectionMap; 354 StyleSheetCollectionMap m_styleSheetCollectionMap;
343 355
344 bool m_documentScopeDirty = true; 356 bool m_documentScopeDirty = true;
345 bool m_allTreeScopesDirty = false; 357 bool m_allTreeScopesDirty = false;
346 UnorderedTreeScopeSet m_dirtyTreeScopes; 358 UnorderedTreeScopeSet m_dirtyTreeScopes;
347 UnorderedTreeScopeSet m_activeTreeScopes; 359 UnorderedTreeScopeSet m_activeTreeScopes;
348 DocumentOrderedList m_treeBoundaryCrossingScopes; 360 DocumentOrderedList m_treeBoundaryCrossingScopes;
349 361
350 String m_preferredStylesheetSetName; 362 String m_preferredStylesheetSetName;
351 String m_selectedStylesheetSetName; 363 String m_selectedStylesheetSetName;
352 364
353 CSSGlobalRuleSet m_globalRuleSet; 365 CSSGlobalRuleSet m_globalRuleSet;
354 366
355 bool m_usesRemUnits = false; 367 bool m_usesRemUnits = false;
356 bool m_ignorePendingStylesheets = false; 368 bool m_ignorePendingStylesheets = false;
369 bool m_didCalculateResolver = false;
357 370
358 Member<StyleResolver> m_resolver; 371 Member<StyleResolver> m_resolver;
359 Member<ViewportStyleResolver> m_viewportResolver; 372 Member<ViewportStyleResolver> m_viewportResolver;
360 Member<MediaQueryEvaluator> m_mediaQueryEvaluator; 373 Member<MediaQueryEvaluator> m_mediaQueryEvaluator;
361 StyleInvalidator m_styleInvalidator; 374 StyleInvalidator m_styleInvalidator;
362 375
363 Member<CSSFontSelector> m_fontSelector; 376 Member<CSSFontSelector> m_fontSelector;
364 377
365 HeapHashMap<AtomicString, WeakMember<StyleSheetContents>> m_textToSheetCache; 378 HeapHashMap<AtomicString, WeakMember<StyleSheetContents>> m_textToSheetCache;
366 HeapHashMap<WeakMember<StyleSheetContents>, AtomicString> m_sheetToTextCache; 379 HeapHashMap<WeakMember<StyleSheetContents>, AtomicString> m_sheetToTextCache;
367 380
368 std::unique_ptr<StyleResolverStats> m_styleResolverStats; 381 std::unique_ptr<StyleResolverStats> m_styleResolverStats;
369 unsigned m_styleForElementCount = 0; 382 unsigned m_styleForElementCount = 0;
370 383
371 friend class StyleEngineTest; 384 friend class StyleEngineTest;
372 }; 385 };
373 386
374 } // namespace blink 387 } // namespace blink
375 388
376 #endif 389 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698