Chromium Code Reviews| Index: third_party/WebKit/Source/core/dom/LayoutTreeBuilderTraversal.cpp |
| diff --git a/third_party/WebKit/Source/core/dom/LayoutTreeBuilderTraversal.cpp b/third_party/WebKit/Source/core/dom/LayoutTreeBuilderTraversal.cpp |
| index df6ce336cd67a569ae6ee9b3a8fafd813493c799..8d34119ddabf19790588ada07b20366ad9bdd59b 100644 |
| --- a/third_party/WebKit/Source/core/dom/LayoutTreeBuilderTraversal.cpp |
| +++ b/third_party/WebKit/Source/core/dom/LayoutTreeBuilderTraversal.cpp |
| @@ -35,11 +35,21 @@ namespace blink { |
| namespace LayoutTreeBuilderTraversal { |
| +inline static bool hasDisplayContentsStyle(const Node& node) { |
| + return node.isElementNode() && toElement(node).displayContentsStyle(); |
| +} |
| + |
| static bool isLayoutObjectReparented(const LayoutObject* layoutObject) { |
| if (!layoutObject->node()->isElementNode()) |
| return false; |
| + |
| if (toElement(layoutObject->node())->isInTopLayer()) |
| return true; |
| + |
| + if (layoutObject->node()->parentNode() && |
| + hasDisplayContentsStyle(*layoutObject->node()->parentNode())) |
| + return true; |
| + |
| return false; |
| } |
| @@ -68,6 +78,16 @@ ContainerNode* parent(const Node& node, ParentDetails* details) { |
| return FlatTreeTraversal::parent(node, details); |
| } |
| +LayoutObject* parentLayoutObject(const Node& node) { |
| + ContainerNode* parent = LayoutTreeBuilderTraversal::parent(node); |
| + |
| + while (parent && hasDisplayContentsStyle(*parent)) { |
| + parent = LayoutTreeBuilderTraversal::parent(*parent); |
| + } |
| + |
| + return parent ? parent->layoutObject() : 0; |
|
jfernandez
2016/10/27 17:08:02
use nullptr instead of 0
|
| +} |
| + |
| Node* nextSibling(const Node& node) { |
| if (node.isBeforePseudoElement()) { |
| assertPseudoElementParent(toPseudoElement(node)); |