LibWeb: Use containing block to compute scrollable overflow
Some checks are pending
CI / Lagom (false, FUZZ, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (false, NO_FUZZ, macos-14, macOS, Clang) (push) Waiting to run
CI / Lagom (false, NO_FUZZ, ubuntu-24.04, Linux, GNU) (push) Waiting to run
CI / Lagom (true, NO_FUZZ, ubuntu-24.04, Linux, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (macos-14, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (ubuntu-24.04, Linux, Linux-x86_64) (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Push notes / build (push) Waiting to run

Instead of using child boxes to compute scrollable overflow for the box,
we use descendants which have the box as their containing block.
This commit is contained in:
Edward Banner 2024-10-15 10:35:11 -04:00 committed by Alexander Kalenik
parent de238328eb
commit 912511a152
Notes: github-actions[bot] 2024-10-18 13:27:39 +00:00
49 changed files with 92 additions and 89 deletions

View file

@ -7,8 +7,8 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
TextNode <#text>
ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x246] overflow: [5,5 790x433]
PaintableWithLines (BlockContainer<BODY>) [13,13 774x220] overflow: [18,18 764x420]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x246]
PaintableWithLines (BlockContainer<BODY>) [13,13 774x220]
PaintableWithLines (BlockContainer<DIV>.static) [18,18 210x210]
PaintableWithLines (BlockContainer<DIV>.absolute) [18,228 110x210]
PaintableWithLines (BlockContainer(anonymous)) [18,228 764x0]

View file

@ -6,7 +6,7 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
ImageBox <img> at (262,12) content-size 248x26.46875 children: not-inline
ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x2] overflow: [9,9 502x102]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x2]
PaintableWithLines (BlockContainer<BODY>) [9,9 502x102]
PaintableWithLines (BlockContainer<DIV>.image-container) [260,10 250x30.46875] overflow: [261,11 249x28.46875]
ImagePaintable (ImageBox<IMG>) [261,11 250x28.46875]

View file

@ -7,7 +7,7 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
TextNode <#text>
ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x2] overflow: [8,8 514.859375x21]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x2]
PaintableBox (Box<BODY>) [8,8 514.859375x21]
PaintableWithLines (BlockContainer<DIV>) [9,9 512.859375x19]
TextPaintable (TextNode<#text>)

View file

@ -8,8 +8,8 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
TextNode <#text>
ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x20] overflow: [1,1 798x30]
PaintableWithLines (BlockContainer<BODY>) [9,9 782x2] overflow: [10,10 312.453125x21]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x20]
PaintableWithLines (BlockContainer<BODY>) [9,9 782x2]
PaintableBox (Box<NAV>) [10,10 312.453125x21]
PaintableWithLines (BlockContainer<DIV>.item) [11,11 310.453125x19]
TextPaintable (TextNode<#text>)

View file

@ -25,7 +25,7 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x100]
PaintableWithLines (BlockContainer<DIV>#containing-block) [8,8 200x100]
PaintableWithLines (BlockContainer(anonymous)) [8,8 200x0]
PaintableBox (Box<DIV>#inner-flex) [8,8 200x0] overflow: [83,8 50x100]
PaintableBox (Box<DIV>#inner-flex) [8,8 200x0]
PaintableWithLines (BlockContainer<DIV>) [83,8 50x100]
PaintableWithLines (BlockContainer(anonymous)) [83,8 50x0]
PaintableWithLines (BlockContainer<SPAN>) [83,8 50x0]

View file

@ -4,6 +4,6 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
ImageBox <img#zero-dimensions-but-min-percentages> at (8,8) content-size 800x600 positioned children: not-inline
ViewportPaintable (Viewport<#document>) [0,0 800x600] overflow: [0,0 808x608]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x16] overflow: [0,0 808x608]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x0] overflow: [8,8 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x16]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x0]
ImagePaintable (ImageBox<IMG>#zero-dimensions-but-min-percentages) [8,8 800x600]

View file

@ -12,7 +12,7 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
TextNode <#text>
ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x2] overflow: [9,9 502x402]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x2]
PaintableWithLines (BlockContainer<BODY>) [9,9 502x402]
PaintableWithLines (BlockContainer<DIV>.one) [310,210 30.6875x19]
TextPaintable (TextNode<#text>)

View file

@ -8,8 +8,8 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
ImageBox <img> at (50,25) content-size 100x100 positioned children: not-inline
ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x33] overflow: [0,0 800x125]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x17] overflow: [8,8 784x117]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x33]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x17]
PaintableWithLines (BlockContainer<DIV>) [8,8 784x17]
TextPaintable (TextNode<#text>)
ImagePaintable (ImageBox<IMG>) [50,25 100x100]

View file

@ -5,6 +5,6 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
TextNode <#text>
ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x0] overflow: [8,8 2x2]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x0]
PaintableWithLines (BlockContainer<BODY>.outer) [8,8 0x0] overflow: [8,8 2x2]
PaintableWithLines (BlockContainer<DIV>.inner) [8,8 2x2]

