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

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

Issue 1111643003: Move StyleInvalidator to StyleEngine. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Avoid calling ensureUpdatedRuleFeatureSet multiple times Created 5 years, 7 months 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 | Annotate | Revision Log
« no previous file with comments | « Source/core/dom/Node.cpp ('k') | Source/core/dom/StyleEngine.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 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
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/invalidation/StyleInvalidator.h"
33 #include "core/css/resolver/StyleResolver.h" 34 #include "core/css/resolver/StyleResolver.h"
34 #include "core/dom/Document.h" 35 #include "core/dom/Document.h"
35 #include "core/dom/DocumentOrderedList.h" 36 #include "core/dom/DocumentOrderedList.h"
36 #include "core/dom/DocumentStyleSheetCollection.h" 37 #include "core/dom/DocumentStyleSheetCollection.h"
37 #include "platform/heap/Handle.h" 38 #include "platform/heap/Handle.h"
38 #include "wtf/FastAllocBase.h" 39 #include "wtf/FastAllocBase.h"
39 #include "wtf/ListHashSet.h" 40 #include "wtf/ListHashSet.h"
40 #include "wtf/RefPtr.h" 41 #include "wtf/RefPtr.h"
41 #include "wtf/TemporaryChange.h" 42 #include "wtf/TemporaryChange.h"
42 #include "wtf/Vector.h" 43 #include "wtf/Vector.h"
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 } else if (m_resolver->hasPendingAuthorStyleSheets()) { 143 } else if (m_resolver->hasPendingAuthorStyleSheets()) {
143 m_resolver->appendPendingAuthorStyleSheets(); 144 m_resolver->appendPendingAuthorStyleSheets();
144 } 145 }
145 return *m_resolver.get(); 146 return *m_resolver.get();
146 } 147 }
147 148
148 bool hasResolver() const { return m_resolver.get(); } 149 bool hasResolver() const { return m_resolver.get(); }
149 void clearResolver(); 150 void clearResolver();
150 void clearMasterResolver(); 151 void clearMasterResolver();
151 152
153 StyleInvalidator& styleInvalidator() { return m_styleInvalidator; }
154
152 CSSFontSelector* fontSelector() { return m_fontSelector.get(); } 155 CSSFontSelector* fontSelector() { return m_fontSelector.get(); }
153 void setFontSelector(PassRefPtrWillBeRawPtr<CSSFontSelector>); 156 void setFontSelector(PassRefPtrWillBeRawPtr<CSSFontSelector>);
154 157
155 void removeFontFaceRules(const WillBeHeapVector<RawPtrWillBeMember<const Sty leRuleFontFace>>&); 158 void removeFontFaceRules(const WillBeHeapVector<RawPtrWillBeMember<const Sty leRuleFontFace>>&);
156 void clearFontCache(); 159 void clearFontCache();
157 // updateGenericFontFamilySettings is used from WebSettingsImpl. 160 // updateGenericFontFamilySettings is used from WebSettingsImpl.
158 void updateGenericFontFamilySettings(); 161 void updateGenericFontFamilySettings();
159 162
160 void didDetach(); 163 void didDetach();
161 bool shouldClearResolver() const; 164 bool shouldClearResolver() const;
162 void resolverChanged(StyleResolverUpdateMode); 165 void resolverChanged(StyleResolverUpdateMode);
163 unsigned resolverAccessCount() const; 166 unsigned resolverAccessCount() const;
164 167
165 void markDocumentDirty(); 168 void markDocumentDirty();
166 169
167 PassRefPtrWillBeRawPtr<CSSStyleSheet> createSheet(Element*, const String& te xt, TextPosition startPosition, bool createdByParser); 170 PassRefPtrWillBeRawPtr<CSSStyleSheet> createSheet(Element*, const String& te xt, TextPosition startPosition, bool createdByParser);
168 void removeSheet(StyleSheetContents*); 171 void removeSheet(StyleSheetContents*);
169 172
170 void collectScopedStyleFeaturesTo(RuleFeatureSet&) const; 173 void collectScopedStyleFeaturesTo(RuleFeatureSet&) const;
171 174
172 void platformColorsChanged(); 175 void platformColorsChanged();
173 176
177 void classChangedForElement(const SpaceSplitString& changedClasses, Element& );
178 void classChangedForElement(const SpaceSplitString& oldClasses, const SpaceS plitString& newClasses, Element&);
179 void attributeChangedForElement(const QualifiedName& attributeName, Element& );
180 void idChangedForElement(const AtomicString& oldId, const AtomicString& newI d, Element&);
181 void pseudoStateChangedForElement(CSSSelector::PseudoType, Element&);
182
174 DECLARE_VIRTUAL_TRACE(); 183 DECLARE_VIRTUAL_TRACE();
175 184
176 private: 185 private:
177 // CSSFontSelectorClient implementation. 186 // CSSFontSelectorClient implementation.
178 virtual void fontsNeedUpdate(CSSFontSelector*) override; 187 virtual void fontsNeedUpdate(CSSFontSelector*) override;
179 188
180 private: 189 private:
181 StyleEngine(Document&); 190 StyleEngine(Document&);
182 191
183 TreeScopeStyleSheetCollection* ensureStyleSheetCollectionFor(TreeScope&); 192 TreeScopeStyleSheetCollection* ensureStyleSheetCollectionFor(TreeScope&);
184 TreeScopeStyleSheetCollection* styleSheetCollectionFor(TreeScope&); 193 TreeScopeStyleSheetCollection* styleSheetCollectionFor(TreeScope&);
185 bool shouldUpdateDocumentStyleSheetCollection(StyleResolverUpdateMode) const ; 194 bool shouldUpdateDocumentStyleSheetCollection(StyleResolverUpdateMode) const ;
186 bool shouldUpdateShadowTreeStyleSheetCollection(StyleResolverUpdateMode) con st; 195 bool shouldUpdateShadowTreeStyleSheetCollection(StyleResolverUpdateMode) con st;
187 196
188 void markTreeScopeDirty(TreeScope&); 197 void markTreeScopeDirty(TreeScope&);
189 198
190 bool isMaster() const { return m_isMaster; } 199 bool isMaster() const { return m_isMaster; }
191 Document* master(); 200 Document* master();
192 Document& document() const { return *m_document; } 201 Document& document() const { return *m_document; }
193 202
203 void scheduleInvalidationSetsForElement(const InvalidationSetVector&, Elemen t&);
204
194 typedef WillBeHeapHashSet<RawPtrWillBeMember<TreeScope>> UnorderedTreeScopeS et; 205 typedef WillBeHeapHashSet<RawPtrWillBeMember<TreeScope>> UnorderedTreeScopeS et;
195 206
196 // A class which holds document-ordered treescopes which have stylesheets. 207 // A class which holds document-ordered treescopes which have stylesheets.
197 // ListHashSet allows only sequential access, not random access. 208 // ListHashSet allows only sequential access, not random access.
198 // So it gets slow when the size of treescopes gets larger when finding 209 // So it gets slow when the size of treescopes gets larger when finding
199 // the best place to insert a treescope into the document-ordered 210 // the best place to insert a treescope into the document-ordered
200 // treescopes (requires linear search). 211 // treescopes (requires linear search).
201 // To solve this, use a vector for the document-ordered treescopes and 212 // To solve this, use a vector for the document-ordered treescopes and
202 // use a hashset for quickly checking whether a given treescope is 213 // use a hashset for quickly checking whether a given treescope is
203 // in the document-ordered treescopes or not. 214 // in the document-ordered treescopes or not.
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 bool m_usesSiblingRules; 290 bool m_usesSiblingRules;
280 bool m_usesFirstLineRules; 291 bool m_usesFirstLineRules;
281 bool m_usesWindowInactiveSelector; 292 bool m_usesWindowInactiveSelector;
282 bool m_usesFirstLetterRules; 293 bool m_usesFirstLetterRules;
283 bool m_usesRemUnits; 294 bool m_usesRemUnits;
284 unsigned m_maxDirectAdjacentSelectors; 295 unsigned m_maxDirectAdjacentSelectors;
285 296
286 bool m_ignorePendingStylesheets; 297 bool m_ignorePendingStylesheets;
287 bool m_didCalculateResolver; 298 bool m_didCalculateResolver;
288 OwnPtrWillBeMember<StyleResolver> m_resolver; 299 OwnPtrWillBeMember<StyleResolver> m_resolver;
300 StyleInvalidator m_styleInvalidator;
289 301
290 RefPtrWillBeMember<CSSFontSelector> m_fontSelector; 302 RefPtrWillBeMember<CSSFontSelector> m_fontSelector;
291 303
292 WillBeHeapHashMap<AtomicString, RawPtrWillBeMember<StyleSheetContents>> m_te xtToSheetCache; 304 WillBeHeapHashMap<AtomicString, RawPtrWillBeMember<StyleSheetContents>> m_te xtToSheetCache;
293 WillBeHeapHashMap<RawPtrWillBeMember<StyleSheetContents>, AtomicString> m_sh eetToTextCache; 305 WillBeHeapHashMap<RawPtrWillBeMember<StyleSheetContents>, AtomicString> m_sh eetToTextCache;
294 }; 306 };
295 307
296 } 308 }
297 309
298 #endif 310 #endif
OLDNEW
« no previous file with comments | « Source/core/dom/Node.cpp ('k') | Source/core/dom/StyleEngine.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698