Index: Source/core/css/CSSSelector.h |
diff --git a/Source/core/css/CSSSelector.h b/Source/core/css/CSSSelector.h |
index 563e371b27be5d4127c9cc10a76fed257fce96f7..9118960cdb608a211cacdad7d94b7b58400fa570 100644 |
--- a/Source/core/css/CSSSelector.h |
+++ b/Source/core/css/CSSSelector.h |
@@ -290,12 +290,15 @@ namespace blink { |
bool matchesPseudoElement() const; |
bool isCustomPseudoElement() const; |
bool isDirectAdjacentSelector() const { return m_relation == DirectAdjacent; } |
+ bool isAdjacentSelector() const { return m_relation == DirectAdjacent || m_relation == IndirectAdjacent; } |
bool isSiblingSelector() const; |
bool isAttributeSelector() const; |
bool isContentPseudoElement() const; |
bool isShadowPseudoElement() const; |
bool isHostPseudoClass() const; |
- |
+ bool isShadowSelector() const { return m_relation == ShadowPseudo || m_relation == ShadowDeep; } |
+ bool isTreeBoundaryCrossing() const; |
+ bool isInsertionPointCrossing() const; |
// FIXME: selectors with no tagHistory() get a relation() of Descendant (and sometimes even SubSelector). It should instead be |
// None. |
Relation relation() const { return static_cast<Relation>(m_relation); } |
@@ -445,6 +448,17 @@ inline bool CSSSelector::isShadowPseudoElement() const |
return m_match == PseudoElement && pseudoType() == PseudoShadow; |
} |
+inline bool CSSSelector::isTreeBoundaryCrossing() const |
+{ |
+ return m_match == PseudoClass && (pseudoType() == PseudoHost || pseudoType() == PseudoHostContext); |
+} |
+ |
+inline bool CSSSelector::isInsertionPointCrossing() const |
+{ |
+ return (m_match == PseudoClass && pseudoType() == PseudoHostContext) |
+ || (m_match == PseudoElement && pseudoType() == PseudoContent); |
+} |
+ |
inline void CSSSelector::setValue(const AtomicString& value) |
{ |
ASSERT(m_match != Tag); |