Index: third_party/WebKit/Source/core/dom/Node.cpp |
diff --git a/third_party/WebKit/Source/core/dom/Node.cpp b/third_party/WebKit/Source/core/dom/Node.cpp |
index 7a5eca1ad8e04ddf27f1747d56fa9275aeb5f0f8..8914c2624ff508f3ab30e25e6d3f57c02852d931 100644 |
--- a/third_party/WebKit/Source/core/dom/Node.cpp |
+++ b/third_party/WebKit/Source/core/dom/Node.cpp |
@@ -774,11 +774,30 @@ bool Node::shouldHaveFocusAppearance() const { |
} |
bool Node::isInert() const { |
+ if (!canParticipateInFlatTree()) |
+ return true; |
+ |
+ // TODO(aboxhall): figure out whether to un-const all callers, |
+ // or to call updateDistribution() from call sites. |
+ const_cast<Node*>(this)->updateDistribution(); |
+ |
hayato
2017/02/16 05:52:54
I guess Node::isInert() has a lot of (internal) ca
esprehn
2017/02/16 06:08:12
We should avoid adding more of these ForBindings c
hayato
2017/02/16 06:25:55
Yeah, I am not a fan of adding "XXXBindng" in gene
esprehn
2017/02/16 06:46:54
isInert() itself walks up the tree, so doing it in
aboxhall
2017/02/27 19:33:19
I'm not sure where we ended up on this. Does this
|
const HTMLDialogElement* dialog = document().activeModalDialog(); |
if (dialog && this != document() && |
- (!canParticipateInFlatTree() || |
- !FlatTreeTraversal::containsIncludingPseudoElement(*dialog, *this))) |
+ !FlatTreeTraversal::containsIncludingPseudoElement(*dialog, *this)) { |
return true; |
+ } |
+ |
+ if (RuntimeEnabledFeatures::inertAttributeEnabled()) { |
+ const Element* element = this->isElementNode() |
+ ? toElement(this) |
+ : FlatTreeTraversal::parentElement(*this); |
+ while (element) { |
+ if (element->hasAttribute(inertAttr)) |
+ return true; |
+ element = FlatTreeTraversal::parentElement(*element); |
hayato
2017/02/16 05:52:54
Now we are exposing Node::isInert to WebIDL. That
esprehn
2017/02/16 06:08:12
The thing exposed to idl is a boolean attribute, i
hayato
2017/02/16 06:25:55
Ah, I thought that node.inert is using this Node::
|
+ } |
+ } |
+ |
return document().localOwner() && document().localOwner()->isInert(); |
} |