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

Unified Diff: third_party/WebKit/Source/core/dom/LayoutTreeBuilder.cpp

Issue 2450093005: Support display: contents for elements, first-line and first-letter pseudos. (Closed)
Patch Set: Support display: contents for elements, first-line and first-letter pseudos. 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/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));

Powered by Google App Engine
This is Rietveld 408576698