View file

@ -4,6 +4,6 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
BlockContainer <div.inner> at (9,9) content-size 0x0 positioned [BFC] children: not-inline
ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x0] overflow: [8,8 2x2]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x0]
PaintableWithLines (BlockContainer<BODY>.outer) [8,8 0x0] overflow: [8,8 2x2]
PaintableWithLines (BlockContainer<DIV>.inner) [8,8 2x2]

View file

@ -14,8 +14,8 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
TextNode <#text>
ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x20] overflow: [0,1 799x79]
PaintableWithLines (BlockContainer<BODY>) [9,9 782x2] overflow: [0,10 202x70]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x20]
PaintableWithLines (BlockContainer<BODY>) [9,9 782x2]
PaintableBox (Box<DIV>.box) [0,10 202x70]
PaintableWithLines (BlockContainer(anonymous)) [1,11 200x68]
TextPaintable (TextNode<#text>)

View file

@ -6,8 +6,8 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
BlockContainer <div#baz> at (1,201) content-size 100x100 positioned [BFC] children: not-inline
ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x20] overflow: [0,0 800x302]
PaintableWithLines (BlockContainer<BODY>) [9,9 782x2] overflow: [0,0 800x302]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x20]
PaintableWithLines (BlockContainer<BODY>) [9,9 782x2]
PaintableWithLines (BlockContainer<DIV>#foo) [349,0 102x102]
PaintableWithLines (BlockContainer<DIV>#bar) [698,100 102x102]
PaintableWithLines (BlockContainer<DIV>#baz) [0,200 102x102]

View file

@ -6,7 +6,7 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
TextNode <#text>
ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x0] overflow: [8,8 140x100]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x0]
PaintableWithLines (BlockContainer<BODY>) [8,8 140x100]
PaintableWithLines (BlockContainer<DIV>.black) [8,8 140x100]
PaintableWithLines (BlockContainer<DIV>.green) [58,58 40x40]

View file

@ -5,7 +5,7 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
BlockContainer <div.inner> at (12,12) content-size 0x50 children: not-inline
ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x2] overflow: [9,9 6x56]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x2]
PaintableWithLines (BlockContainer<BODY>) [9,9 6x56]
PaintableWithLines (BlockContainer<DIV>.outer) [10,10 4x54]
PaintableWithLines (BlockContainer<DIV>.inner) [11,11 2x52]

View file

