Index: Source/core/layout/TextAutosizer.cpp |
diff --git a/Source/core/layout/TextAutosizer.cpp b/Source/core/layout/TextAutosizer.cpp |
index 568da42a402b5e6fa9d1d1c72f169184c082d132..83f60c3b38409f748ac4dcc2eb9081241e180403 100644 |
--- a/Source/core/layout/TextAutosizer.cpp |
+++ b/Source/core/layout/TextAutosizer.cpp |
@@ -32,6 +32,7 @@ |
#include "core/layout/TextAutosizer.h" |
#include "core/dom/Document.h" |
+#include "core/dom/PseudoElement.h" |
#include "core/frame/FrameHost.h" |
#include "core/frame/FrameView.h" |
#include "core/frame/LocalFrame.h" |
@@ -459,8 +460,10 @@ float TextAutosizer::inflate(LayoutObject* parent, InflateBehavior behavior, flo |
// FIXME: Investigate why MarkOnlyThis is sufficient. |
if (parent->isLayoutInline()) |
child->setPreferredLogicalWidthsDirty(MarkOnlyThis); |
+ |
} else if (child->isLayoutInline()) { |
multiplier = inflate(child, behavior, multiplier); |
+ |
} else if (child->isLayoutBlock() && behavior == DescendToInnerBlocks |
&& !classifyBlock(child, INDEPENDENT | EXPLICIT_WIDTH | SUPPRESSING)) { |
multiplier = inflate(child, behavior, multiplier); |
@@ -470,11 +473,21 @@ float TextAutosizer::inflate(LayoutObject* parent, InflateBehavior behavior, flo |
if (hasTextChild) { |
applyMultiplier(parent, multiplier); // Parent handles line spacing. |
+ |
} else if (!parent->isListItem()) { |
// For consistency, a block with no immediate text child should always have a |
// multiplier of 1 (except for list items which are handled in inflateListItem). |
applyMultiplier(parent, 1); |
} |
+ |
+ if (RuntimeEnabledFeatures::listMarkerPseudoElementEnabled() && parent->isListItem()) { |
+ LayoutListItem* item = toLayoutListItem(parent); |
+ if (item->marker()) { |
+ inflateListItem(item, item->marker()); |
+ item->marker()->setPreferredLogicalWidthsDirty(MarkOnlyThis); |
+ } |
+ } |
+ |
return multiplier; |
} |