From dab1fd265d99d75dcf540e43015eb164a62898f1 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sun, 6 Jul 2025 14:45:04 +0200 Subject: [PATCH] test-web: Dump stacking context tree in layout test output This will allow us to test (and catch regressions in) stacking context tree construction and updates, etc. --- Libraries/LibWeb/Painting/StackingContext.cpp | 7 ++-- Libraries/LibWeb/Painting/StackingContext.h | 2 +- Libraries/LibWebView/PageInfo.h | 1 + Services/WebContent/ConnectionFromClient.cpp | 42 ++++++++++++++++++- .../expected/Element-insertAdjacentHTML.txt | 3 ++ ...date-the-image-data-temporary-document.txt | 3 ++ .../HTMLSelectElement-selected-index.txt | 3 ++ .../abspos-box-bottom-with-max-height.txt | 3 ++ .../abspos-box-with-block-level-sibling.txt | 3 ++ .../abspos-box-with-replaced-element.txt | 3 ++ ...abspos-flex-container-with-auto-height.txt | 3 ++ .../expected/abspos-flex-margin-limits-1.txt | 3 ++ .../expected/abspos-flex-margin-limits-2.txt | 3 ++ .../abspos-flexbox-with-auto-height.txt | 3 ++ .../abspos-flexbox-with-auto-width.txt | 3 ++ ...bspos-image-with-min-height-constraint.txt | 3 ++ ...on-bfc-root-with-min-height-constraint.txt | 3 ++ ...os-not-replaced-multiple-auto-variants.txt | 3 ++ ...tion-containing-block-inline-situation.txt | 3 ++ .../abspos-with-percentage-insets.txt | 3 ++ ...bspos-with-static-position-in-one-axis.txt | 3 ++ Tests/LibWeb/Layout/expected/acid1.txt | 3 ++ ...ly-ignore-the-negative-overflow-region.txt | 3 ++ ...continue-to-inherit-style-after-change.txt | 3 ++ .../expected/aspect-ratio-auto-and-ratio.txt | 3 ++ .../Layout/expected/aspect-ratio-auto.txt | 3 ++ .../aspect-ratio-degenerate-ratio.txt | 3 ++ .../Layout/expected/aspect-ratio-ratio.txt | 3 ++ .../auto-margin-max-width-container.txt | 3 ++ ...ed-abspos-element-must-not-be-negative.txt | 3 ++ ...ed-abspos-element-must-not-be-negative.txt | 3 ++ .../bfc-fit-content-width-with-margin.txt | 3 ++ Tests/LibWeb/Layout/expected/blank.txt | 3 ++ .../expected/block-and-inline/abspos-br.txt | 3 ++ .../abspos-grid-with-definite-width.txt | 3 ++ .../abspos-only-with-inset-left.txt | 3 ++ ...bspos-with-auto-margins-in-inline-axis.txt | 3 ++ ...t-insets-relative-to-box-with-paddings.txt | 3 ++ .../abspos-with-insets-and-auto-margins.txt | 3 ++ ...gainst-padding-box-of-containing-block.txt | 3 ++ .../abspos-with-percentage-padding.txt | 3 ++ ...sets-relative-top-box-with-padding-top.txt | 3 ++ .../abspos-without-insets.txt | 3 ++ ...ct-ratio-but-width-and-height-are-auto.txt | 3 ++ .../atomic-inline-with-aspect-ratio-2.txt | 3 ++ ...-inline-with-percentage-vertical-align.txt | 3 ++ .../atomic-inline-with-white-space-nowrap.txt | 3 ++ ...e-children-and-nonempty-floating-child.txt | 3 ++ ...-consider-all-currently-stacked-floats.txt | 3 ++ .../bfc-float-left-break-vertically-2.txt | 3 ++ .../bfc-float-left-break-vertically.txt | 3 ++ ...xpands-for-descendants-with-margin-top.txt | 3 ++ .../block-and-inline/block-inside-inline.txt | 3 ++ ...lock-level-floating-box-with-clearance.txt | 3 ++ ...ock-with-fit-content-width-constraints.txt | 3 ++ .../block-with-fit-content-width.txt | 3 ++ ...n-overflow-after-float-and-margin-left.txt | 3 ++ ...block-with-hidden-overflow-after-float.txt | 3 ++ ...th-hidden-overflow-after-sibling-float.txt | 3 ++ .../block-with-max-content-width.txt | 3 ++ .../block-with-min-content-width.txt | 3 ++ ...egative-margin-and-no-intruding-floats.txt | 3 ++ .../box-with-clearance-and-margin-top.txt | 3 ++ ...percentage-height-wrapped-in-anonymous.txt | 3 ++ .../button-baseline-align.txt | 3 ++ .../block-and-inline/button-image-only.txt | 3 ++ ...should-have-vertically-aligned-content.txt | 3 ++ .../block-and-inline/button-width.txt | 3 ++ .../button-with-abspos-pseudo-element.txt | 3 ++ .../button-with-after-pseudo.txt | 4 ++ .../button-with-before-pseudo.txt | 4 ++ ...tton-with-block-content-baseline-align.txt | 3 ++ .../button-with-min-height.txt | 3 ++ ...on-with-multiple-words-text-node-label.txt | 3 ++ ...ton-with-text-node-label-and-font-size.txt | 3 ++ .../button-with-text-node-label.txt | 3 ++ ...ar-both-from-inline-formatting-context.txt | 3 ++ ...ear-both-without-introducing-clearance.txt | 3 ++ .../expected/block-and-inline/clearfix.txt | 3 ++ .../columns-33-percent-width.txt | 3 ++ ...tainer-should-avoid-overlapping-floats.txt | 3 ++ .../expected/block-and-inline/float-1.txt | 3 ++ .../expected/block-and-inline/float-2.txt | 3 ++ .../expected/block-and-inline/float-3.txt | 3 ++ .../expected/block-and-inline/float-4.txt | 3 ++ ...at-clear-by-line-break-at-end-of-block.txt | 3 ++ ...-clear-by-line-break-followed-by-block.txt | 3 ++ ...clear-by-line-break-followed-by-inline.txt | 3 ++ ...ar-right-should-not-affect-inline-left.txt | 3 ++ .../float-clear-simultaneously.txt | 3 ++ .../block-and-inline/float-fits-exactly.txt | 3 ++ .../float-following-trailing-whitespace.txt | 3 ++ ...loat-initial-available-space-vs-height.txt | 3 ++ .../float-inside-margin-auto-container.txt | 3 ++ .../float-intrusions-relative-coordinates.txt | 3 ++ ...d-right-with-justified-text-in-between.txt | 3 ++ ...at-left-and-right-with-text-in-between.txt | 3 ++ .../block-and-inline/float-logical.txt | 3 ++ ...-content-containing-block-flex-display.txt | 3 ++ .../float-max-content-containing-block.txt | 3 ++ .../float-nested-under-eachother.txt | 3 ++ .../float-should-avoid-inline-block.txt | 3 ++ .../block-and-inline/float-stress-1.txt | 3 ++ .../block-and-inline/float-stress-2.txt | 3 ++ .../block-and-inline/float-stress-3.txt | 3 ++ .../float-under-if-would-fit.txt | 3 ++ ...ertical-clearance-for-text-after-break.txt | 3 ++ ...rtical-clearance-ignores-opposite-side.txt | 3 ++ ...oat-vertical-offset-by-preceding-float.txt | 3 ++ .../float-with-inline-contents-hoisted.txt | 3 ++ .../float-with-negative-margins.txt | 3 ++ ...loating-box-with-box-sizing-border-box.txt | 3 ++ .../floats-and-negative-margins.txt | 3 ++ ...loats-with-negative-percentage-margins.txt | 3 ++ ...ed-break-stops-non-whitespace-sequence.txt | 3 ++ ...tainer-should-avoid-overlapping-floats.txt | 3 ++ .../html-element-height-quirks-mode-off.txt | 3 ++ .../html-element-height-quirks-mode-on.txt | 3 ++ ...loat-left-and-sibling-with-margin-left.txt | 3 ++ .../inline-block-baseline-1.txt | 3 ++ .../inline-block-baseline-2.txt | 3 ++ ...line-block-contained-by-abspos-element.txt | 3 ++ ...ine-block-leading-and-trailing-metrics.txt | 3 ++ .../inline-block-percentage-max-width.txt | 3 ++ .../inline-block-vertical-align-middle.txt | 3 ++ ...nline-block-with-max-width-fit-content.txt | 3 ++ ...inline-block-with-negative-margin-left.txt | 3 ++ ...nline-block-with-negative-margin-right.txt | 3 ++ ...ht-and-auto-height-of-containing-block.txt | 3 ++ .../inline-box-positioned-with-top-left.txt | 3 ++ ...th-vertical-margins-vertical-align-top.txt | 3 ++ .../inline-box-with-vertical-margins.txt | 3 ++ .../block-and-inline/inline-float-clear.txt | 3 ++ ...e-node-not-inserted-into-generated-box.txt | 3 ++ ...rinsic-sizing-with-min-width-specified.txt | 3 ++ ...us-sibling-if-wrapped-in-anonymous-box.txt | 3 ++ ...hat-starts-with-collapsible-whitespace.txt | 3 ++ .../list-markers-intruded-by-float.txt | 3 ++ .../block-and-inline/margin-collapse-1.txt | 3 ++ .../block-and-inline/margin-collapse-2.txt | 3 ++ .../block-and-inline/margin-collapse-3.txt | 3 ++ .../block-and-inline/margin-collapse-4.txt | 3 ++ .../block-and-inline/margin-collapse-5.txt | 3 ++ .../block-and-inline/margin-collapse-6.txt | 3 ++ ...in-must-not-collapse-across-nested-bfc.txt | 3 ++ .../margin-padding-block-inline-start.txt | 3 ++ .../margin-padding-block-inline.txt | 3 ++ ...max-width-for-box-with-inline-children.txt | 3 ++ .../max-width-must-not-expand-element.txt | 3 ++ ...dth-on-block-level-box-that-creates-fc.txt | 4 ++ ...ontributes-to-intrinsic-size-of-parent.txt | 3 ++ .../max-width-percentage-100-border-box.txt | 3 ++ .../max-width-percentage-100.txt | 3 ++ .../max-width-percentage-containing-block.txt | 3 ++ .../max-width-wrapped-in-max-content.txt | 3 ++ ...min-width-for-box-with-inline-children.txt | 3 ++ ...bfc-width-to-avoid-overlap-with-floats.txt | 3 ++ .../negative-margin-with-padding.txt | 3 ++ ...-flows-not-inserted-into-generated-box.txt | 3 ++ ...bspos-box-with-percentage-height-child.txt | 3 ++ ...-box-nested-into-percentage-height-box.txt | 3 ++ .../percentage-height-in-quirks-mode.txt | 3 ++ ...n-height-with-containing-block-padding.txt | 3 ++ .../percentage-min-height.txt | 3 ++ ...ith-max-content-containing-block-width.txt | 3 ++ ...-with-indefinite-containing-block-size.txt | 3 ++ .../block-and-inline/relpos-block.txt | 3 ++ .../block-and-inline/relpos-float.txt | 3 ++ .../relpos-inline-element-js-offsets.txt | 3 ++ .../relpos-inline-elements.txt | 3 ++ .../single-br-inline-layout.txt | 3 ++ .../small-percentage-margin.txt | 3 ++ ...ns-set-zero-if-containing-size-smaller.txt | 3 ++ Tests/LibWeb/Layout/expected/block-size.txt | 3 ++ ...y-layout-internal-box-without-crashing.txt | 3 ++ ...-radius-invalid-corner-sampling-config.txt | 3 ++ .../border-spacing-calc-dont-crash.txt | 3 ++ ...-box-for-definite-sizes-without-layout.txt | 3 ++ .../br-should-not-generate-pseudo-before.txt | 3 ++ ...-with-before-and-after-pseudo-elements.txt | 3 ++ .../calc-font-size-with-percentages.txt | 3 ++ .../Layout/expected/calc-negate-length.txt | 3 ++ .../expected/calc-negative-border-width.txt | 3 ++ Tests/LibWeb/Layout/expected/calc-with-fr.txt | 3 ++ .../child-of-abspos-percentage-height.txt | 3 ++ .../html-with-only-a-template-tag.txt | 3 ++ .../LibWeb/Layout/expected/css-all-unset.txt | 3 ++ .../Layout/expected/css-appearance-none.txt | 3 ++ .../expected/css-attr-typed-fallback.txt | 3 ++ .../Layout/expected/css-calc-border-width.txt | 3 ++ .../expected/css-content-visibility.txt | 5 ++- .../Layout/expected/css-counters/basic.txt | 3 ++ .../counters-function-single-argument.txt | 3 ++ .../css-counters/counters-function.txt | 3 ++ .../expected/css-counters/hidden-elements.txt | 3 ++ .../expected/css-degenerate-aspect-ratio.txt | 3 ++ .../Layout/expected/css-dir-selector.txt | 3 ++ Tests/LibWeb/Layout/expected/css-ex-unit.txt | 3 ++ .../Layout/expected/css-font-size-calc.txt | 3 ++ .../Layout/expected/css-font-size-math.txt | 3 ++ .../css-host-selector-gets-parsed.txt | 3 ++ .../Layout/expected/css-import-rule.txt | 3 ++ .../css-imported-sheet-with-media-rule.txt | 3 ++ .../css-invalid-psuedo-compound-selector.txt | 3 ++ ...css-line-height-percentage-inheritance.txt | 3 ++ .../Layout/expected/css-line-height-zero.txt | 3 ++ .../expected/css-logical-inset-properties.txt | 3 ++ .../expected/css-namespace-rule-matches.txt | 3 ++ .../expected/css-namespace-rule-no-match.txt | 3 ++ .../css-namespace-tag-name-selector.txt | 3 ++ .../css-namespace-universal-selector.txt | 3 ++ .../css-pseudo-element-blockification.txt | 3 ++ .../css-pseudo-element-display-list-item.txt | 3 ++ ...should-not-be-affected-by-inline-style.txt | 3 ++ ...ot-be-affected-by-presentational-hints.txt | 3 ++ .../Layout/expected/css-quotes-nesting.txt | 3 ++ .../css-rect-value-with-calc-dont-crash.txt | 3 ++ Tests/LibWeb/Layout/expected/css-revert.txt | 3 ++ ...s-round-function-with-percentage-value.txt | 3 ++ .../css-snap-a-length-as-a-border-width.txt | 3 ++ .../css-table-cell-verticalalign-text-top.txt | 3 ++ .../expected/css-text-transform-math-auto.txt | 3 ++ .../Layout/expected/css-transition-none.txt | 3 ++ .../css-values/calc-min-with-percentage.txt | 3 ++ .../css-values/comparison-functions.txt | 3 ++ .../css-values/exponential-functions.txt | 3 ++ .../expected/css-values/numeric-constants.txt | 3 ++ .../rect-non-token-contents-crash.txt | 3 ++ .../css-values/sign-related-functions.txt | 3 ++ .../css-values/stepped-value-functions.txt | 3 ++ .../css-values/trigonometric-functions.txt | 10 +++++ .../Layout/expected/css-var-in-calc-block.txt | 3 ++ .../css/counters-on-pseudo-elements.txt | 3 ++ .../LibWeb/Layout/expected/details-closed.txt | 3 ++ Tests/LibWeb/Layout/expected/details-open.txt | 3 ++ .../details-summary-default-ua-style.txt | 3 ++ .../Layout/expected/dialog-open-modal.txt | 5 +++ .../Layout/expected/dialog-open-non-modal.txt | 3 ++ .../display-contents-with-in-children.txt | 3 ++ .../expected/display-table-column-crash.txt | 3 ++ .../display-table-inline-children.txt | 3 ++ Tests/LibWeb/Layout/expected/div_align.txt | 3 ++ .../Layout/expected/div_align_nested.txt | 3 ++ .../document-write-incomplete-tag.txt | 3 ++ ...nt-crash-on-relayout-that-rewraps-text.txt | 3 ++ .../expected/element-use-pseudo-element.txt | 3 ++ .../empty-image-should-be-zero-sized.txt | 3 ++ .../fieldset-with-rendered-legend.txt | 3 ++ ...-abspos-item-with-preceding-whitespace.txt | 3 ++ Tests/LibWeb/Layout/expected/flex-auto.txt | 3 ++ .../expected/flex-column-constained-wrap.txt | 3 ++ .../flex-column-constrained-nowrap.txt | 3 ++ ...n-height-constrained-width-constrained.txt | 3 ++ .../flex-column-height-constrained.txt | 3 ++ .../flex-column-height-unconstrained.txt | 3 ++ ...mn-item-with-auto-height-and-max-width.txt | 3 ++ ...g-auto-width-with-max-width-constraint.txt | 3 ++ ...th-auto-height-depending-on-auto-width.txt | 3 ++ .../flex-container-constrained-nowrap.txt | 3 ++ .../flex-container-constrained-wrap.txt | 3 ++ ...-height-and-item-that-has-aspect-ratio.txt | 3 ++ .../flex-container-width-constrained.txt | 3 ++ .../flex-frozen-items-should-be-respected.txt | 3 ++ .../Layout/expected/flex-grow-0-column.txt | 3 ++ Tests/LibWeb/Layout/expected/flex-grow-1.txt | 3 ++ Tests/LibWeb/Layout/expected/flex-grow-2.txt | 3 ++ .../flex-item-auto-height-with-wrap.txt | 3 ++ ...tem-on-row-with-intrinsic-aspect-ratio.txt | 3 ++ ...dding-relative-to-flex-container-width.txt | 3 ++ ...lex-item-with-cyclic-percentage-height.txt | 3 ++ .../flex-item-with-intrinsic-aspect-ratio.txt | 3 ++ .../Layout/expected/flex-justify-end-gap.txt | 3 ++ .../flex-margin-auto-justify-content.txt | 3 ++ Tests/LibWeb/Layout/expected/flex-row.txt | 3 ++ .../LibWeb/Layout/expected/flex-shrink-1.txt | 3 ++ .../LibWeb/Layout/expected/flex-shrink-2.txt | 3 ++ .../LibWeb/Layout/expected/flex-shrink-3.txt | 3 ++ ...child-static-position-with-align-items.txt | 3 ++ ...d-static-position-with-justify-content.txt | 3 ++ ...osition-with-padding-on-flex-container.txt | 3 ++ .../abspos-flex-child-with-auto-height.txt | 3 ++ ...spos-flex-child-with-percentage-height.txt | 3 ++ .../expected/flex/align-center-margin.txt | 3 ++ .../expected/flex/align-items-normal.txt | 3 ++ .../flex/align-keywords-start-and-end.txt | 3 ++ .../expected/flex/align-self-end-crash.txt | 3 ++ ...x-container-with-max-content-main-size.txt | 3 ++ ...-baseline-with-inline-flex-empty-child.txt | 3 ++ ...ment-does-not-get-blockified-by-itself.txt | 3 ++ .../Layout/expected/flex/calc-flex-basis.txt | 3 ++ ...in-size-with-cross-max-size-constraint.txt | 3 ++ .../flex/columns-33-percent-width.txt | 3 ++ ...-sizing-border-box-and-nonzero-padding.txt | 3 ++ .../flex-basis-intrinsic-sizing-keywords.txt | 3 ++ ...n-container-with-max-width-max-content.txt | 3 ++ ...-aspect-ratio-and-percentage-max-width.txt | 3 ++ ...-aspect-ratio-and-automatic-cross-size.txt | 3 ++ ...-column-item-with-percentage-max-width.txt | 3 ++ .../flex-column-reverse-constrained-wrap.txt | 3 ++ .../flex/flex-constrained-wrap-reverse.txt | 3 ++ ...-cross-size-with-max-content-main-size.txt | 3 ++ ...width-and-negative-margin-in-same-axis.txt | 3 ++ .../flex/flex-gap-between-items-and-lines.txt | 3 ++ .../flex/flex-item-min-width-fit-content.txt | 3 ++ .../flex-item-on-row-with-intrinsic-size.txt | 3 ++ ...ge-main-size-during-min-content-sizing.txt | 3 ++ ...layout-dependent-containing-block-size.txt | 3 ++ ...-intrinsic-aspect-ratio-and-max-height.txt | 3 ++ .../expected/flex/flex-optimization-cases.txt | 3 ++ .../flex-row-reverse-constrained-wrap.txt | 3 ++ ...flex-row-reverse-with-centered-content.txt | 3 ++ ...flex-shorthand-flex-basis-zero-percent.txt | 3 ++ .../inf-available-space-with-auto-margins.txt | 3 ++ .../flex/inline-flex-baseline-of-child.txt | 3 ++ ...-early-resolution-of-percentage-height.txt | 3 ++ ...ith-main-axis-margin-on-flex-container.txt | 3 ++ ...contribution-with-main-size-constraint.txt | 3 ++ ...mn-items-with-different-kinds-of-width.txt | 3 ++ ...tem-that-only-has-natural-aspect-ratio.txt | 3 ++ .../expected/flex/justify-content-1.txt | 3 ++ ...ustify-content-on-min-content-with-gap.txt | 3 ++ ...tify-content-space-between-single-item.txt | 3 ++ ...justify-content-with-margin-auto-child.txt | 3 ++ .../flex/list-container-display-contents.txt | 3 ++ ...column-container-with-automatic-height.txt | 3 ++ ...an-resolve-aspect-ratio-through-height.txt | 3 ++ ...is-with-indefinite-flex-container-size.txt | 3 ++ ...-basis-with-indefinite-reference-value.txt | 3 ++ ...ith-indefinite-containing-block-height.txt | 3 ++ .../Layout/expected/flex/relpos-flex-item.txt | 3 ++ ...ut-with-space-between-and-space-around.txt | 3 ++ .../reverse-with-justify-content-normal.txt | 3 ++ ...-with-negative-remaining-space-on-line.txt | 3 ++ ...-suggestion-with-box-sizing-border-box.txt | 3 ++ .../flex/stretch-alignment-with-cross-gap.txt | 3 ++ ...tem-that-only-has-natural-aspect-ratio.txt | 3 ++ ...svg-flex-item-with-percentage-max-size.txt | 3 ++ ...ntage-padding-against-indefinite-width.txt | 3 ++ ...ntage-padding-against-indefinite-width.txt | 3 ++ .../expected/font-family-monospace-quirk.txt | 3 ++ .../Layout/expected/font-fractional-size.txt | 3 ++ .../Layout/expected/font-size-legacy.txt | 3 ++ .../LibWeb/Layout/expected/font-size-zero.txt | 3 ++ .../expected/font-with-many-normal-values.txt | 3 ++ ...etComputedStyle-on-unconnected-element.txt | 3 ++ .../Layout/expected/grid/1fr-1000px.txt | 3 ++ .../grid/abspos-item-aligned-center.txt | 3 ++ ...-item-with-grid-area-aligned-in-center.txt | 3 ++ ...m-with-grid-area-and-percentage-size-2.txt | 3 ++ ...tem-with-grid-area-and-percentage-size.txt | 3 ++ .../grid/abspos-item-with-grid-area.txt | 3 ++ .../grid/abspos-item-with-padding.txt | 3 ++ .../abspos-item-with-percentage-padding.txt | 3 ++ .../Layout/expected/grid/abspos-item.txt | 3 ++ ...s-placed-into-augmented-row-and-column.txt | 3 ++ ...th-auto-column-placed-in-augmented-row.txt | 3 ++ ...-auto-row-and-column-contained-by-grid.txt | 3 ++ ...th-auto-row-placed-in-augmented-column.txt | 3 ++ .../abspos-with-grid-container-as-parent.txt | 3 ++ .../Layout/expected/grid/align-content.txt | 3 ++ .../Layout/expected/grid/align-items.txt | 3 ++ .../Layout/expected/grid/align-self.txt | 3 ++ .../expected/grid/all-implicit-rows.txt | 3 ++ .../expected/grid/anonymous-inline-child.txt | 3 ++ .../auto-fill-and-named-line-placement.txt | 3 ++ .../Layout/expected/grid/auto-fill-rows.txt | 3 ++ .../LibWeb/Layout/expected/grid/auto-fill.txt | 3 ++ .../grid/auto-fit-collapse-empty-tracks.txt | 3 ++ .../grid/auto-fit-empty-container.txt | 3 ++ ...when-min-and-max-are-both-not-definite.txt | 3 ++ .../LibWeb/Layout/expected/grid/auto-fit.txt | 3 ++ .../grid/auto-flow-column-spanning-item.txt | 3 ++ .../Layout/expected/grid/auto-flow-column.txt | 3 ++ .../Layout/expected/grid/auto-track-sizes.txt | 3 ++ Tests/LibWeb/Layout/expected/grid/basic-2.txt | 3 ++ Tests/LibWeb/Layout/expected/grid/basic.txt | 3 ++ Tests/LibWeb/Layout/expected/grid/borders.txt | 3 ++ .../Layout/expected/grid/calc-track-size.txt | 3 ++ ...minimum-size-by-limited-max-track-size.txt | 3 ++ .../Layout/expected/grid/column-1fr-1fr.txt | 3 ++ .../Layout/expected/grid/column-auto-auto.txt | 3 ++ .../grid/columns-auto-fill-with-gap-2.txt | 3 ++ .../grid/columns-auto-fill-with-gap-3.txt | 3 ++ .../grid/columns-auto-fill-with-gap.txt | 3 ++ .../grid/container-max-width-max-content.txt | 3 ++ .../expected/grid/container-min-height.txt | 3 ++ .../grid/css-calc-in-grid-position.txt | 3 ++ .../grid/define-area-using-line-names.txt | 3 ++ .../expected/grid/different-column-sizes.txt | 3 ++ ...bute-extra-space-across-spanned-tracks.txt | 3 ++ .../Layout/expected/grid/fit-content-1.txt | 3 ++ .../Layout/expected/grid/fit-content-2.txt | 3 ++ .../Layout/expected/grid/fit-content-3.txt | 3 ++ ...ed-tracks-followed-by-repeat-auto-fill.txt | 3 ++ .../grid/float-container-columns-1fr-1fr.txt | 3 ++ .../Layout/expected/grid/floating-item.txt | 3 ++ .../grid/floating-table-wrapper-width.txt | 3 ++ .../grid/grid-area-non-token-parts-crash.txt | 3 ++ .../grid-column-non-token-parts-crash.txt | 3 ++ .../grid-container-min-height-border-box.txt | 3 ++ .../Layout/expected/grid/grid-gap-1.txt | 3 ++ .../Layout/expected/grid/grid-gap-2.txt | 3 ++ .../Layout/expected/grid/grid-gap-3.txt | 3 ++ .../grid/grid-item-fixed-paddings.txt | 3 ++ .../expected/grid/grid-item-fixed-size.txt | 3 ++ .../grid-item-horizontal-margins-auto.txt | 3 ++ .../expected/grid/grid-item-min-size.txt | 3 ++ .../grid/grid-item-percentage-margins.txt | 3 ++ .../grid/grid-item-percentage-width-2.txt | 3 ++ .../grid/grid-item-percentage-width.txt | 3 ++ ...ertical-padding-and-margin-percentages.txt | 3 ++ .../grid/grid-item-with-fit-content-width.txt | 3 ++ ...lacement-shorthand-single-custom-ident.txt | 3 ++ ...id-row-height-affected-by-item-margins.txt | 3 ++ .../expected/grid/grid-row-overflow-crash.txt | 3 ++ .../grid-row-start-non-token-parts-crash.txt | 3 ++ .../expected/grid/grid-shorthand-property.txt | 3 ++ .../Layout/expected/grid/grid-span-4.txt | 3 ++ .../grid/grid-template-areas-basics.txt | 3 ++ ...template-columns-with-min-css-function.txt | 3 ++ .../Layout/expected/grid/grid-template.txt | 3 ++ .../grid/grid-with-min-content-max-width.txt | 3 ++ .../expected/grid/grow-beyond-limits.txt | 3 ++ .../Layout/expected/grid/image-in-grid.txt | 3 ++ ...-with-percentage-width-and-auto-height.txt | 3 ++ .../img-with-percentage-width-and-height.txt | 3 ++ .../Layout/expected/grid/implicit-lines.txt | 3 ++ .../expected/grid/inline-abspos-item.txt | 3 ++ .../expected/grid/inline-grid-simple.txt | 3 ++ .../expected/grid/intrinsic-sized-column.txt | 3 ++ .../expected/grid/intrinsic-sized-grid-2.txt | 3 ++ .../expected/grid/intrinsic-sized-grid.txt | 3 ++ ...trinsic-sizing-should-account-for-gaps.txt | 3 ++ .../item-align-self-center-and-max-height.txt | 3 ++ .../item-align-self-center-and-min-height.txt | 3 ++ .../expected/grid/item-column-span-2.txt | 3 ++ .../expected/grid/item-fit-content-width.txt | 3 ++ .../Layout/expected/grid/item-max-width.txt | 3 ++ .../Layout/expected/grid/item-min-width.txt | 3 ++ .../grid/item-span-exceeds-columns-size.txt | 3 ++ .../grid/item-with-box-sizing-border-box.txt | 3 ++ .../grid/item-with-min-content-width.txt | 3 ++ ...em-with-min-width-and-place-self-start.txt | 3 ++ .../grid/item-with-percentage-max-width.txt | 3 ++ ...n-content-size-should-account-paddings.txt | 3 ++ .../expected/grid/justify-content-cols.txt | 3 ++ .../expected/grid/justify-content-fr.txt | 3 ++ .../Layout/expected/grid/justify-content.txt | 3 ++ .../Layout/expected/grid/justify-items.txt | 3 ++ .../Layout/expected/grid/justify-self.txt | 3 ++ .../expected/grid/justify-start-min-width.txt | 3 ++ ...acement-named-lines-with-span-negative.txt | 3 ++ ...-based-placement-named-lines-with-span.txt | 3 ++ .../expected/grid/line-based-with-repeat.txt | 3 ++ .../grid/line-placement-with-repeat.txt | 3 ++ .../expected/grid/max-height-fit-content.txt | 3 ++ ...-grid-container-wrapper-in-max-content.txt | 3 ++ .../expected/grid/min-height-from-text.txt | 3 ++ .../Layout/expected/grid/min-max-content.txt | 3 ++ .../LibWeb/Layout/expected/grid/minmax-1.txt | 3 ++ .../LibWeb/Layout/expected/grid/minmax-2.txt | 3 ++ .../LibWeb/Layout/expected/grid/minmax-3.txt | 3 ++ .../grid/minmax-auto-track-definition.txt | 3 ++ .../Layout/expected/grid/minmax-invalid-1.txt | 3 ++ .../grid/minmax-non-token-contents-crash.txt | 3 ++ .../grid/minmax-with-max-function-inside.txt | 3 ++ .../grid/minmax-with-percentage-max.txt | 3 ++ .../grid/negative-grid-item-column-index.txt | 3 ++ Tests/LibWeb/Layout/expected/grid/order.txt | 3 ++ .../grid/place-items-center-nested-grids.txt | 3 ++ .../expected/grid/place-items-center.txt | 3 ++ .../Layout/expected/grid/place-self.txt | 3 ++ .../Layout/expected/grid/placement-1.txt | 3 ++ .../Layout/expected/grid/placement-10.txt | 3 ++ .../Layout/expected/grid/placement-2.txt | 3 ++ .../Layout/expected/grid/placement-3.txt | 3 ++ .../Layout/expected/grid/placement-4.txt | 3 ++ .../Layout/expected/grid/placement-5.txt | 3 ++ .../Layout/expected/grid/placement-6.txt | 3 ++ .../Layout/expected/grid/placement-7.txt | 3 ++ .../Layout/expected/grid/placement-8.txt | 3 ++ .../Layout/expected/grid/placement-9.txt | 3 ++ .../expected/grid/placement-auto-negative.txt | 3 ++ .../grid/placement-using-named-tracks-1.txt | 3 ++ .../grid/placement-using-named-tracks-2.txt | 3 ++ .../grid/placement-using-named-tracks-3.txt | 3 ++ ...ition-grid-item-with-percentage-insets.txt | 3 ++ .../Layout/expected/grid/relpos-grid-item.txt | 3 ++ .../repeat-auto-fit-fill-cannot-have-auto.txt | 3 ++ .../grid/repeat-non-token-contents-crash.txt | 3 ++ Tests/LibWeb/Layout/expected/grid/repeat.txt | 3 ++ .../Layout/expected/grid/replaced-item-1.txt | 3 ++ .../Layout/expected/grid/replaced-item-2.txt | 3 ++ ...rt-fr-algorithm-if-less-than-base-size.txt | 3 ++ Tests/LibWeb/Layout/expected/grid/row-1fr.txt | 3 ++ .../row-gaps-with-overflowing-spans-crash.txt | 3 ++ .../Layout/expected/grid/row-height.txt | 3 ++ .../expected/grid/row-span-2-maxcontent.txt | 3 ++ .../expected/grid/row-span-2-mincontent.txt | 3 ++ .../expected/grid/row-span-2-with-gaps.txt | 3 ++ .../Layout/expected/grid/row-span-2.txt | 3 ++ .../Layout/expected/grid/rows-1fr-1fr.txt | 3 ++ ...nfinite-spinning-in-space-distribution.txt | 3 ++ .../should-not-hang-in-size-distribution.txt | 3 ++ .../expected/grid/stretch-auto-tracks.txt | 3 ++ .../Layout/expected/grid/template-areas-1.txt | 3 ++ .../Layout/expected/grid/template-areas-2.txt | 3 ++ .../Layout/expected/grid/template-areas-3.txt | 3 ++ .../grid/template-lines-and-areas.txt | 3 ++ .../grid/track-size-calc-with-percentage.txt | 3 ++ .../grid/two-items-spanning-one-1fr-row.txt | 3 ++ .../grid/unresolvable-percentage-track.txt | 3 ++ .../expected/grid/valid-grid-areas-1.txt | 3 ++ .../expected/grid/vertical-margins-auto.txt | 3 ++ .../expected/height-min-max-fit-content.txt | 3 ++ ...-of-absolute-position-box-with-padding.txt | 3 ++ .../Layout/expected/hidden-root-element.txt | 2 + .../expected/hide-audio-based-on-controls.txt | 3 ++ .../expected/host-pseudo-class-basic.txt | 3 ++ .../Layout/expected/html-dimensions.txt | 3 ++ .../Layout/expected/html-display-contents.txt | 3 ++ .../Layout/expected/html-display-inline.txt | 3 ++ .../html-encoding-detection-crash.txt | 3 ++ .../image-display-block-margin-auto.txt | 3 ++ ...ge-with-multiple-constraint-violations.txt | 3 ++ ...with-box-sizing-border-box-and-padding.txt | 3 ++ ...-and-indefinite-containing-block-width.txt | 3 ++ ...and-min-content-containing-block-width.txt | 3 ++ .../expected/import-after-namespace.txt | 3 ++ .../import-from-linked-style-sheet.txt | 3 ++ ...put-no-newline-at-eof-should-not-crash.txt | 3 ++ ...nline-block-treat-100pct-width-as-auto.txt | 3 ++ .../inline-flex-with-aspect-ratio.txt | 3 ++ .../inline-fragment-ordering-flakiness.txt | 3 ++ Tests/LibWeb/Layout/expected/inline-size.txt | 3 ++ .../expected/input-as-button-align-center.txt | 3 ++ .../input-as-button-shrink-to-fit.txt | 3 ++ .../input-element-with-display-inline.txt | 3 ++ Tests/LibWeb/Layout/expected/input-file.txt | 3 ++ .../Layout/expected/input-image-to-text.txt | 3 ++ Tests/LibWeb/Layout/expected/input-image.txt | 3 ++ .../expected/input-password-to-text.txt | 3 ++ .../input-placeholder-with-line-height.txt | 3 ++ .../Layout/expected/input-placeholder.txt | 3 ++ Tests/LibWeb/Layout/expected/input-range.txt | 5 +++ ...text-node-invalidation-on-value-change.txt | 3 ++ .../Layout/expected/input-text-to-image.txt | 3 ++ .../expected/input-text-to-password.txt | 3 ++ .../expected/inset-shorthand-property.txt | 3 ++ .../inside-list-item-content-offset.txt | 3 ++ .../expected/justify-content-flex-start.txt | 3 ++ .../dialog-backdrop-update.txt | 5 +++ .../inline-element-position-change.txt | 3 ++ .../simple-update-inside-svg-subtree.txt | 3 ++ .../letter-spacing-end-of-line-001.txt | 3 ++ Tests/LibWeb/Layout/expected/lh-1.txt | 3 ++ Tests/LibWeb/Layout/expected/lh-2.txt | 3 ++ .../expected/line-height-calc-number.txt | 3 ++ Tests/LibWeb/Layout/expected/link-sheet.txt | 3 ++ .../list-item-marker-pseudo-placement.txt | 3 ++ .../list-render-list-owner-is-document.txt | 3 ++ .../list-render-list-owner-not-ol.txt | 3 ++ .../Layout/expected/list-render-no-list.txt | 3 ++ .../Layout/expected/media-query-empty.txt | 3 ++ .../expected/media-query-resolution.txt | 3 ++ .../Layout/expected/misc/corner-radius.txt | 3 ++ .../misc/create-iframes-using-innerhtml.txt | 3 ++ ...late-block-components-whitespace-crash.txt | 3 ++ .../misc/percentage-stroke-width-crash.txt | 3 ++ .../Layout/expected/misc/set-display-null.txt | 3 ++ .../expected/multi-code-point-graphemes.txt | 3 ++ .../Layout/expected/negative-max-size.txt | 3 ++ .../expected/non-existing-font-family.txt | 3 ++ ...ntage-padding-against-indefinite-width.txt | 3 ++ .../nowrap-and-no-line-break-opportunity.txt | 3 ++ .../Layout/expected/object-fallback.txt | 3 ++ .../ol-render-deep-hybrid-list-item-list.txt | 3 ++ .../Layout/expected/ol-render-item-values.txt | 3 ++ .../expected/ol-render-style-list-item.txt | 3 ++ Tests/LibWeb/Layout/expected/ordered-list.txt | 3 ++ .../Layout/expected/overflow-with-padding.txt | 3 ++ .../overflow-x-hidden-with-border-radius.txt | 3 ++ .../Layout/expected/percentage-font-size.txt | 3 ++ ...containing-block-has-indefinite-height.txt | 3 ++ .../expected/picture-source-media-query.txt | 3 ++ .../place-content-shorthand-property.txt | 3 ++ .../Layout/expected/popovertarget-button.txt | 5 +++ .../expected/position-absolute-from-edges.txt | 3 ++ ...g-of-position-relative-floating-parent.txt | 3 ++ .../expected/position-absolute-top-left.txt | 3 ++ .../position-empty-pseudo-elements.txt | 3 ++ Tests/LibWeb/Layout/expected/pre.txt | 3 ++ ...seudo-element-with-custom-properties-2.txt | 3 ++ .../pseudo-element-with-custom-properties.txt | 3 ++ .../replaced-box-with-vertical-margins.txt | 3 ++ .../expected/replaced-within-max-content.txt | 3 ++ ...ero-when-available-size-is-min-content.txt | 3 ++ .../resolve-height-of-containing-block.txt | 3 ++ .../expected/select-with-option-selected.txt | 3 ++ .../expected/set-margin-of-floating-box.txt | 3 ++ ...w-tree-removed-from-dom-receives-event.txt | 3 ++ .../space-is-soft-line-break-opportunity.txt | 3 ++ .../Layout/expected/span-with-padding.txt | 3 ++ .../Layout/expected/srcset-sizes-crash.txt | 3 ++ ...e-invalidation-line-height-propagation.txt | 3 ++ .../expected/svg-preserve-aspect-ratio.txt | 3 ++ .../svg-text-with-percentage-values.txt | 3 ++ .../Layout/expected/svg-text-with-viewbox.txt | 3 ++ .../expected/svg-transforms-and-viewboxes.txt | 3 ++ .../expected/svg/abspos-svg-polygon.txt | 3 ++ ...with-indefinite-containing-block-width.txt | 3 ++ ...ith-zero-intrinsic-size-and-no-viewbox.txt | 3 ++ .../svg/natural-width-from-svg-attributes.txt | 3 ++ .../Layout/expected/svg/nested-viewports.txt | 3 ++ .../expected/svg/objectBoundingBox-mask.txt | 3 ++ .../Layout/expected/svg/standalone-h.txt | 1 + .../Layout/expected/svg/standalone-vb-h.txt | 1 + .../Layout/expected/svg/standalone-vb-w.txt | 1 + .../Layout/expected/svg/standalone-vb-wh.txt | 1 + .../Layout/expected/svg/standalone-vb.txt | 1 + .../Layout/expected/svg/standalone-w.txt | 1 + .../Layout/expected/svg/standalone-wh.txt | 1 + .../LibWeb/Layout/expected/svg/standalone.txt | 2 + .../svg/svg-as-image-implicit-viewbox.txt | 3 ++ .../expected/svg/svg-as-image-invalid.txt | 3 ++ .../Layout/expected/svg/svg-as-image.txt | 3 ++ .../svg/svg-circle-percentage-attr.txt | 3 ++ .../svg/svg-different-types-of-opacity.txt | 3 ++ .../expected/svg/svg-fill-with-bogus-url.txt | 3 ++ .../svg-foreign-object-with-block-element.txt | 3 ++ .../Layout/expected/svg/svg-g-inside-g.txt | 3 ++ .../expected/svg/svg-g-with-opacity.txt | 3 ++ .../expected/svg/svg-inside-inline-block.txt | 3 ++ .../expected/svg/svg-inside-svg-with-xy.txt | 3 ++ .../Layout/expected/svg/svg-inside-svg.txt | 3 ++ .../svg-intrinsic-size-in-one-dimension.txt | 3 ++ .../svg/svg-line-with-percentage-values.txt | 3 ++ .../svg-negative-elliptical-arg-number.txt | 3 ++ .../svg/svg-path-with-implicit-lineto.txt | 3 ++ .../expected/svg/svg-symbol-with-viewbox.txt | 3 ++ .../svg/svg-use-element-crashtest.txt | 3 ++ .../expected/svg/svg-viewbox-zero-width.txt | 3 ++ ...with-css-variable-in-presentation-hint.txt | 3 ++ .../expected/svg/svg-with-display-block.txt | 3 ++ ...ith-zero-intrinsic-size-and-no-viewbox.txt | 2 + .../svg/svg-with-zero-sized-viewBox.txt | 3 ++ .../Layout/expected/svg/text-fill-none.txt | 3 ++ .../expected/svg/use-honor-outer-viewBox.txt | 3 ++ ...tab-size-chars-should-vertically-align.txt | 3 ++ .../expected/tab-size-letter-spacing.txt | 3 ++ .../Layout/expected/tab-size-spacing-001.txt | 4 ++ .../Layout/expected/tab-size-text-wrap.txt | 3 ++ .../Layout/expected/tab-size-word-spacing.txt | 3 ++ .../expected/table-fixup-with-rowspan.txt | 3 ++ .../table/absolute-positioning-alignment.txt | 3 ++ .../abspos-pseudo-element-inside-table.txt | 3 ++ .../Layout/expected/table/acid2-reduction.txt | 3 ++ .../expected/table/align-top-and-bottom.txt | 3 ++ .../Layout/expected/table/auto-height.txt | 3 ++ .../Layout/expected/table/auto-margins.txt | 3 ++ .../avoid-div-by-zero-in-table-measures.txt | 3 ++ Tests/LibWeb/Layout/expected/table/basic.txt | 3 ++ .../border-attribute-overridden-by-css.txt | 3 ++ .../expected/table/border-attribute.txt | 3 ++ .../table/border-collapse-is-inherited.txt | 3 ++ .../border-conflict-resolution-with-cell.txt | 3 ++ .../border-conflict-resolution-with-col.txt | 3 ++ .../border-conflict-resolution-with-row.txt | 3 ++ ...rder-conflict-resolution-with-rowgroup.txt | 3 ++ ...-resolutions-with-more-cells-than-cols.txt | 3 ++ ...border-spacing-and-borders-table-width.txt | 3 ++ .../expected/table/border-spacing-colspan.txt | 3 ++ .../expected/table/border-spacing-rowspan.txt | 3 ++ .../border-spacing-with-percentage-width.txt | 3 ++ .../Layout/expected/table/border-spacing.txt | 3 ++ .../LibWeb/Layout/expected/table/borders.txt | 3 ++ .../Layout/expected/table/bottom-caption.txt | 3 ++ ...-auto-max-width-table-percentage-width.txt | 3 ++ .../Layout/expected/table/cell-px-height.txt | 3 ++ ...cell-relative-to-specified-table-width.txt | 3 ++ .../expected/table/cell-with-max-width.txt | 3 ++ .../table/clip-spans-to-table-end.txt | 3 ++ .../Layout/expected/table/col-span-crash.txt | 3 ++ .../expected/table/colgroup-with-two-cols.txt | 3 ++ .../expected/table/colspan-overflow-crash.txt | 3 ++ .../table/colspan-percentage-width.txt | 3 ++ .../colspan-weighted-width-distribution.txt | 3 ++ .../table/colspan-width-distribution.txt | 3 ++ .../colspan-with-trailing-characters.txt | 3 ++ .../table/columns-width-distribution-1.txt | 3 ++ .../expected/table/display-table-size.txt | 3 ++ ...ed-layout-percentage-width-all-columns.txt | 3 ++ .../table/fixed-layout-percentage-width.txt | 3 ++ .../fixed-layout-pixel-width-all-columns.txt | 3 ++ .../table/fixed-layout-pixel-width.txt | 3 ++ .../Layout/expected/table/fixed-layout.txt | 3 ++ .../Layout/expected/table/fixed-margins.txt | 3 ++ .../table/in-auto-height-flex-item.txt | 3 ++ .../expected/table/infinite-padding.txt | 3 ++ .../expected/table/inline-table-width.txt | 3 ++ .../expected/table/internal-alignment.txt | 3 ++ ...eyword-value-does-not-constrain-column.txt | 3 ++ .../expected/table/line-breaking-in-cells.txt | 3 ++ .../table/long-caption-increases-width.txt | 3 ++ .../table/missing-cells-with-span.txt | 3 ++ .../Layout/expected/table/missing-cells.txt | 3 ++ .../Layout/expected/table/multi-line-cell.txt | 3 ++ .../expected/table/nested-table-alignment.txt | 3 ++ .../expected/table/nested-table-box-width.txt | 3 ++ .../table/percentage-width-columns.txt | 3 ++ ...ge-width-for-nested-table-is-like-auto.txt | 3 ++ .../percentage-width-max-width-columns.txt | 3 ++ .../propagate-style-update-to-wrapper.txt | 3 ++ .../row-outer-size-with-computed-size.txt | 3 ++ .../Layout/expected/table/row-px-height.txt | 3 ++ .../table/row-span-and-nested-tables.txt | 3 ++ .../table/rows-height-distribution-1.txt | 3 ++ .../table/rows-height-distribution-2.txt | 3 ++ .../table/rows-height-distribution-3.txt | 3 ++ .../table/rows-height-distribution-4.txt | 3 ++ .../rowspan-with-trailing-characters.txt | 3 ++ .../LibWeb/Layout/expected/table/rowspan.txt | 3 ++ Tests/LibWeb/Layout/expected/table/size.txt | 3 ++ .../table/stretch-to-fixed-height.txt | 3 ++ ...alidation-propagation-to-table-wrapper.txt | 3 ++ ...percentage-column-widths-less-than-100.txt | 3 ++ .../table/table-align-center-with-margin.txt | 3 ++ .../expected/table/table-align-center.txt | 3 ++ .../table/table-cell-not-paintable.txt | 3 ++ .../expected/table/table-cellpadding.txt | 3 ++ .../table-fixup-font-size-and-line-height.txt | 3 ++ ...e-formation-with-rowspan-in-the-middle.txt | 3 ++ .../table/table-header-and-footer-groups.txt | 3 ++ .../table/table-max-content-width.txt | 3 ++ ...ble-width-max-content-containing-block.txt | 3 ++ .../table/table-width-max-content.txt | 3 ++ ...ble-width-min-content-containing-block.txt | 3 ++ .../table/table-width-min-content.txt | 3 ++ .../Layout/expected/table/table-width.txt | 3 ++ .../Layout/expected/table/td-valign.txt | 3 ++ .../table/top-caption-with-padding.txt | 3 ++ .../Layout/expected/table/tr-valign.txt | 3 ++ .../table/vertical-align-baseline.txt | 3 ++ .../table/vertical-align-middle-td-vs-div.txt | 3 ++ .../table/vertical-align-middle-vs-top.txt | 3 ++ ...strained-columns-increased-size-on-col.txt | 3 ++ ...on-and-constrained-columns-size-on-col.txt | 3 ++ ...h-distribution-and-constrained-columns.txt | 3 ++ ...th-distribution-of-max-width-increment.txt | 3 ++ .../expected/table/zero-columns-gridmax.txt | 3 ++ .../text-align-justify-with-forced-break.txt | 3 ++ .../Layout/expected/text-align-overflow.txt | 3 ++ .../text-collapse-inside-contenteditable.txt | 3 ++ Tests/LibWeb/Layout/expected/text-indent.txt | 3 ++ .../Layout/expected/textarea-content.txt | 3 ++ .../LibWeb/Layout/expected/textarea-reset.txt | 3 ++ .../tolerate-css-percentage-overshoot.txt | 3 ++ Tests/LibWeb/Layout/expected/top-layer.txt | 5 +++ .../expected/transform-calc-length-values.txt | 4 ++ ...uto-when-aspect-ratio-cant-be-resolved.txt | 3 ++ Tests/LibWeb/Layout/expected/ul-render.txt | 3 ++ .../expected/unicode-password-input.txt | 3 ++ ...-be-xhtml-file-should-decode-correctly.txt | 3 ++ .../Layout/expected/vertical-align-middle.txt | 3 ++ .../vertical-padding-relative-to-cb-width.txt | 3 ++ .../viewport-overflow-propagation-1.txt | 3 ++ .../viewport-overflow-propagation-2.txt | 3 ++ .../expected/writing-modes-direction-flex.txt | 3 ++ .../writing-modes-direction-inline.txt | 3 ++ .../expected/writing-modes-vertical-rl.txt | 3 ++ ...-height-replaced-box-with-aspect-ratio.txt | 3 ++ .../zero-height-viewport-svg-image.txt | 3 ++ ...ro-size-replaced-box-with-aspect-ratio.txt | 3 ++ .../zero-width-viewport-svg-image.txt | 3 ++ .../zero_percent_width_nested_table.txt | 3 ++ Tests/LibWeb/test-web/main.cpp | 2 +- 776 files changed, 2365 insertions(+), 9 deletions(-) diff --git a/Libraries/LibWeb/Painting/StackingContext.cpp b/Libraries/LibWeb/Painting/StackingContext.cpp index f51f422b4cb..75fcac9c395 100644 --- a/Libraries/LibWeb/Painting/StackingContext.cpp +++ b/Libraries/LibWeb/Painting/StackingContext.cpp @@ -460,9 +460,8 @@ TraversalDecision StackingContext::hit_test(CSSPixelPoint position, HitTestType return TraversalDecision::Continue; } -void StackingContext::dump(int indent) const +void StackingContext::dump(StringBuilder& builder, int indent) const { - StringBuilder builder; for (int i = 0; i < indent; ++i) builder.append(' '); CSSPixelRect rect = paintable_box().absolute_rect(); @@ -478,9 +477,9 @@ void StackingContext::dump(int indent) const if (!affine_transform.is_identity()) { builder.appendff(", transform: {}", affine_transform); } - dbgln("{}", builder.string_view()); + builder.append('\n'); for (auto& child : m_children) - child->dump(indent + 1); + child->dump(builder, indent + 1); } } diff --git a/Libraries/LibWeb/Painting/StackingContext.h b/Libraries/LibWeb/Painting/StackingContext.h index 03e995e2c69..1d668133d71 100644 --- a/Libraries/LibWeb/Painting/StackingContext.h +++ b/Libraries/LibWeb/Painting/StackingContext.h @@ -40,7 +40,7 @@ public: Gfx::AffineTransform affine_transform_matrix() const; - void dump(int indent = 0) const; + void dump(StringBuilder&, int indent = 0) const; void sort(); diff --git a/Libraries/LibWebView/PageInfo.h b/Libraries/LibWebView/PageInfo.h index 25f6ea6649d..af6a5a6cd4b 100644 --- a/Libraries/LibWebView/PageInfo.h +++ b/Libraries/LibWebView/PageInfo.h @@ -15,6 +15,7 @@ enum class PageInfoType { LayoutTree = 1 << 2, PaintTree = 1 << 3, GCGraph = 1 << 4, + StackingContextTree = 1 << 5, }; AK_ENUM_BITWISE_OPERATORS(PageInfoType); diff --git a/Services/WebContent/ConnectionFromClient.cpp b/Services/WebContent/ConnectionFromClient.cpp index c17ac8a3394..24468a15ab4 100644 --- a/Services/WebContent/ConnectionFromClient.cpp +++ b/Services/WebContent/ConnectionFromClient.cpp @@ -278,8 +278,13 @@ void ConnectionFromClient::debug_request(u64 page_id, ByteString request, ByteSt if (request == "dump-stacking-context-tree") { if (auto* doc = page->page().top_level_browsing_context().active_document()) { if (auto* viewport = doc->layout_node()) { - if (auto* stacking_context = viewport->paintable_box()->stacking_context()) - stacking_context->dump(); + auto& viewport_paintable = static_cast(*viewport->paintable_box()); + viewport_paintable.build_stacking_context_tree_if_needed(); + if (auto* stacking_context = viewport_paintable.stacking_context()) { + StringBuilder builder; + stacking_context->dump(builder); + dbgln("{}", builder.string_view()); + } } } return; @@ -976,6 +981,33 @@ static void append_paint_tree(Web::Page& page, StringBuilder& builder) Web::dump_tree(builder, *layout_root->first_paintable()); } +static void append_stacking_context_tree(Web::Page& page, StringBuilder& builder) +{ + auto* document = page.top_level_browsing_context().active_document(); + if (!document) { + builder.append("(no DOM tree)"sv); + return; + } + + document->update_layout(Web::DOM::UpdateLayoutReason::Debugging); + + auto* layout_root = document->layout_node(); + if (!layout_root) { + builder.append("(no layout tree)"sv); + return; + } + if (!layout_root->first_paintable()) { + builder.append("(no paint tree)"sv); + return; + } + + auto& viewport_paintable = static_cast(*layout_root->paintable_box()); + viewport_paintable.build_stacking_context_tree_if_needed(); + if (auto* stacking_context = viewport_paintable.stacking_context()) { + stacking_context->dump(builder); + } +} + static void append_gc_graph(StringBuilder& builder) { auto gc_graph = Web::Bindings::main_thread_vm().heap().dump_graph(); @@ -1008,6 +1040,12 @@ void ConnectionFromClient::request_internal_page_info(u64 page_id, WebView::Page append_paint_tree(page->page(), builder); } + if (has_flag(type, WebView::PageInfoType::StackingContextTree)) { + if (!builder.is_empty()) + builder.append("\n"sv); + append_stacking_context_tree(page->page(), builder); + } + if (has_flag(type, WebView::PageInfoType::GCGraph)) { if (!builder.is_empty()) builder.append("\n"sv); diff --git a/Tests/LibWeb/Layout/expected/Element-insertAdjacentHTML.txt b/Tests/LibWeb/Layout/expected/Element-insertAdjacentHTML.txt index 5108abc5ab6..3d40f0ffad5 100644 --- a/Tests/LibWeb/Layout/expected/Element-insertAdjacentHTML.txt +++ b/Tests/LibWeb/Layout/expected/Element-insertAdjacentHTML.txt @@ -41,3 +41,6 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600] PaintableWithLines (BlockContainer
) [8,206 784x18] TextPaintable (TextNode<#text>) PaintableWithLines (BlockContainer(anonymous)) [8,224 784x0] + +SC for Viewport<#document> [0,0 800x600] [children: 1] (z-index: auto) + SC for BlockContainer [0,0 800x232] [children: 0] (z-index: auto) diff --git a/Tests/LibWeb/Layout/expected/HTMLImageElement-update-the-image-data-temporary-document.txt b/Tests/LibWeb/Layout/expected/HTMLImageElement-update-the-image-data-temporary-document.txt index a8520c1ab91..29879a0b11e 100644 --- a/Tests/LibWeb/Layout/expected/HTMLImageElement-update-the-image-data-temporary-document.txt +++ b/Tests/LibWeb/Layout/expected/HTMLImageElement-update-the-image-data-temporary-document.txt @@ -17,3 +17,6 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600] PaintableWithLines (BlockContainer
#image-container) [8,8 784x150] ImagePaintable (ImageBox) [8,8 150x150] PaintableWithLines (BlockContainer(anonymous)) [8,158 784x0] + +SC for Viewport<#document> [0,0 800x600] [children: 1] (z-index: auto) + SC for BlockContainer [0,0 800x166] [children: 0] (z-index: auto) diff --git a/Tests/LibWeb/Layout/expected/HTMLSelectElement-selected-index.txt b/Tests/LibWeb/Layout/expected/HTMLSelectElement-selected-index.txt index 66e8be53d70..934812ed6a8 100644 --- a/Tests/LibWeb/Layout/expected/HTMLSelectElement-selected-index.txt +++ b/Tests/LibWeb/Layout/expected/HTMLSelectElement-selected-index.txt @@ -25,3 +25,6 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600] PaintableWithLines (BlockContainer
) [75.390625,11 16x16] SVGSVGPaintable (SVGSVGBox) [75.390625,11 16x16] SVGPathPaintable (SVGGeometryBox) [79.390625,16.71875 8x4.953125] + +SC for Viewport<#document> [0,0 800x600] [children: 1] (z-index: auto) + SC for BlockContainer [0,0 800x38] [children: 0] (z-index: auto) diff --git a/Tests/LibWeb/Layout/expected/abspos-box-bottom-with-max-height.txt b/Tests/LibWeb/Layout/expected/abspos-box-bottom-with-max-height.txt index 9a8a1f5838d..a16887e5c99 100644 --- a/Tests/LibWeb/Layout/expected/abspos-box-bottom-with-max-height.txt +++ b/Tests/LibWeb/Layout/expected/abspos-box-bottom-with-max-height.txt @@ -8,3 +8,6 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600] PaintableWithLines (BlockContainer) [0,0 800x16] PaintableWithLines (BlockContainer) [8,8 784x0] PaintableWithLines (BlockContainer
) [8,550 100x50] + +SC for Viewport<#document> [0,0 800x600] [children: 1] (z-index: auto) + SC for BlockContainer [0,0 800x16] [children: 0] (z-index: auto) diff --git a/Tests/LibWeb/Layout/expected/abspos-box-with-block-level-sibling.txt b/Tests/LibWeb/Layout/expected/abspos-box-with-block-level-sibling.txt index 1a9fcb8afc2..b5baf665253 100644 --- a/Tests/LibWeb/Layout/expected/abspos-box-with-block-level-sibling.txt +++ b/Tests/LibWeb/Layout/expected/abspos-box-with-block-level-sibling.txt @@ -12,3 +12,6 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600] PaintableWithLines (BlockContainer
.static) [18,18 210x210] PaintableWithLines (BlockContainer
.absolute) [18,228 110x210] PaintableWithLines (BlockContainer(anonymous)) [18,228 764x0] + +SC for Viewport<#document> [0,0 800x600] [children: 1] (z-index: auto) + SC for BlockContainer [5,5 790x236] [children: 0] (z-index: auto) diff --git a/Tests/LibWeb/Layout/expected/abspos-box-with-replaced-element.txt b/Tests/LibWeb/Layout/expected/abspos-box-with-replaced-element.txt index 61bc33c1c88..af66f4d8ec5 100644 --- a/Tests/LibWeb/Layout/expected/abspos-box-with-replaced-element.txt +++ b/Tests/LibWeb/Layout/expected/abspos-box-with-replaced-element.txt @@ -10,3 +10,6 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600] PaintableWithLines (BlockContainer) [9,9 502x102] overflow: [10,10 501x100] PaintableWithLines (BlockContainer
.image-container) [260,10 250x30.46875] overflow: [261,11 250x28.46875] ImagePaintable (ImageBox) [261,11 250x28.46875] + +SC for Viewport<#document> [0,0 800x600] [children: 1] (z-index: auto) + SC for BlockContainer [1,1 798x0] [children: 0] (z-index: auto) diff --git a/Tests/LibWeb/Layout/expected/abspos-flex-container-with-auto-height.txt b/Tests/LibWeb/Layout/expected/abspos-flex-container-with-auto-height.txt index 3361bf56b23..61bb9a09e74 100644 --- a/Tests/LibWeb/Layout/expected/abspos-flex-container-with-auto-height.txt +++ b/Tests/LibWeb/Layout/expected/abspos-flex-container-with-auto-height.txt @@ -11,3 +11,6 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600] PaintableBox (Box) [8,8 514.859375x22] PaintableWithLines (BlockContainer
) [9,9 512.859375x20] TextPaintable (TextNode<#text>) + +SC for Viewport<#document> [0,0 800x600] [children: 1] (z-index: auto) + SC for BlockContainer [1,1 798x0] [children: 0] (z-index: auto) diff --git a/Tests/LibWeb/Layout/expected/abspos-flex-margin-limits-1.txt b/Tests/LibWeb/Layout/expected/abspos-flex-margin-limits-1.txt index 18cf45cfc96..41bf6b17ab7 100644 --- a/Tests/LibWeb/Layout/expected/abspos-flex-margin-limits-1.txt +++ b/Tests/LibWeb/Layout/expected/abspos-flex-margin-limits-1.txt @@ -14,3 +14,6 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600] PaintableWithLines (BlockContainer) [8,8 784x0] PaintableBox (Box
.container) [8,8 100x100] PaintableWithLines (BlockContainer
.bottom-left) [8,38 70x70] + +SC for Viewport<#document> [0,0 800x600] [children: 1] (z-index: auto) + SC for BlockContainer [0,0 800x16] [children: 0] (z-index: auto) diff --git a/Tests/LibWeb/Layout/expected/abspos-flex-margin-limits-2.txt b/Tests/LibWeb/Layout/expected/abspos-flex-margin-limits-2.txt index 44cee02c6af..0ce53e73910 100644 --- a/Tests/LibWeb/Layout/expected/abspos-flex-margin-limits-2.txt +++ b/Tests/LibWeb/Layout/expected/abspos-flex-margin-limits-2.txt @@ -14,3 +14,6 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600] PaintableWithLines (BlockContainer) [8,8 784x0] PaintableBox (Box
.container) [8,8 100x100] PaintableWithLines (BlockContainer
.top-right) [38,8 70x70] + +SC for Viewport<#document> [0,0 800x600] [children: 1] (z-index: auto) + SC for BlockContainer [0,0 800x16] [children: 0] (z-index: auto) diff --git a/Tests/LibWeb/Layout/expected/abspos-flexbox-with-auto-height.txt b/Tests/LibWeb/Layout/expected/abspos-flexbox-with-auto-height.txt index 56e5d51b2f2..df91ba3a17f 100644 --- a/Tests/LibWeb/Layout/expected/abspos-flexbox-with-auto-height.txt +++ b/Tests/LibWeb/Layout/expected/abspos-flexbox-with-auto-height.txt @@ -13,3 +13,6 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600] PaintableBox (Box