@ -7,7 +7,7 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
TextNode <#text>
ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x2] overflow: [9,9 95.59375x21]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x2]
PaintableWithLines (BlockContainer<BODY>) [9,9 95.59375x21]
PaintableWithLines (BlockContainer<NAV>) [10,10 93.59375x19]
TextPaintable (TextNode<#text>)

View file

@ -7,7 +7,7 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
TextNode <#text>
ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x2] overflow: [9,9 140.609375x21]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x2]
PaintableWithLines (BlockContainer<BODY>) [9,9 140.609375x21]
PaintableWithLines (BlockContainer<DIV>) [10,10 138.609375x19]
TextPaintable (TextNode<#text>)

View file

@ -12,7 +12,7 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
TextNode <#text>
ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x2] overflow: [9,9 174x57]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x2]
PaintableWithLines (BlockContainer<BODY>) [9,9 104x57] overflow: [10,10 173x55]
PaintableWithLines (BlockContainer<DIV>#container) [10,10 102x55] overflow: [11,11 172x53]
PaintableWithLines (BlockContainer<DIV>#child) [11,11 172x53]

View file

@ -13,7 +13,7 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x4]
PaintableWithLines (TableWrapper(anonymous)) [8,8 4x4]
PaintableBox (Box<TABLE>) [8,8 4x4]
PaintableBox (Box<TBODY>) [10,10 0x0] overflow: [8,8 2x2]
PaintableBox (Box<TR>) [10,10 0x0] overflow: [8,8 2x2]
PaintableWithLines (BlockContainer(anonymous)) [10,10 0x0] overflow: [8,8 2x2]
PaintableBox (Box<TBODY>) [10,10 0x0]
PaintableBox (Box<TR>) [10,10 0x0]
PaintableWithLines (BlockContainer(anonymous)) [10,10 0x0]
PaintableWithLines (BlockContainer<TD>) [8,8 2x2]

View file

@ -6,7 +6,7 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
TextNode <#text>
ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x2] overflow: [8,8 502x402]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x2]
PaintableWithLines (BlockContainer<BODY>) [8,8 502x402]
PaintableWithLines (BlockContainer<DIV>.two-props) [59,109 400x200]
PaintableWithLines (BlockContainer<DIV>.four-props) [109,209 250x150]

View file

@ -8,7 +8,7 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
TextNode <#text>
ViewportPaintable (Viewport<#document>) [0,0 800x600] overflow: [0,-22 800x622]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x76] overflow: [10,-22 780x120]
PaintableWithLines (BlockContainer<BODY>) [18,18 764x40] overflow: [28,-22 744x120]
PaintableBox (Box<DIV>.pink) [28,28 744x20] overflow: [38,-22 120x120]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x76]
PaintableWithLines (BlockContainer<BODY>) [18,18 764x40]
PaintableBox (Box<DIV>.pink) [28,28 744x20]
PaintableWithLines (BlockContainer<DIV>.orange) [38,-22 120x120]

View file

