| Index: Source/core/css/resolver/StyleResolver.h
|
| diff --git a/Source/core/css/resolver/StyleResolver.h b/Source/core/css/resolver/StyleResolver.h
|
| index 5431346533c6e5eb4decfe3fe12cafcf3cd3da7d..5de019d31d4a4948aabd358bc5568f62a493d20d 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"
|
|
|
| @@ -145,6 +146,11 @@ public:
|
| TreeBoundaryCrossingRules& treeBoundaryCrossingRules() { return m_treeBoundaryCrossingRules; }
|
| void processScopedRules(const RuleSet& authorRules, const KURL&, const ContainerNode* scope = 0);
|
|
|
| + 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; }
|
| +
|
| SelectorFilter& selectorFilter() { return m_selectorFilter; }
|
|
|
| void setBuildScopedStyleTreeInDocumentOrder(bool enabled) { m_styleTree.setBuildInDocumentOrder(enabled); }
|
| @@ -198,7 +204,12 @@ public:
|
| // FIXME: StyleResolver should not have this member or method.
|
| InspectorCSSOMWrappers& inspectorCSSOMWrappers() { return m_inspectorCSSOMWrappers; }
|
|
|
| - const RuleFeatureSet& ruleFeatureSet() const { return m_features; }
|
| + const RuleFeatureSet& ensureRuleFeatureSet()
|
| + {
|
| + if (hasPendingAuthorStyleSheets())
|
| + appendPendingAuthorStyleSheets();
|
| + return m_features;
|
| + }
|
|
|
| StyleSharingList& styleSharingList() { return m_styleSharingList; }
|
|
|
| @@ -224,6 +235,10 @@ private:
|
| // FIXME: This should probably go away, folded into FontBuilder.
|
| void updateFont(StyleResolverState&);
|
|
|
| + void filterViewportRules(const Vector<RefPtr<StyleRuleBase> >& rules, bool& needsResolveViewport);
|
| + void filterViewportRulesFromSheet(StyleSheetContents*, bool& needsResolveViewport);
|
| + bool filterViewportRulesFromAuthorStyleSheets(unsigned firstNew, const Vector<RefPtr<CSSStyleSheet> >& styleSheets);
|
| +
|
| void collectPseudoRulesForElement(Element*, ElementRuleCollector&, PseudoId, unsigned rulesToInclude);
|
| void matchUARules(ElementRuleCollector&, RuleSet*);
|
| void matchAuthorRules(Element*, ElementRuleCollector&, bool includeEmptyRules);
|
| @@ -235,6 +250,7 @@ private:
|
| void matchWatchSelectorRules(ElementRuleCollector&);
|
| void collectFeatures();
|
| void collectTreeBoundaryCrossingRules(Element*, ElementRuleCollector&, bool includeEmptyRules);
|
| + void resetRuleFeatures();
|
|
|
| bool fastRejectSelector(const RuleData&) const;
|
|
|
| @@ -286,6 +302,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
|
| @@ -293,10 +311,13 @@ private:
|
| RuleFeatureSet m_features;
|
| OwnPtr<RuleSet> m_siblingRuleSet;
|
| OwnPtr<RuleSet> m_uncommonAttributeRuleSet;
|
| +
|
| // FIXME: watched selectors should be implemented using injected author stylesheets: http://crbug.com/316960
|
| OwnPtr<RuleSet> m_watchedSelectorsRules;
|
| TreeBoundaryCrossingRules m_treeBoundaryCrossingRules;
|
|
|
| + bool m_needCollectFeatures;
|
| +
|
| InspectorCSSOMWrappers m_inspectorCSSOMWrappers;
|
|
|
| StyleResourceLoader m_styleResourceLoader;
|
| @@ -323,6 +344,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
|
|
|