| Index: third_party/WebKit/Source/core/dom/SelectorQuery.cpp
|
| diff --git a/third_party/WebKit/Source/core/dom/SelectorQuery.cpp b/third_party/WebKit/Source/core/dom/SelectorQuery.cpp
|
| index 491660ce42756269e7ee9eb4630669f89f858713..340a9aaa20ae0b0aa716cdc071259cdb2e20dcd3 100644
|
| --- a/third_party/WebKit/Source/core/dom/SelectorQuery.cpp
|
| +++ b/third_party/WebKit/Source/core/dom/SelectorQuery.cpp
|
| @@ -394,27 +394,20 @@ void SelectorQuery::executeSlow(
|
| // firstWithinTraversingShadowTree, nextTraversingShadowTree to the best place,
|
| // e.g. NodeTraversal.
|
| static ShadowRoot* authorShadowRootOf(const ContainerNode& node) {
|
| - if (!node.isElementNode() || !isShadowHost(&node))
|
| + if (!node.isElementNode())
|
| return nullptr;
|
| -
|
| ElementShadow* shadow = toElement(node).shadow();
|
| - DCHECK(shadow);
|
| + if (!shadow)
|
| + return nullptr;
|
| +
|
| for (ShadowRoot* shadowRoot = &shadow->oldestShadowRoot(); shadowRoot;
|
| shadowRoot = shadowRoot->youngerShadowRoot()) {
|
| - if (shadowRoot->type() == ShadowRootType::V0 ||
|
| - shadowRoot->type() == ShadowRootType::Open)
|
| + if (shadowRoot->isOpenOrV0())
|
| return shadowRoot;
|
| }
|
| return nullptr;
|
| }
|
|
|
| -static ContainerNode* firstWithinTraversingShadowTree(
|
| - const ContainerNode& rootNode) {
|
| - if (ShadowRoot* shadowRoot = authorShadowRootOf(rootNode))
|
| - return shadowRoot;
|
| - return ElementTraversal::firstWithin(rootNode);
|
| -}
|
| -
|
| static ContainerNode* nextTraversingShadowTree(const ContainerNode& node,
|
| const ContainerNode* rootNode) {
|
| if (ShadowRoot* shadowRoot = authorShadowRootOf(node))
|
| @@ -432,9 +425,7 @@ static ContainerNode* nextTraversingShadowTree(const ContainerNode& node,
|
| if (shadowRoot == rootNode)
|
| return nullptr;
|
| if (ShadowRoot* youngerShadowRoot = shadowRoot->youngerShadowRoot()) {
|
| - // Should not obtain any elements in closed or user-agent shadow root.
|
| - DCHECK(youngerShadowRoot->type() == ShadowRootType::V0 ||
|
| - youngerShadowRoot->type() == ShadowRootType::Open);
|
| + DCHECK(youngerShadowRoot->isOpenOrV0());
|
| return youngerShadowRoot;
|
| }
|
|
|
| @@ -447,8 +438,8 @@ template <typename SelectorQueryTrait>
|
| void SelectorQuery::executeSlowTraversingShadowTree(
|
| ContainerNode& rootNode,
|
| typename SelectorQueryTrait::OutputType& output) const {
|
| - for (ContainerNode* node = firstWithinTraversingShadowTree(rootNode); node;
|
| - node = nextTraversingShadowTree(*node, &rootNode)) {
|
| + for (ContainerNode* node = nextTraversingShadowTree(rootNode, &rootNode);
|
| + node; node = nextTraversingShadowTree(*node, &rootNode)) {
|
| if (!node->isElementNode())
|
| continue;
|
| Element* element = toElement(node);
|
|
|