@ -70,30 +70,30 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x566]
PaintableBox (Box<BODY>) [18,18 764x530]
PaintableBox (Box<DIV>.outer.normal) [28,28 170x170] overflow: [38,38 170x150]
PaintableBox (Box<DIV>.outer.normal) [28,28 170x170]
PaintableWithLines (BlockContainer<DIV>) [38,38 170x70]
TextPaintable (TextNode<#text>)
PaintableBox (Box<DIV>.outer.stretch) [198,28 170x170] overflow: [208,38 170x150]
PaintableBox (Box<DIV>.outer.stretch) [198,28 170x170]
PaintableWithLines (BlockContainer<DIV>) [208,38 170x70]
TextPaintable (TextNode<#text>)
PaintableBox (Box<DIV>.outer.start) [368,28 170x170] overflow: [378,38 170x150]
PaintableBox (Box<DIV>.outer.start) [368,28 170x170]
PaintableWithLines (BlockContainer<DIV>) [378,38 170x70]
TextPaintable (TextNode<#text>)
PaintableBox (Box<DIV>.outer.flex-start) [538,28 170x170] overflow: [548,38 170x150]
PaintableBox (Box<DIV>.outer.flex-start) [538,28 170x170]
PaintableWithLines (BlockContainer<DIV>) [548,38 170x70]
TextPaintable (TextNode<#text>)
PaintableBox (Box<DIV>.outer.end) [28,198 170x170] overflow: [38,208 170x150]
PaintableBox (Box<DIV>.outer.end) [28,198 170x170]
PaintableWithLines (BlockContainer<DIV>) [38,288 170x70]
TextPaintable (TextNode<#text>)
PaintableBox (Box<DIV>.outer.flex-end) [198,198 170x170] overflow: [208,208 170x150]
PaintableBox (Box<DIV>.outer.flex-end) [198,198 170x170]
PaintableWithLines (BlockContainer<DIV>) [208,288 170x70]
TextPaintable (TextNode<#text>)
PaintableBox (Box<DIV>.outer.center) [368,198 170x170] overflow: [378,208 170x150]
PaintableBox (Box<DIV>.outer.center) [368,198 170x170]
PaintableWithLines (BlockContainer<DIV>) [378,248 170x70]
TextPaintable (TextNode<#text>)
PaintableBox (Box<DIV>.outer.self-start) [538,198 170x170] overflow: [548,208 170x150]
PaintableBox (Box<DIV>.outer.self-start) [538,198 170x170]
PaintableWithLines (BlockContainer<DIV>) [548,208 170x70]
TextPaintable (TextNode<#text>)
PaintableBox (Box<DIV>.outer.self-end) [28,368 170x170] overflow: [38,378 170x150]
PaintableBox (Box<DIV>.outer.self-end) [28,368 170x170]
PaintableWithLines (BlockContainer<DIV>) [38,458 170x70]
TextPaintable (TextNode<#text>)

View file

@ -10,9 +10,9 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
TextNode <#text>
ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x53] overflow: [0,0 800x78]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x37] overflow: [8,8 784x70]
PaintableBox (Box<DIV>#flex-container) [8,8 784x37] overflow: [8,8 784x70]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x53]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x37]
PaintableBox (Box<DIV>#flex-container) [8,8 784x37]
PaintableWithLines (BlockContainer<DIV>#absolute) [18,18 50x50]
PaintableWithLines (BlockContainer<DIV>#orange) [18,18 50x50]
PaintableWithLines (BlockContainer<DIV>#red) [18,18 9.703125x17]

View file

@ -27,7 +27,7 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x0]
PaintableWithLines (BlockContainer<DIV>#containing-block) [8,8 200x300] overflow: [8,8 300x300]
PaintableWithLines (BlockContainer(anonymous)) [8,8 200x0]
PaintableBox (Box<DIV>#inner-flex) [8,8 200x0] overflow: [83,8 50x150]
PaintableBox (Box<DIV>#inner-flex) [8,8 200x0]
PaintableWithLines (BlockContainer<DIV>) [83,8 50x150]
PaintableWithLines (BlockContainer(anonymous)) [83,8 50x0]
PaintableWithLines (BlockContainer<SPAN>) [83,8 50x0]

View file

@ -4,6 +4,6 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
ImageBox <img> at (8,8) content-size 50x50 flex-item children: not-inline
ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x0] overflow: [8,8 50x50]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x0]
PaintableBox (Box<BODY>) [8,8 50x50]
ImagePaintable (ImageBox<IMG>) [8,8 50x50]

View file

@ -39,7 +39,7 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
TextNode <#text>
ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x0] overflow: [8,8 400x275]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x0]
PaintableWithLines (BlockContainer<BODY>) [8,8 400x275]
PaintableWithLines (BlockContainer<DIV>#fill) [8,8 100x100]
TextPaintable (TextNode<#text>)

View file

@ -29,15 +29,15 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x600]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x259] overflow: [8,8 784x275]
PaintableWithLines (BlockContainer<FORM>) [8,8 784x259]
ImagePaintable (ImageBox<INPUT>) [8,216 48x48] overflow: [8,8 48x256]
ImagePaintable (ImageBox<INPUT>) [8,216 48x48]
PaintableWithLines (BlockContainer(anonymous)) [8,8 784x0]
PaintableWithLines (BlockContainer(anonymous)) [8,8 0x0]
TextPaintable (TextNode<#text>)
ImagePaintable (ImageBox<INPUT>) [64,200 64x64] overflow: [8,8 120x256]
ImagePaintable (ImageBox<INPUT>) [64,200 64x64]
PaintableWithLines (BlockContainer(anonymous)) [8,8 784x0]
PaintableWithLines (BlockContainer(anonymous)) [8,8 0x0]
TextPaintable (TextNode<#text>)
ImagePaintable (ImageBox<INPUT>) [136,8 128x256] overflow: [8,8 256x256]
ImagePaintable (ImageBox<INPUT>) [136,8 128x256]
PaintableWithLines (BlockContainer(anonymous)) [8,8 784x0]
PaintableWithLines (BlockContainer(anonymous)) [8,8 0x0]
PaintableWithLines (BlockContainer(anonymous)) [8,283 784x0]

View file

@ -4,6 +4,6 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
BlockContainer <div#foo> at (0,0) content-size 123x456 positioned [BFC] children: not-inline
ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x16] overflow: [0,0 800x456]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x0] overflow: [0,0 123x456]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x16]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x0]
PaintableWithLines (BlockContainer<DIV>#foo) [0,0 123x456]

View file

@ -25,9 +25,9 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
FrameBox <iframe> at (18,288) content-size 10x10 children: not-inline (url: about:blank)
ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x16] overflow: [0,0 800x298]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x0] overflow: [8,8 784x290]
PaintableWithLines (BlockContainer<DIV>#container) [8,8 784x0] overflow: [8,8 20x290]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x16]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x0]
PaintableWithLines (BlockContainer<DIV>#container) [8,8 784x0]
PaintableWithLines (BlockContainer<DIV>) [8,8 1x1] overflow: [8,8 20x290]
NestedBrowsingContextPaintable (FrameBox<IFRAME>) [13,13 20x20]
NestedBrowsingContextPaintable (FrameBox<IFRAME>) [13,43 20x20]

View file

@ -6,7 +6,7 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
TextNode <#text>
ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x16] overflow: [0,0 800x108]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x0] overflow: [8,8 784x100]
PaintableWithLines (BlockContainer<DIV>.hello) [8,8 784x0] overflow: [8,8 500x100]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x16]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x0]
PaintableWithLines (BlockContainer<DIV>.hello) [8,8 784x0]
PaintableWithLines (BlockContainer(anonymous)) [8,8 500x100]

View file

@ -29,7 +29,7 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (TableWrapper(anonymous)) [8,8 27.90625x46]
PaintableBox (Box<TABLE>) [8,8 27.90625x46]
PaintableBox (Box<TBODY>) [10,10 23.90625x42]
PaintableBox (Box<TR>) [10,10 23.90625x19] overflow: [10,10 23.90625x42]
PaintableBox (Box<TR>) [10,10 23.90625x19]
PaintableWithLines (BlockContainer<TD>) [10,10 11.09375x19]
TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer<TD>) [23.09375,10 10.8125x42]

View file

@ -9,10 +9,10 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
TextNode <#text>
ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x20] overflow: [0,0 800x600]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x4] overflow: [0,8 800x592]
PaintableWithLines (TableWrapper(anonymous)) [8,8 784x4] overflow: [0,8 800x592]
PaintableBox (Box<TABLE>) [8,8 784x4] overflow: [0,8 800x592]
PaintableBox (Box<THEAD>) [10,10 0x0] overflow: [0,10 800x590]
PaintableBox (Box<TR>) [10,10 0x0] overflow: [0,590 800x10]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x20]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x4]
PaintableWithLines (TableWrapper(anonymous)) [8,8 784x4]
PaintableBox (Box<TABLE>) [8,8 784x4]
PaintableBox (Box<THEAD>) [10,10 0x0]
PaintableBox (Box<TR>) [10,10 0x0]
PaintableWithLines (BlockContainer(anonymous)) [0,590 800x10]

