| Index: Source/core/css/SelectorChecker.cpp
|
| diff --git a/Source/core/css/SelectorChecker.cpp b/Source/core/css/SelectorChecker.cpp
|
| index eff32607837754fcff7e2bca5a3902e7eff25b5e..53cef3949782b32e5f8a87d55202e83837a94b4a 100644
|
| --- a/Source/core/css/SelectorChecker.cpp
|
| +++ b/Source/core/css/SelectorChecker.cpp
|
| @@ -607,7 +607,7 @@ bool SelectorChecker::checkOne(const SelectorCheckingContext& context, const Sib
|
| }
|
| case CSSSelector::PseudoFirstChild:
|
| // first-child matches the first child that is an element
|
| - if (ContainerNode* parent = element.parentElementOrShadowRoot()) {
|
| + if (ContainerNode* parent = element.parentElementOrDocumentFragment()) {
|
| bool result = siblingTraversalStrategy.isFirstChild(element);
|
| if (m_mode == ResolvingStyle) {
|
| RenderStyle* childStyle = context.elementStyle ? context.elementStyle : element.renderStyle();
|
| @@ -620,7 +620,7 @@ bool SelectorChecker::checkOne(const SelectorCheckingContext& context, const Sib
|
| break;
|
| case CSSSelector::PseudoFirstOfType:
|
| // first-of-type matches the first element of its type
|
| - if (ContainerNode* parent = element.parentElementOrShadowRoot()) {
|
| + if (ContainerNode* parent = element.parentElementOrDocumentFragment()) {
|
| bool result = siblingTraversalStrategy.isFirstOfType(element, element.tagQName());
|
| if (m_mode == ResolvingStyle)
|
| parent->setChildrenAffectedByForwardPositionalRules();
|
| @@ -629,7 +629,7 @@ bool SelectorChecker::checkOne(const SelectorCheckingContext& context, const Sib
|
| break;
|
| case CSSSelector::PseudoLastChild:
|
| // last-child matches the last child that is an element
|
| - if (ContainerNode* parent = element.parentElementOrShadowRoot()) {
|
| + if (ContainerNode* parent = element.parentElementOrDocumentFragment()) {
|
| bool result = parent->isFinishedParsingChildren() && siblingTraversalStrategy.isLastChild(element);
|
| if (m_mode == ResolvingStyle) {
|
| RenderStyle* childStyle = context.elementStyle ? context.elementStyle : element.renderStyle();
|
| @@ -642,7 +642,7 @@ bool SelectorChecker::checkOne(const SelectorCheckingContext& context, const Sib
|
| break;
|
| case CSSSelector::PseudoLastOfType:
|
| // last-of-type matches the last element of its type
|
| - if (ContainerNode* parent = element.parentElementOrShadowRoot()) {
|
| + if (ContainerNode* parent = element.parentElementOrDocumentFragment()) {
|
| if (m_mode == ResolvingStyle)
|
| parent->setChildrenAffectedByBackwardPositionalRules();
|
| if (!parent->isFinishedParsingChildren())
|
| @@ -651,7 +651,7 @@ bool SelectorChecker::checkOne(const SelectorCheckingContext& context, const Sib
|
| }
|
| break;
|
| case CSSSelector::PseudoOnlyChild:
|
| - if (ContainerNode* parent = element.parentElementOrShadowRoot()) {
|
| + if (ContainerNode* parent = element.parentElementOrDocumentFragment()) {
|
| bool firstChild = siblingTraversalStrategy.isFirstChild(element);
|
| bool onlyChild = firstChild && parent->isFinishedParsingChildren() && siblingTraversalStrategy.isLastChild(element);
|
| if (m_mode == ResolvingStyle) {
|
| @@ -668,7 +668,7 @@ bool SelectorChecker::checkOne(const SelectorCheckingContext& context, const Sib
|
| break;
|
| case CSSSelector::PseudoOnlyOfType:
|
| // FIXME: This selector is very slow.
|
| - if (ContainerNode* parent = element.parentElementOrShadowRoot()) {
|
| + if (ContainerNode* parent = element.parentElementOrDocumentFragment()) {
|
| if (m_mode == ResolvingStyle) {
|
| parent->setChildrenAffectedByForwardPositionalRules();
|
| parent->setChildrenAffectedByBackwardPositionalRules();
|
| @@ -681,7 +681,7 @@ bool SelectorChecker::checkOne(const SelectorCheckingContext& context, const Sib
|
| case CSSSelector::PseudoNthChild:
|
| if (!selector.parseNth())
|
| break;
|
| - if (ContainerNode* parent = element.parentElementOrShadowRoot()) {
|
| + if (ContainerNode* parent = element.parentElementOrDocumentFragment()) {
|
| int count = 1 + siblingTraversalStrategy.countElementsBefore(element);
|
| if (m_mode == ResolvingStyle) {
|
| RenderStyle* childStyle = context.elementStyle ? context.elementStyle : element.renderStyle();
|
| @@ -697,7 +697,7 @@ bool SelectorChecker::checkOne(const SelectorCheckingContext& context, const Sib
|
| case CSSSelector::PseudoNthOfType:
|
| if (!selector.parseNth())
|
| break;
|
| - if (ContainerNode* parent = element.parentElementOrShadowRoot()) {
|
| + if (ContainerNode* parent = element.parentElementOrDocumentFragment()) {
|
| int count = 1 + siblingTraversalStrategy.countElementsOfTypeBefore(element, element.tagQName());
|
| if (m_mode == ResolvingStyle)
|
| parent->setChildrenAffectedByForwardPositionalRules();
|
| @@ -709,7 +709,7 @@ bool SelectorChecker::checkOne(const SelectorCheckingContext& context, const Sib
|
| case CSSSelector::PseudoNthLastChild:
|
| if (!selector.parseNth())
|
| break;
|
| - if (ContainerNode* parent = element.parentElementOrShadowRoot()) {
|
| + if (ContainerNode* parent = element.parentElementOrDocumentFragment()) {
|
| if (m_mode == ResolvingStyle)
|
| parent->setChildrenAffectedByBackwardPositionalRules();
|
| if (!parent->isFinishedParsingChildren())
|
| @@ -722,7 +722,7 @@ bool SelectorChecker::checkOne(const SelectorCheckingContext& context, const Sib
|
| case CSSSelector::PseudoNthLastOfType:
|
| if (!selector.parseNth())
|
| break;
|
| - if (ContainerNode* parent = element.parentElementOrShadowRoot()) {
|
| + if (ContainerNode* parent = element.parentElementOrDocumentFragment()) {
|
| if (m_mode == ResolvingStyle)
|
| parent->setChildrenAffectedByBackwardPositionalRules();
|
| if (!parent->isFinishedParsingChildren())
|
|
|