| Index: Source/core/css/SelectorChecker.h
|
| diff --git a/Source/core/css/SelectorChecker.h b/Source/core/css/SelectorChecker.h
|
| index 55fddb9b94246bd5005aa9db388028156cf1be49..30ded5bb5967ee50b6aba937080fcf5d66cfca0b 100644
|
| --- a/Source/core/css/SelectorChecker.h
|
| +++ b/Source/core/css/SelectorChecker.h
|
| @@ -47,16 +47,11 @@ public:
|
| enum VisitedMatchType { VisitedMatchDisabled, VisitedMatchEnabled };
|
| enum Mode { ResolvingStyle = 0, CollectingStyleRules, CollectingCSSRules, QueryingRules, SharingRules };
|
| explicit SelectorChecker(Document&, Mode);
|
| - enum BehaviorAtBoundary {
|
| - DoesNotCrossBoundary = 0,
|
| - // FIXME: refactor to remove BoundaryBehavior (i.e. DoesNotCrossBoundary and StaysWithinTreeScope).
|
| - StaysWithinTreeScope = 2,
|
| - BoundaryBehaviorMask = 3, // 2bit for boundary behavior
|
| - ScopeContainsLastMatchedElement = 4,
|
| - ScopeIsShadowRoot = 8,
|
| - TreatShadowHostAsNormalScope = 16,
|
| -
|
| - ScopeIsShadowHostInPseudoHostParameter = ScopeIsShadowRoot | TreatShadowHostAsNormalScope
|
| + enum ContextFlags {
|
| + // FIXME: Revmoe DefaultBehavior.
|
| + DefaultBehavior = 0,
|
| + ScopeContainsLastMatchedElement = 1,
|
| + TreatShadowHostAsNormalScope = 2,
|
| };
|
|
|
| struct SelectorCheckingContext {
|
| @@ -74,7 +69,7 @@ public:
|
| , isSubSelector(false)
|
| , hasScrollbarPseudo(false)
|
| , hasSelectionPseudo(false)
|
| - , behaviorAtBoundary(DoesNotCrossBoundary)
|
| + , contextFlags(DefaultBehavior)
|
| { }
|
|
|
| const CSSSelector* selector;
|
| @@ -89,7 +84,7 @@ public:
|
| bool isSubSelector;
|
| bool hasScrollbarPseudo;
|
| bool hasSelectionPseudo;
|
| - BehaviorAtBoundary behaviorAtBoundary;
|
| + ContextFlags contextFlags;
|
| };
|
|
|
| struct MatchResult {
|
| @@ -119,7 +114,7 @@ public:
|
| enum LinkMatchMask { MatchLink = 1, MatchVisited = 2, MatchAll = MatchLink | MatchVisited };
|
| static unsigned determineLinkMatchType(const CSSSelector&);
|
|
|
| - static bool isHostInItsShadowTree(const Element&, BehaviorAtBoundary, const ContainerNode* scope);
|
| + static bool isHostInItsShadowTree(const Element&, const ContainerNode* scope);
|
|
|
| private:
|
| template<typename SiblingTraversalStrategy>
|
| @@ -132,8 +127,6 @@ private:
|
| Match matchForPseudoShadow(const ContainerNode*, const SelectorCheckingContext&, const SiblingTraversalStrategy&, MatchResult*) const;
|
|
|
| bool checkScrollbarPseudoClass(const SelectorCheckingContext&, Document*, const CSSSelector&) const;
|
| - Element* parentElement(const SelectorCheckingContext&, bool allowToCrossBoundary = false) const;
|
| - bool scopeContainsLastMatchedElement(const SelectorCheckingContext&) const;
|
|
|
| static bool isFrameFocused(const Element&);
|
|
|
| @@ -177,7 +170,7 @@ inline bool SelectorChecker::checkExactAttribute(const Element& element, const Q
|
| return false;
|
| }
|
|
|
| -inline bool SelectorChecker::isHostInItsShadowTree(const Element& element, BehaviorAtBoundary behaviorAtBoundary, const ContainerNode* scope)
|
| +inline bool SelectorChecker::isHostInItsShadowTree(const Element& element, const ContainerNode* scope)
|
| {
|
| return scope && scope->isInShadowTree() && scope->shadowHost() == element;
|
| }
|
|
|