View file

@ -47,7 +47,7 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (TableWrapper(anonymous)) [8,8 200.328125x100]
PaintableBox (Box<TABLE>) [8,8 200.328125x100]
PaintableBox (Box<TBODY>) [9,9 198.328125x98]
PaintableBox (Box<TR>) [9,9 198.328125x49] overflow: [9,9 198.328125x98]
PaintableBox (Box<TR>) [9,9 198.328125x49]
PaintableWithLines (BlockContainer<TD>) [9,9 64.078125x98]
TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer<TD>) [73.078125,9 87.984375x98]

View file

@ -26,8 +26,8 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x600]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x23]
PaintableWithLines (TableWrapper(anonymous)) [8,8 6x23] overflow: [8,8 17.265625x23]
PaintableBox (Box<TABLE>) [8,8 6x23] overflow: [8,8 17.265625x23]
PaintableBox (Box<TBODY>) [10,10 2x19] overflow: [10,10 15.265625x20]
PaintableBox (Box<TR>) [10,10 2x19] overflow: [10,10 15.265625x20]
PaintableBox (Box<TABLE>) [8,8 6x23]
PaintableBox (Box<TBODY>) [10,10 2x19]
PaintableBox (Box<TR>) [10,10 2x19]
PaintableWithLines (BlockContainer<TD>) [10,10 2x19] overflow: [10,10 15.265625x20]
TextPaintable (TextNode<#text>)

View file

@ -74,7 +74,7 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableBox (Box<TABLE>#empty-table) [8,8 2x2]
PaintableWithLines (BlockContainer(anonymous)) [8,10 784x0]
PaintableWithLines (TableWrapper(anonymous)) [8,10 99.171875x82]
PaintableBox (Box<TABLE>#full-table) [8,27 99.171875x65] overflow: [8,10 99.171875x82]
PaintableBox (Box<TABLE>#full-table) [8,27 99.171875x65]
PaintableWithLines (BlockContainer<CAPTION>) [8,10 82.734375x17] overflow: [8,10 90.734375x17]
TextPaintable (TextNode<#text>)
PaintableBox (Box<THEAD>) [10,29 95.171875x19]

View file

@ -176,7 +176,7 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600]
TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer<TD>) [119.8125,126 51.09375x39]
TextPaintable (TextNode<#text>)
PaintableBox (Box<TR>) [9,165 161.90625x39] overflow: [9,9 161.90625x195]
PaintableBox (Box<TR>) [9,165 161.90625x39]
PaintableWithLines (BlockContainer<TD>) [9,165 56.265625x39]
TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer<TD>) [65.265625,165 54.546875x39]

View file

@ -134,7 +134,7 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (TableWrapper(anonymous)) [8,8 243.90625x257]
PaintableBox (Box<TABLE>) [8,8 243.90625x257]
PaintableBox (Box<TBODY>) [29,19 201.90625x235]
PaintableBox (Box<TR>) [29,19 201.90625x39] overflow: [29,19 201.90625x88]
PaintableBox (Box<TR>) [29,19 201.90625x39]
PaintableWithLines (BlockContainer<TD>) [29,19 56.265625x88]
TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer<TD>) [105.265625,19 54.546875x39]

View file

@ -69,7 +69,7 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer(anonymous)) [0,0 800x0]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x82]
PaintableWithLines (TableWrapper(anonymous)) [8,8 99.171875x82]
PaintableBox (Box<TABLE>#full-table) [8,8 99.171875x65] overflow: [8,8 99.171875x82]
PaintableBox (Box<TABLE>#full-table) [8,8 99.171875x65]
PaintableWithLines (BlockContainer<CAPTION>) [8,73 82.734375x17] overflow: [8,73 90.734375x17]
TextPaintable (TextNode<#text>)
PaintableBox (Box<THEAD>) [10,10 95.171875x19]

View file

@ -71,7 +71,7 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600]
TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer<TD>) [69.265625,8 31.09375x39]
TextPaintable (TextNode<#text>)
PaintableBox (Box<TR>) [8,47 92.359375x39] overflow: [8,47 92.359375x78]
PaintableBox (Box<TR>) [8,47 92.359375x39]
PaintableWithLines (BlockContainer<TD>) [8,47 30.453125x39]
TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer<TD>) [38.453125,47 61.90625x78]

View file

@ -89,7 +89,7 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer(anonymous)) [0,0 800x0]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x109]
PaintableWithLines (TableWrapper(anonymous)) [8,8 63.046875x109]
PaintableBox (Box<TABLE>#full-table) [8,40 63.046875x75] overflow: [8,8 61.046875x105]
PaintableBox (Box<TABLE>#full-table) [8,40 63.046875x75]
PaintableWithLines (BlockContainer<CAPTION>) [8,8 59.046875x34]
TextPaintable (TextNode<#text>)
PaintableBox (Box<THEAD>) [12,44 55.046875x21]

View file

@ -85,7 +85,7 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (TableWrapper(anonymous)) [8,8 115.828125x124]
PaintableBox (Box<TABLE>) [8,8 115.828125x124]
PaintableBox (Box<TBODY>) [15,15 101.828125x110]
PaintableBox (Box<TR>) [15,15 101.828125x54] overflow: [15,15 101.828125x110]
PaintableBox (Box<TR>) [15,15 101.828125x54]
PaintableWithLines (BlockContainer<TD>) [15,15 31.5625x54]
TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer<TD>) [48.5625,15 68.265625x110]

View file

@ -17,7 +17,7 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x600]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x0] overflow: [8,8 6x6]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x0]
PaintableWithLines (TableWrapper(anonymous)) [8,8 6x6]
PaintableBox (Box<TABLE>#t) [8,8 6x6]
PaintableBox (Box<TBODY>) [10,10 2x2]

View file

@ -38,7 +38,7 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (TableWrapper(anonymous)) [8,8 49.21875x25]
PaintableBox (Box<TABLE>) [8,8 49.21875x25]
PaintableBox (Box<TBODY>) [10,10 45.21875x21]
PaintableBox (Box<TR>) [10,10 45.21875x9.5] overflow: [10,10 45.21875x21]
PaintableBox (Box<TR>) [10,10 45.21875x9.5]
PaintableWithLines (BlockContainer<TD>) [10,10 2x9.5]
PaintableWithLines (BlockContainer<TD>) [14,10 41.21875x21]
PaintableWithLines (InlineNode<A>)

View file

@ -96,7 +96,7 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (TableWrapper(anonymous)) [8,8 75.828125x115]
PaintableBox (Box<TABLE>) [8,8 75.828125x115]
PaintableBox (Box<TBODY>) [11,11 69.828125x109]
PaintableBox (Box<TR>) [11,11 69.828125x53.5] overflow: [11,11 69.828125x109]
PaintableBox (Box<TR>) [11,11 69.828125x53.5]
PaintableWithLines (BlockContainer<TD>) [11,11 23.5625x53.5]
TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer<TD>) [36.5625,11 44.265625x109]

