From c03210e858188bad89cef34cb6826def9d3b03dd Mon Sep 17 00:00:00 2001 From: Jelle Raaijmakers Date: Thu, 3 Jul 2025 14:39:57 +0200 Subject: [PATCH] LibWeb: Dump PaintableBox dimensions for inline layout nodes We were only dumping a PaintableBox' dimensions if its layout node was a Layout::Box as well, causing us to not dump the dimensions of paintables for inline nodes in the paintable tree. --- Libraries/LibWeb/Dump.cpp | 15 ++-- ...tion-containing-block-inline-situation.txt | 2 +- Tests/LibWeb/Layout/expected/acid1.txt | 10 +-- .../block-and-inline/block-inside-inline.txt | 4 +- ...percentage-height-wrapped-in-anonymous.txt | 4 +- ...ed-break-stops-non-whitespace-sequence.txt | 2 +- ...ine-block-leading-and-trailing-metrics.txt | 12 ++-- .../inline-block-vertical-align-middle.txt | 2 +- ...hat-starts-with-collapsible-whitespace.txt | 4 +- .../margin-padding-block-inline-start.txt | 2 +- .../margin-padding-block-inline.txt | 2 +- .../relpos-inline-element-js-offsets.txt | 6 +- .../relpos-inline-elements.txt | 6 +- .../br-should-not-generate-pseudo-before.txt | 2 +- ...-with-before-and-after-pseudo-elements.txt | 4 +- .../LibWeb/Layout/expected/css-all-unset.txt | 6 +- .../expected/css-attr-typed-fallback.txt | 2 +- .../Layout/expected/css-counters/basic.txt | 20 +++--- .../css-counters/counters-function.txt | 30 ++++---- .../expected/css-counters/hidden-elements.txt | 10 +-- .../Layout/expected/css-font-size-math.txt | 10 +-- .../expected/css-namespace-rule-matches.txt | 2 +- .../expected/css-namespace-rule-no-match.txt | 2 +- .../css-namespace-tag-name-selector.txt | 2 +- .../Layout/expected/css-quotes-nesting.txt | 70 +++++++++---------- .../css/counters-on-pseudo-elements.txt | 6 +- Tests/LibWeb/Layout/expected/details-open.txt | 2 +- .../Layout/expected/dialog-open-non-modal.txt | 2 +- .../display-contents-with-in-children.txt | 2 +- .../display-table-inline-children.txt | 2 +- .../Layout/expected/font-fractional-size.txt | 6 +- .../Layout/expected/font-size-legacy.txt | 2 +- .../expected/font-with-many-normal-values.txt | 8 +-- .../expected/host-pseudo-class-basic.txt | 2 +- .../inline-fragment-ordering-flakiness.txt | 2 +- .../inline-element-position-change.txt | 6 +- .../simple-update-inside-svg-subtree.txt | 2 +- .../list-item-marker-pseudo-placement.txt | 4 +- .../nowrap-and-no-line-break-opportunity.txt | 6 +- .../Layout/expected/object-fallback.txt | 2 +- .../ol-render-deep-hybrid-list-item-list.txt | 6 +- .../Layout/expected/overflow-with-padding.txt | 2 +- ...containing-block-has-indefinite-height.txt | 2 +- .../expected/picture-source-media-query.txt | 4 +- .../Layout/expected/popovertarget-button.txt | 2 +- Tests/LibWeb/Layout/expected/pre.txt | 2 +- ...w-tree-removed-from-dom-receives-event.txt | 2 +- .../space-is-soft-line-break-opportunity.txt | 6 +- .../Layout/expected/span-with-padding.txt | 2 +- ...ith-zero-intrinsic-size-and-no-viewbox.txt | 2 +- .../row-outer-size-with-computed-size.txt | 2 +- .../table/vertical-align-middle-vs-top.txt | 2 +- .../Layout/expected/vertical-align-middle.txt | 2 +- .../writing-modes-direction-inline.txt | 4 +- 54 files changed, 161 insertions(+), 164 deletions(-) diff --git a/Libraries/LibWeb/Dump.cpp b/Libraries/LibWeb/Dump.cpp index c4b2d235652..b142c508120 100644 --- a/Libraries/LibWeb/Dump.cpp +++ b/Libraries/LibWeb/Dump.cpp @@ -919,17 +919,14 @@ void dump_tree(StringBuilder& builder, Painting::Paintable const& paintable, boo builder.appendff("{}{} ({})", paintable.class_name(), color_off, paintable.layout_node().debug_description()); - if (paintable.layout_node().is_box()) { - auto const& paintable_box = static_cast(paintable); - builder.appendff(" {}", paintable_box.absolute_border_box_rect()); + if (auto const* paintable_box = as_if(paintable)) { + builder.appendff(" {}", paintable_box->absolute_border_box_rect()); - if (paintable_box.has_scrollable_overflow()) { - builder.appendff(" overflow: {}", paintable_box.scrollable_overflow_rect()); - } + if (paintable_box->has_scrollable_overflow()) + builder.appendff(" overflow: {}", paintable_box->scrollable_overflow_rect()); - if (!paintable_box.scroll_offset().is_zero()) { - builder.appendff(" scroll-offset: {}", paintable_box.scroll_offset()); - } + if (!paintable_box->scroll_offset().is_zero()) + builder.appendff(" scroll-offset: {}", paintable_box->scroll_offset()); } builder.append("\n"sv); for (auto const* child = paintable.first_child(); child; child = child->next_sibling()) { diff --git a/Tests/LibWeb/Layout/expected/abspos-static-position-containing-block-inline-situation.txt b/Tests/LibWeb/Layout/expected/abspos-static-position-containing-block-inline-situation.txt index 7633449e522..633ce45fb4a 100644 --- a/Tests/LibWeb/Layout/expected/abspos-static-position-containing-block-inline-situation.txt +++ b/Tests/LibWeb/Layout/expected/abspos-static-position-containing-block-inline-situation.txt @@ -10,7 +10,7 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline ViewportPaintable (Viewport<#document>) [0,0 800x600] PaintableWithLines (BlockContainer) [0,0 800x18] - PaintableWithLines (InlineNode) + PaintableWithLines (InlineNode) [8,13 36.84375x18] PaintableWithLines (BlockContainer
) [8,13 0x0] PaintableWithLines (BlockContainer
) [8,0 36.84375x18] TextPaintable (TextNode<#text>) diff --git a/Tests/LibWeb/Layout/expected/acid1.txt b/Tests/LibWeb/Layout/expected/acid1.txt index 3e8ca81c3d3..cabcc062836 100644 --- a/Tests/LibWeb/Layout/expected/acid1.txt +++ b/Tests/LibWeb/Layout/expected/acid1.txt @@ -140,19 +140,19 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600] PaintableWithLines (BlockContainer

) [235,55 139.96875x10] TextPaintable (TextNode<#text>) PaintableWithLines (BlockContainer(anonymous)) [235,65 139.96875x0] - PaintableWithLines (InlineNode

) + PaintableWithLines (InlineNode) [235,65 0x10] PaintableWithLines (BlockContainer(anonymous)) [235,65 139.96875x19] PaintableWithLines (BlockContainer

) [235,65 139.96875x19] TextPaintable (TextNode<#text>) RadioButtonPaintable (RadioButton) [262.5,65 12x12] PaintableWithLines (BlockContainer(anonymous)) [235,84 139.96875x0] - PaintableWithLines (InlineNode) + PaintableWithLines (InlineNode) [235,84 0x10] PaintableWithLines (BlockContainer(anonymous)) [235,84 139.96875x19] PaintableWithLines (BlockContainer

) [235,84 139.96875x19] TextPaintable (TextNode<#text>) RadioButtonPaintable (RadioButton) [280.171875,84 12x12] PaintableWithLines (BlockContainer(anonymous)) [235,103 139.96875x0] - PaintableWithLines (InlineNode) + PaintableWithLines (InlineNode) [235,103 0x10] PaintableWithLines (BlockContainer

  • ) [394.96875,45 80x120] TextPaintable (TextNode<#text>) PaintableWithLines (BlockContainer
  • #baz) [135,175 120x120] @@ -168,10 +168,10 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600] PaintableWithLines (BlockContainer(anonymous)) [20,30 480x0] PaintableWithLines (BlockContainer

    ) [20,335 480x65] TextPaintable (TextNode<#text>) - PaintableWithLines (InlineNode) + PaintableWithLines (InlineNode) [227.9375,361 103.03125x13] TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>) - PaintableWithLines (InlineNode) + PaintableWithLines (InlineNode) [365.59375,387 59.90625x13] TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>) PaintableWithLines (BlockContainer(anonymous)) [20,400 480x0] diff --git a/Tests/LibWeb/Layout/expected/block-and-inline/block-inside-inline.txt b/Tests/LibWeb/Layout/expected/block-and-inline/block-inside-inline.txt index 03f739e0603..aea00bdc214 100644 --- a/Tests/LibWeb/Layout/expected/block-and-inline/block-inside-inline.txt +++ b/Tests/LibWeb/Layout/expected/block-and-inline/block-inside-inline.txt @@ -29,10 +29,10 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600] TextPaintable (TextNode<#text>) PaintableWithLines (BlockContainer

    ) [43.15625,8 27.640625x18] PaintableWithLines (BlockContainer(anonymous)) [43.15625,8 27.640625x0] - PaintableWithLines (InlineNode) + PaintableWithLines (InlineNode) [43.15625,8 0x18] PaintableWithLines (BlockContainer(anonymous)) [43.15625,8 27.640625x18] PaintableWithLines (BlockContainer
    ) [43.15625,8 27.640625x18] TextPaintable (TextNode<#text>) PaintableWithLines (BlockContainer(anonymous)) [43.15625,26 27.640625x0] - PaintableWithLines (InlineNode) + PaintableWithLines (InlineNode) [43.15625,26 0x18] TextPaintable (TextNode<#text>) diff --git a/Tests/LibWeb/Layout/expected/block-and-inline/box-with-percentage-height-wrapped-in-anonymous.txt b/Tests/LibWeb/Layout/expected/block-and-inline/box-with-percentage-height-wrapped-in-anonymous.txt index 42d949320c4..cfd86495101 100644 --- a/Tests/LibWeb/Layout/expected/block-and-inline/box-with-percentage-height-wrapped-in-anonymous.txt +++ b/Tests/LibWeb/Layout/expected/block-and-inline/box-with-percentage-height-wrapped-in-anonymous.txt @@ -20,10 +20,10 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600] PaintableWithLines (BlockContainer) [8,8 784x100] overflow: [8,8 784x136] PaintableWithLines (BlockContainer
    .outer) [8,8 100x100] overflow: [8,8 100x136] PaintableWithLines (BlockContainer(anonymous)) [8,8 100x18] - PaintableWithLines (InlineNode
    .inline) + PaintableWithLines (InlineNode
    .inline) [8,8 9.34375x18] TextPaintable (TextNode<#text>) PaintableWithLines (BlockContainer(anonymous)) [8,26 100x100] PaintableWithLines (BlockContainer
    .inner) [8,26 100x100] PaintableWithLines (BlockContainer(anonymous)) [8,126 100x18] - PaintableWithLines (InlineNode
    .inline) + PaintableWithLines (InlineNode
    .inline) [8,126 9.46875x18] TextPaintable (TextNode<#text>) diff --git a/Tests/LibWeb/Layout/expected/block-and-inline/forced-break-stops-non-whitespace-sequence.txt b/Tests/LibWeb/Layout/expected/block-and-inline/forced-break-stops-non-whitespace-sequence.txt index 9b243bb5f9c..fbd4ea5e1f7 100644 --- a/Tests/LibWeb/Layout/expected/block-and-inline/forced-break-stops-non-whitespace-sequence.txt +++ b/Tests/LibWeb/Layout/expected/block-and-inline/forced-break-stops-non-whitespace-sequence.txt @@ -12,5 +12,5 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600] PaintableWithLines (BlockContainer) [0,0 800x43] PaintableWithLines (BlockContainer) [8,13 784x17] PaintableWithLines (BlockContainer
    ) [8,13 784x17]
    -        PaintableWithLines (InlineNode)
    +        PaintableWithLines (InlineNode) [9,14 6.5x15]
               TextPaintable (TextNode<#text>)
    diff --git a/Tests/LibWeb/Layout/expected/block-and-inline/inline-block-leading-and-trailing-metrics.txt b/Tests/LibWeb/Layout/expected/block-and-inline/inline-block-leading-and-trailing-metrics.txt
    index 5c04415f728..26a8123bfcf 100644
    --- a/Tests/LibWeb/Layout/expected/block-and-inline/inline-block-leading-and-trailing-metrics.txt
    +++ b/Tests/LibWeb/Layout/expected/block-and-inline/inline-block-leading-and-trailing-metrics.txt
    @@ -56,23 +56,23 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600]
           PaintableWithLines (BlockContainer
    #a) [8,8 784x20] PaintableWithLines (BlockContainer) [9,9 88.453125x18] TextPaintable (TextNode<#text>) - PaintableWithLines (InlineNode) + PaintableWithLines (InlineNode) [97.453125,9 61.296875x18] TextPaintable (TextNode<#text>) - PaintableWithLines (InlineNode) + PaintableWithLines (InlineNode) [158.75,9 41.296875x18] TextPaintable (TextNode<#text>) PaintableWithLines (BlockContainer(anonymous)) [8,28 784x0] PaintableWithLines (BlockContainer
    #b) [8,28 784x20] - PaintableWithLines (InlineNode) + PaintableWithLines (InlineNode) [9,29 61.296875x18] TextPaintable (TextNode<#text>) PaintableWithLines (BlockContainer) [70.296875,29 88.453125x18] TextPaintable (TextNode<#text>) - PaintableWithLines (InlineNode) + PaintableWithLines (InlineNode) [158.75,29 41.296875x18] TextPaintable (TextNode<#text>) PaintableWithLines (BlockContainer(anonymous)) [8,48 784x0] PaintableWithLines (BlockContainer
    #c) [8,48 784x20] - PaintableWithLines (InlineNode) + PaintableWithLines (InlineNode) [9,49 41.296875x18] TextPaintable (TextNode<#text>) - PaintableWithLines (InlineNode) + PaintableWithLines (InlineNode) [50.296875,49 81.296875x18] TextPaintable (TextNode<#text>) PaintableWithLines (BlockContainer) [131.59375,49 88.453125x18] TextPaintable (TextNode<#text>) diff --git a/Tests/LibWeb/Layout/expected/block-and-inline/inline-block-vertical-align-middle.txt b/Tests/LibWeb/Layout/expected/block-and-inline/inline-block-vertical-align-middle.txt index ba28b616cb9..4b444432c55 100644 --- a/Tests/LibWeb/Layout/expected/block-and-inline/inline-block-vertical-align-middle.txt +++ b/Tests/LibWeb/Layout/expected/block-and-inline/inline-block-vertical-align-middle.txt @@ -11,6 +11,6 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline ViewportPaintable (Viewport<#document>) [0,0 800x600] PaintableWithLines (BlockContainer) [0,0 800x116] PaintableWithLines (BlockContainer) [8,8 784x100] - PaintableWithLines (InlineNode) + PaintableWithLines (InlineNode) [8,48 135.15625x100] TextPaintable (TextNode<#text>) PaintableWithLines (BlockContainer.thing) [43.15625,8 100x100] diff --git a/Tests/LibWeb/Layout/expected/block-and-inline/leading-margin-on-inline-content-that-starts-with-collapsible-whitespace.txt b/Tests/LibWeb/Layout/expected/block-and-inline/leading-margin-on-inline-content-that-starts-with-collapsible-whitespace.txt index b111c417618..6c4ad162837 100644 --- a/Tests/LibWeb/Layout/expected/block-and-inline/leading-margin-on-inline-content-that-starts-with-collapsible-whitespace.txt +++ b/Tests/LibWeb/Layout/expected/block-and-inline/leading-margin-on-inline-content-that-starts-with-collapsible-whitespace.txt @@ -14,7 +14,7 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline ViewportPaintable (Viewport<#document>) [0,0 800x600] PaintableWithLines (BlockContainer) [0,0 800x34] PaintableWithLines (BlockContainer) [8,8 784x18] - PaintableWithLines (InlineNode
    ) + PaintableWithLines (InlineNode
    ) [28,8 82.125x18] TextPaintable (TextNode<#text>) - PaintableWithLines (InlineNode
    ) + PaintableWithLines (InlineNode
    ) [150.125,8 39.5625x18] TextPaintable (TextNode<#text>) diff --git a/Tests/LibWeb/Layout/expected/block-and-inline/margin-padding-block-inline-start.txt b/Tests/LibWeb/Layout/expected/block-and-inline/margin-padding-block-inline-start.txt index 5f0691b3996..ca26cf3ed63 100644 --- a/Tests/LibWeb/Layout/expected/block-and-inline/margin-padding-block-inline-start.txt +++ b/Tests/LibWeb/Layout/expected/block-and-inline/margin-padding-block-inline-start.txt @@ -13,5 +13,5 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600] PaintableWithLines (BlockContainer) [9,9 502x84] PaintableWithLines (BlockContainer
    .a) [10,10 500x82] PaintableWithLines (BlockContainer
    .b) [91,31 328x20] - PaintableWithLines (InlineNode) + PaintableWithLines (InlineNode) [92,31 41.78125x20] TextPaintable (TextNode<#text>) diff --git a/Tests/LibWeb/Layout/expected/block-and-inline/margin-padding-block-inline.txt b/Tests/LibWeb/Layout/expected/block-and-inline/margin-padding-block-inline.txt index 8dc409fc972..8e9f9e7807b 100644 --- a/Tests/LibWeb/Layout/expected/block-and-inline/margin-padding-block-inline.txt +++ b/Tests/LibWeb/Layout/expected/block-and-inline/margin-padding-block-inline.txt @@ -13,5 +13,5 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600] PaintableWithLines (BlockContainer) [9,9 502x104] PaintableWithLines (BlockContainer
    .a) [10,10 500x102] PaintableWithLines (BlockContainer
    .b) [71,51 378x20] - PaintableWithLines (InlineNode) + PaintableWithLines (InlineNode) [72,51 41.78125x20] TextPaintable (TextNode<#text>) diff --git a/Tests/LibWeb/Layout/expected/block-and-inline/relpos-inline-element-js-offsets.txt b/Tests/LibWeb/Layout/expected/block-and-inline/relpos-inline-element-js-offsets.txt index 4353b78ce54..5079e3d0924 100644 --- a/Tests/LibWeb/Layout/expected/block-and-inline/relpos-inline-element-js-offsets.txt +++ b/Tests/LibWeb/Layout/expected/block-and-inline/relpos-inline-element-js-offsets.txt @@ -37,11 +37,11 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600] PaintableWithLines (BlockContainer) [0,0 800x169] PaintableWithLines (BlockContainer) [8,8 784x148] PaintableWithLines (BlockContainer(anonymous)) [8,8 784x18] - PaintableWithLines (InlineNode) + PaintableWithLines (InlineNode) [8,8 136.609375x18] TextPaintable (TextNode<#text>) - PaintableWithLines (InlineNode) + PaintableWithLines (InlineNode) [44.40625,33 100.203125x18] TextPaintable (TextNode<#text>) - PaintableWithLines (InlineNode) + PaintableWithLines (InlineNode) [89.25,58 55.359375x18] TextPaintable (TextNode<#text>) PaintableWithLines (BlockContainer
    ) [8,26 784x130] PaintableWithLines (BlockContainer(anonymous)) [8,26 784x72] diff --git a/Tests/LibWeb/Layout/expected/block-and-inline/relpos-inline-elements.txt b/Tests/LibWeb/Layout/expected/block-and-inline/relpos-inline-elements.txt index 8fca923709a..9d9a2880f0c 100644 --- a/Tests/LibWeb/Layout/expected/block-and-inline/relpos-inline-elements.txt +++ b/Tests/LibWeb/Layout/expected/block-and-inline/relpos-inline-elements.txt @@ -22,9 +22,9 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600] PaintableWithLines (BlockContainer) [0,0 800x34] PaintableWithLines (BlockContainer) [8,8 784x18] TextPaintable (TextNode<#text>) - PaintableWithLines (InlineNode) + PaintableWithLines (InlineNode) [43.15625,33 27.640625x18] TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>) - PaintableWithLines (InlineNode) - PaintableWithLines (InlineNode) + PaintableWithLines (InlineNode) [53.796875,58 27.203125x18] + PaintableWithLines (InlineNode) [53.796875,58 27.203125x18] TextPaintable (TextNode<#text>) diff --git a/Tests/LibWeb/Layout/expected/br-should-not-generate-pseudo-before.txt b/Tests/LibWeb/Layout/expected/br-should-not-generate-pseudo-before.txt index 9f3fe25ad7e..c5cdfefc569 100644 --- a/Tests/LibWeb/Layout/expected/br-should-not-generate-pseudo-before.txt +++ b/Tests/LibWeb/Layout/expected/br-should-not-generate-pseudo-before.txt @@ -19,7 +19,7 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600] PaintableWithLines (BlockContainer) [0,0 800x94] PaintableWithLines (BlockContainer) [8,16 784x70] PaintableWithLines (BlockContainer

    ) [8,16 784x18] - PaintableWithLines (InlineNode(anonymous)) + PaintableWithLines (InlineNode(anonymous)) [8,16 10.625x18] TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>) PaintableWithLines (BlockContainer(anonymous)) [8,50 784x36] diff --git a/Tests/LibWeb/Layout/expected/button-with-before-and-after-pseudo-elements.txt b/Tests/LibWeb/Layout/expected/button-with-before-and-after-pseudo-elements.txt index be578fd4434..26156c8f0ec 100644 --- a/Tests/LibWeb/Layout/expected/button-with-before-and-after-pseudo-elements.txt +++ b/Tests/LibWeb/Layout/expected/button-with-before-and-after-pseudo-elements.txt @@ -24,8 +24,8 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600] PaintableWithLines (BlockContainer