script: Calculate proper border box for resizeobserver (#38988)

Implements more of calculate_box_size, ensuring that the proper
rectangle is returned when the border box is requested.

Testing: WPT
Fixes: Partially #38811

---------

Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
Co-authored-by: Jo Steven Novaryo <65610990+stevennovaryo@users.noreply.github.com>
This commit is contained in:
Ashwin Naren 2025-09-03 05:16:20 -07:00 committed by GitHub
parent 433a461044
commit 4ea714e6d2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 34 additions and 7 deletions

View file

@ -311,11 +311,18 @@ fn calculate_box_size(target: &Element, observed_box: &ResizeObserverBoxOptions)
// but the spec will expand to cover all fragments. // but the spec will expand to cover all fragments.
target target
.upcast::<Node>() .upcast::<Node>()
.border_boxes() .content_box()
.pop()
.unwrap_or_else(Rect::zero) .unwrap_or_else(Rect::zero)
}, },
// TODO(#31182): add support for border box, and device pixel size, calculations. ResizeObserverBoxOptions::Border_box => {
// Note: only taking first fragment,
// but the spec will expand to cover all fragments.
target
.upcast::<Node>()
.border_box()
.unwrap_or_else(Rect::zero)
},
// TODO(#31182): add support for device pixel size calculations.
_ => Rect::zero(), _ => Rect::zero(),
} }
} }

View file

@ -1,8 +1,4 @@
[observe.html] [observe.html]
expected: TIMEOUT
[guard]
expected: NOTRUN
[test8: simple content-box observation] [test8: simple content-box observation]
expected: [PASS, FAIL] expected: [PASS, FAIL]
@ -11,3 +7,27 @@
[test10: simple border-box observation] [test10: simple border-box observation]
expected: [PASS, FAIL] expected: [PASS, FAIL]
[test11: simple observation with vertical writing mode]
expected: FAIL
[test12: no observation is fired after the change of writing mode when box's specified size comes from logical size properties.]
expected: FAIL
[test13: an observation is fired after the change of writing mode when box's specified size comes from physical size properties.]
expected: FAIL
[test14: observe the same target but using a different box should override the previous one]
expected: FAIL
[test15: an observation is fired with box dimensions 0 when element's display property is set to inline]
expected: FAIL
[test16: observations fire once with 0x0 size for non-replaced inline elements]
expected: FAIL
[test17: Box sizing snd Resize Observer notifications]
expected: FAIL
[test18: an observation is fired when device-pixel-content-box is being observed]
expected: FAIL