View file

@ -154,7 +154,7 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600]
TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer<TH>) [159.5625,9 76.796875x21]
TextPaintable (TextNode<#text>)
PaintableBox (Box<TR>) [9,30 227.359375x21] overflow: [9,30 227.359375x42]
PaintableBox (Box<TR>) [9,30 227.359375x21]
PaintableWithLines (BlockContainer<TD>) [9,30 74.046875x21]
TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer<TD>) [83.046875,30 76.515625x21]
@ -173,7 +173,7 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600]
TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer<TD>) [159.5625,72 76.796875x21]
TextPaintable (TextNode<#text>)
PaintableBox (Box<TR>) [9,93 227.359375x21] overflow: [9,93 227.359375x42]
PaintableBox (Box<TR>) [9,93 227.359375x21]
PaintableWithLines (BlockContainer<TD>) [9,93 74.046875x21]
TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer<TD>) [83.046875,93 76.515625x21]

View file

@ -114,7 +114,7 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600]
TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer<TH>) [160.5625,10 74.796875x19]
TextPaintable (TextNode<#text>)
PaintableBox (Box<TR>) [10,31 225.359375x19] overflow: [10,31 225.359375x40]
PaintableBox (Box<TR>) [10,31 225.359375x19]
PaintableWithLines (BlockContainer<TD>) [10,31 72.046875x40]
TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer<TD>) [84.046875,31 74.515625x19]

