Chromium Code Reviews| Index: Source/core/css/resolver/StyleResolver.h |
| diff --git a/Source/core/css/resolver/StyleResolver.h b/Source/core/css/resolver/StyleResolver.h |
| index 51d87a6e34177017176ee62c432aa0b6ac3feb78..c651f7344022921436997ccb12a2ae437d9f8888 100644 |
| --- a/Source/core/css/resolver/StyleResolver.h |
| +++ b/Source/core/css/resolver/StyleResolver.h |
| @@ -40,6 +40,7 @@ |
| #include "wtf/Deque.h" |
| #include "wtf/HashMap.h" |
| #include "wtf/HashSet.h" |
| +#include "wtf/ListHashSet.h" |
| #include "wtf/RefPtr.h" |
| #include "wtf/Vector.h" |
| @@ -216,6 +217,11 @@ public: |
| void resetAtHostRules(const ShadowRoot*); |
| void finishAppendAuthorStyleSheets(); |
| + void lazyAppendAuthorStyleSheets(unsigned firstNew, const Vector<RefPtr<CSSStyleSheet> >&); |
| + void removePendingAuthorStyleSheets(const Vector<RefPtr<CSSStyleSheet> >&); |
| + void appendPendingAuthorStyleSheets(); |
| + bool hasPendingAuthorStyleSheets() const { return m_pendingStyleSheets.size() > 0 || m_needCollectFeatures; } |
| + |
| DocumentRuleSets& ruleSets() { return m_ruleSets; } |
| const DocumentRuleSets& ruleSets() const { return m_ruleSets; } |
| SelectorFilter& selectorFilter() { return m_selectorFilter; } |
| @@ -265,6 +271,12 @@ public: |
| InspectorCSSOMWrappers& inspectorCSSOMWrappers() { return m_inspectorCSSOMWrappers; } |
| const RuleFeatureSet& ruleFeatureSet() const { return m_features; } |
|
eseidel
2013/11/06 01:39:10
I'm confused. This can now be stale right? Don't
tasak
2013/11/06 05:42:26
I left the method for fast-path, e.g. Document::cr
|
| + const RuleFeatureSet& ensureRuleFeatureSet() |
| + { |
| + if (hasPendingAuthorStyleSheets()) |
| + appendPendingAuthorStyleSheets(); // slow path. |
| + return m_features; |
| + } |
| StyleSharingList& styleSharingList() { return m_styleSharingList; } |
| @@ -285,6 +297,10 @@ private: |
| // FIXME: This should probably go away, folded into FontBuilder. |
| void updateFont(StyleResolverState&); |
| + void filterFontFaceAndViewportRules(const Vector<RefPtr<StyleRuleBase> >& rules, bool& needsResolveViewport); |
| + void filterFontFaceAndViewportRulesFromSheet(StyleSheetContents*, bool& needsResolveViewport); |
| + bool filterFontFaceAndViewportRulesFromAuthorStyleSheets(unsigned firstNew, const Vector<RefPtr<CSSStyleSheet> >& styleSheets); |
| + |
| void collectPseudoRulesForElement(Element*, ElementRuleCollector&, PseudoId, unsigned rulesToInclude); |
| void matchUARules(ElementRuleCollector&, RuleSet*); |
| void matchAuthorRules(Element*, ElementRuleCollector&, bool includeEmptyRules); |
| @@ -295,6 +311,7 @@ private: |
| void matchUserRules(ElementRuleCollector&, bool includeEmptyRules); |
| void collectFeatures(); |
| void collectTreeBoundaryCrossingRules(ElementRuleCollector&, bool includeEmptyRules); |
| + void resetRuleFeatures(); |
| bool fastRejectSelector(const RuleData&) const; |
| @@ -350,6 +367,8 @@ private: |
| RefPtr<ViewportStyleResolver> m_viewportStyleResolver; |
| + ListHashSet<CSSStyleSheet*, 16> m_pendingStyleSheets; |
| + |
| ScopedStyleTree m_styleTree; |
| // FIXME: The entire logic of collecting features on StyleResolver, as well astransferring them |
| @@ -357,6 +376,7 @@ private: |
| RuleFeatureSet m_features; |
| OwnPtr<RuleSet> m_siblingRuleSet; |
| OwnPtr<RuleSet> m_uncommonAttributeRuleSet; |
| + bool m_needCollectFeatures; |
| InspectorCSSOMWrappers m_inspectorCSSOMWrappers; |
| @@ -384,6 +404,18 @@ inline bool checkRegionSelector(const CSSSelector* regionSelector, Element* regi |
| return false; |
| } |
| +inline bool isDocumentScope(const ContainerNode* scope) |
| +{ |
| + return !scope || scope->isDocumentNode(); |
| +} |
| + |
| +inline void appendPendingStyleSheetsIfNeeded(StyleResolver* styleResolver) |
| +{ |
| + if (!styleResolver || !styleResolver->hasPendingAuthorStyleSheets()) |
| + return; |
| + styleResolver->appendPendingAuthorStyleSheets(); |
| +} |
| + |
| } // namespace WebCore |
| #endif // StyleResolver_h |