Index: third_party/WebKit/Source/core/css/SelectorChecker.cpp |
diff --git a/third_party/WebKit/Source/core/css/SelectorChecker.cpp b/third_party/WebKit/Source/core/css/SelectorChecker.cpp |
index 532dfd82e3911facd01cfd03ee3f0c5717e3415c..cd7b522d97bcf4f40563d7ff99a70615038d84a1 100644 |
--- a/third_party/WebKit/Source/core/css/SelectorChecker.cpp |
+++ b/third_party/WebKit/Source/core/css/SelectorChecker.cpp |
@@ -745,7 +745,7 @@ bool SelectorChecker::checkPseudoClass(const SelectorCheckingContext& context, |
parent->setChildrenAffectedByLastChildRules(); |
element.setAffectedByLastChildRules(); |
} |
- if (!parent->isFinishedParsingChildren()) |
+ if (!m_isQuerySelector && !parent->isFinishedParsingChildren()) |
return false; |
return isLastChild(element); |
} |
@@ -754,7 +754,7 @@ bool SelectorChecker::checkPseudoClass(const SelectorCheckingContext& context, |
if (ContainerNode* parent = element.parentElementOrDocumentFragment()) { |
if (m_mode == ResolvingStyle) |
parent->setChildrenAffectedByBackwardPositionalRules(); |
- if (!parent->isFinishedParsingChildren()) |
+ if (!m_isQuerySelector && !parent->isFinishedParsingChildren()) |
return false; |
return isLastOfType(element, element.tagQName()); |
} |
@@ -767,7 +767,7 @@ bool SelectorChecker::checkPseudoClass(const SelectorCheckingContext& context, |
element.setAffectedByFirstChildRules(); |
element.setAffectedByLastChildRules(); |
} |
- if (!parent->isFinishedParsingChildren()) |
+ if (!m_isQuerySelector && !parent->isFinishedParsingChildren()) |
return false; |
return isFirstChild(element) && isLastChild(element); |
} |
@@ -779,7 +779,7 @@ bool SelectorChecker::checkPseudoClass(const SelectorCheckingContext& context, |
parent->setChildrenAffectedByForwardPositionalRules(); |
parent->setChildrenAffectedByBackwardPositionalRules(); |
} |
- if (!parent->isFinishedParsingChildren()) |
+ if (!m_isQuerySelector && !parent->isFinishedParsingChildren()) |
return false; |
return isFirstOfType(element, element.tagQName()) && |
isLastOfType(element, element.tagQName()); |
@@ -807,7 +807,7 @@ bool SelectorChecker::checkPseudoClass(const SelectorCheckingContext& context, |
if (ContainerNode* parent = element.parentElementOrDocumentFragment()) { |
if (m_mode == ResolvingStyle) |
parent->setChildrenAffectedByBackwardPositionalRules(); |
- if (!parent->isFinishedParsingChildren()) |
+ if (!m_isQuerySelector && !parent->isFinishedParsingChildren()) |
return false; |
return selector.matchNth(NthIndexCache::nthLastChildIndex(element)); |
} |
@@ -816,7 +816,7 @@ bool SelectorChecker::checkPseudoClass(const SelectorCheckingContext& context, |
if (ContainerNode* parent = element.parentElementOrDocumentFragment()) { |
if (m_mode == ResolvingStyle) |
parent->setChildrenAffectedByBackwardPositionalRules(); |
- if (!parent->isFinishedParsingChildren()) |
+ if (!m_isQuerySelector && !parent->isFinishedParsingChildren()) |
return false; |
return selector.matchNth(NthIndexCache::nthLastOfTypeIndex(element)); |
} |