View file

@ -18,8 +18,8 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600] overflow: [0,0 2350x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x600] overflow: [0,0 2350x600]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x17] overflow: [8,8 2342x17]
PaintableWithLines (TableWrapper(anonymous)) [350,8 100x17] overflow: [350,8 2000x17]
PaintableBox (Box<DIV>) [350,8 100x17] overflow: [350,8 2000x17]
PaintableBox (Box(anonymous)) [350,8 100x17] overflow: [350,8 2000x17]
PaintableBox (Box<DIV>) [350,8 100x17]
PaintableBox (Box(anonymous)) [350,8 100x17]
PaintableWithLines (BlockContainer(anonymous)) [350,8 100x17] overflow: [350,8 2000x17]
PaintableWithLines (BlockContainer(anonymous)) [350,8 100x0]
PaintableWithLines (BlockContainer<DIV>) [350,8 2000x17]

View file

@ -83,7 +83,7 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (TableWrapper(anonymous)) [8,8 103.421875x158]
PaintableBox (Box<TABLE>) [8,8 103.421875x158]
PaintableBox (Box<TBODY>) [9,9 101.421875x156]
PaintableBox (Box<TR>) [9,9 101.421875x39] overflow: [9,9 101.421875x117]
PaintableBox (Box<TR>) [9,9 101.421875x39]
PaintableWithLines (BlockContainer<TD>) [9,9 31.59375x39]
TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer<TD>) [40.59375,9 36.265625x78]
@ -93,7 +93,7 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableBox (Box<TR>) [9,48 101.421875x39]
PaintableWithLines (BlockContainer<TD>) [9,48 31.59375x39]
TextPaintable (TextNode<#text>)
PaintableBox (Box<TR>) [9,87 101.421875x39] overflow: [9,87 101.421875x78]
PaintableBox (Box<TR>) [9,87 101.421875x39]
PaintableWithLines (BlockContainer<TD>) [9,87 31.59375x39]
TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer<TD>) [40.59375,87 36.265625x78]

