Index: third_party/WebKit/Source/core/dom/LayoutTreeBuilder.cpp |
diff --git a/third_party/WebKit/Source/core/dom/LayoutTreeBuilder.cpp b/third_party/WebKit/Source/core/dom/LayoutTreeBuilder.cpp |
index 77046c3b2ad24a774e8c5737e3b599527bf9ec82..333ff3d0acd139cccce138a7d2b08310f0e02cb4 100644 |
--- a/third_party/WebKit/Source/core/dom/LayoutTreeBuilder.cpp |
+++ b/third_party/WebKit/Source/core/dom/LayoutTreeBuilder.cpp |
@@ -49,13 +49,15 @@ LayoutTreeBuilderForElement::LayoutTreeBuilderForElement(Element& element, |
ComputedStyle* style) |
: LayoutTreeBuilder(element, nullptr), m_style(style) { |
DCHECK(!element.isActiveSlotOrActiveInsertionPoint()); |
+ // TODO(ecobos): Move the first-letter logic inside parentLayoutObject too? |
+ // It's an extra (unnecessary) check for text nodes, though. |
if (element.isFirstLetterPseudoElement()) { |
if (LayoutObject* nextLayoutObject = |
FirstLetterPseudoElement::firstLetterTextLayoutObject(element)) |
m_layoutObjectParent = nextLayoutObject->parent(); |
- } else if (ContainerNode* containerNode = |
- LayoutTreeBuilderTraversal::parent(element)) { |
- m_layoutObjectParent = containerNode->layoutObject(); |
+ } else { |
+ m_layoutObjectParent = |
+ LayoutTreeBuilderTraversal::parentLayoutObject(element); |
} |
} |
@@ -106,7 +108,6 @@ bool LayoutTreeBuilderForElement::shouldCreateLayoutObject() const { |
return false; |
if (!parentLayoutObject->canHaveChildren()) |
return false; |
- |
return m_node->layoutObjectIsNeeded(style()); |
} |
@@ -156,7 +157,11 @@ void LayoutTreeBuilderForElement::createLayoutObject() { |
} |
void LayoutTreeBuilderForText::createLayoutObject() { |
- ComputedStyle& style = m_layoutObjectParent->mutableStyleRef(); |
+ ComputedStyle& style = *m_style; |
+ |
+ DCHECK(m_style == m_layoutObjectParent->style() || |
+ toElement(LayoutTreeBuilderTraversal::parent(*m_node)) |
+ ->hasDisplayContentsStyle()); |
DCHECK(m_node->textLayoutObjectIsNeeded(style, *m_layoutObjectParent)); |