Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Unified Diff: third_party/WebKit/Source/core/css/SelectorChecker.cpp

Issue 2505543004: Let querySelector(All) match (nth-)last with unclosed parent. (Closed)
Patch Set: Added expectation file Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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));
}

Powered by Google App Engine
This is Rietveld 408576698