View file

@ -28,7 +28,7 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600] overflow: [0,-2 800x602]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x600] overflow: [0,-2 800x602]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x60] overflow: [8,-2 784x70]
PaintableWithLines (TableWrapper(anonymous)) [8,8 60.46875x60] overflow: [8,-2 60.46875x70]
PaintableBox (Box<TABLE>) [8,35 60.46875x23] overflow: [8,-2 60.46875x60]
PaintableBox (Box<TABLE>) [8,35 60.46875x23]
PaintableWithLines (BlockContainer<CAPTION>) [8,-2 60.46875x37]
TextPaintable (TextNode<#text>)
PaintableBox (Box<TBODY>) [10,37 56.46875x19]

View file

@ -100,15 +100,18 @@ static CSSPixelRect measure_scrollable_overflow(Box const& box)
// and whose border boxes are positioned not wholly in the negative scrollable overflow region,
// FIXME: accounting for transforms by projecting each box onto the plane of the element that establishes its 3D rendering context. [CSS3-TRANSFORMS]
if (!box.children_are_inline()) {
box.for_each_child_of_type<Box>([&box, &scrollable_overflow_rect, &content_overflow_rect](Box const& child) {
box.for_each_in_subtree_of_type<Box>([&box, &scrollable_overflow_rect, &content_overflow_rect](Box const& child) {
if (!child.paintable_box())
return IterationDecision::Continue;
return TraversalDecision::Continue;
if (child.containing_block() != &box)
return TraversalDecision::Continue;
auto child_border_box = child.paintable_box()->absolute_border_box_rect();
// NOTE: Here we check that the child is not wholly in the negative scrollable overflow region.
if (child_border_box.bottom() < 0 || child_border_box.right() < 0)
return IterationDecision::Continue;
return TraversalDecision::Continue;
scrollable_overflow_rect = scrollable_overflow_rect.united(child_border_box);
content_overflow_rect = content_overflow_rect.united(child_border_box);
@ -125,7 +128,7 @@ static CSSPixelRect measure_scrollable_overflow(Box const& box)
scrollable_overflow_rect.unite_vertically(child_scrollable_overflow);
}
return IterationDecision::Continue;
return TraversalDecision::Continue;
});
}