Commit Graph

76 Commits

Author SHA1 Message Date
Tom Schuster
b8d11d463f Bug 1951893 - Remove unneeded StaticAtom suffixes. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D240598
2025-03-11 11:36:09 +00:00
Otto Länd
300de5ac42 Bug 1950560: apply code formatting via Lando
# ignore-this-changeset
2025-02-27 06:21:08 +00:00
Hiroyuki Ikezoe
602f35e441 Bug 1950560 - Do not clobber restoring the scroll position on re-snap. r=botond
Differential Revision: https://phabricator.services.mozilla.com/D239677
2025-02-27 02:34:52 +00:00
Hiroyuki Ikezoe
b2b048a314 Bug 1950560 - Clear mSnapTargets just before trying to resnap instead of inside ScrollContainerFrame::GetSnapPointForResnap. r=botond
Though there's no problem even if we clear mSnapTargets in
ScrollContainerFrame::GetSnapPointForResnap, the main purpose of this change
is to avoid multiple call sites of ScrollSnapUtils::GetSnapPointForResnap
so that in the next change we only need to tweak the single call site.

Differential Revision: https://phabricator.services.mozilla.com/D239685
2025-02-27 02:34:52 +00:00
Hiroyuki Ikezoe
1e2838636c Bug 1948522 - Use the display root frame as the root frame for popup in RestrictToRootDisplayPort. r=botond
This change is similar to the previous change, but for displayport.

Differential Revision: https://phabricator.services.mozilla.com/D238555
2025-02-20 03:29:39 +00:00
Boris Chiou
01822d4c20 Bug 1944977 - Unregister the scroll timelines after scheduling all timelines. r=hiro
It's possible to unregister the timelines in Tick() if the
content-visibility changed. I'd like to avoid this to make things
simpler. Therefore, we add an extra flag and set it if we would like to
unregister this timeline while scheduling, and then we remove these
timelines after scheduling.

Differential Revision: https://phabricator.services.mozilla.com/D236642
2025-02-04 05:33:58 +00:00
Hiroyuki Ikezoe
56ff79d442 Bug 1941175 - Use nsIFrame::GetNearestWidget rather than nsPresContext::GetNearestWidget for paint skipping. r=botond
helper_paint_skip_in_popup.html was originally written by Mayank Bansal.

Differential Revision: https://phabricator.services.mozilla.com/D234229
2025-01-16 01:59:19 +00:00
Alexandru Marc
3678a3f430 Backed out 5 changesets (bug 1941175) for causing reftest failures @ details-display-inline.html CLOSED TREE
Backed out changeset e908e40ae014 (bug 1941175)
Backed out changeset f0ddddc22390 (bug 1941175)
Backed out changeset 7e16ac152467 (bug 1941175)
Backed out changeset e5ff999da3c5 (bug 1941175)
Backed out changeset 1509d43843a0 (bug 1941175)
2025-01-16 07:56:47 +02:00
Hiroyuki Ikezoe
4aaf965b0d Bug 1941175 - Use nsIFrame::GetNearestWidget rather than nsPresContext::GetNearestWidget for paint skipping. r=botond
helper_paint_skip_in_popup.html was originally written by Mayank Bansal.

Differential Revision: https://phabricator.services.mozilla.com/D234229
2025-01-16 01:59:19 +00:00
Timothy Nikkel
a5ec118f77 Bug 1936288. Avoid getting the display port another time in ScrollContainerFrame::BuildDisplayList. r=hiro
This sometimes shows up in profiles, so avoid getting the displayport when we have that info already.

Differential Revision: https://phabricator.services.mozilla.com/D231686
2024-12-12 08:11:14 +00:00
Timothy Nikkel
954d9f6331 Bug 1934164. Remove unused scroll grab code. r=botond
Differential Revision: https://phabricator.services.mozilla.com/D230635
2024-12-05 12:05:38 +00:00
Timothy Nikkel
f717b3a781 Bug 1933882. We don't need a scroll target id for scroll bar display items if we aren't building compositor hit test info. r=layout-reviewers,jfkthame,jwatt
The scroll target id is only used when we are actually painting to the window.

This avoids the significant time taken for IsScrollingActive and FindOrCreateIDFor during event handling display list builds.

Differential Revision: https://phabricator.services.mozilla.com/D230479
2024-12-01 12:16:07 +00:00
Timothy Nikkel
969638cc84 Bug 1933882. Re-arrange condition to avoid calling relatively slow IsAbsPosContainingBlock. r=layout-reviewers,jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D230478
2024-12-01 12:16:07 +00:00
Boris Chiou
2cacb75b9a Bug 1921553 - Use PseudoStyleRequest in AnimationCollection and TimelineCollection. r=view-transitions-reviewers,layout-reviewers,emilio
Just like what we do for EffectSet. Also, we will update
ElementAnimationData later, so for now only change the APIs of
AnimationCollection and TimelineCollection (and their callers).

Differential Revision: https://phabricator.services.mozilla.com/D228227
2024-11-25 23:46:33 +00:00
Boris Chiou
30af2312c9 Bug 1921553 - Use PseudoStyleRequest in AnimationUtils and EffectCompositor. r=view-transitions-reviewers,layout-reviewers,emilio
Basically, we'd like to separate the originating element and its pseudo
element request in Animation code (for better compatibility with Web
Animations APIs and other pseudo types), and store the animations and
keyframe effects in the origninating element as well.

In this patch, we reuse `Element::GetPseudoElement()`, and update the
function signatures in EffectCompositor and RestyleManager.

All the following patches will replace more places with
`PseudoStyleRequest`.

Differential Revision: https://phabricator.services.mozilla.com/D228223
2024-11-25 23:46:31 +00:00
Jonathan Watt
7532be254f Bug 1931736. Add missing braces around if/loop statements in layout/generic/. r=layout-reviewers,emilio
Depends on D229247

Differential Revision: https://phabricator.services.mozilla.com/D229248
2024-11-17 05:03:58 +00:00
Stanca Serban
deedaaf8c2 Backed out changeset 41ffc2364844 (bug 1913951) for causing reftests failures in 1133905-1-vh-rtl.html. CLOSED TREE 2024-11-15 02:15:05 +02:00
Hiroyuki Ikezoe
184ff7c2d4 Bug 1913951 - Ignore __underflow__ area for the minimum scale size calculation. r=botond
Differential Revision: https://phabricator.services.mozilla.com/D228270
2024-11-14 22:42:42 +00:00
Alexandru Marc
e5fac45584 Backed out changeset c1acf137ed79 (bug 1913951) for causing reftest failures @ 1166147.html . CLOSED TREE 2024-11-14 11:15:01 +02:00
Hiroyuki Ikezoe
9473e2d395 Bug 1913951 - Ignore __underflow__ area for the minimum scale size calculation. r=botond
Differential Revision: https://phabricator.services.mozilla.com/D228270
2024-11-14 06:23:00 +00:00
David Shin
c35c146cbd Bug 1768921 - Ensure that padding inflated bounds of in-flow children are included in the scrollable element's overflow area. r=dholbert
This means that when users scroll to the inline-end of a scroller, they will
see that the inline-end padding of that scroller is added in.

This is achieved by unioning an additional rect into the scrollable element's
overflow area (Which is an accumulation of the recursive overflow-area
contributions from its subtree).

This additional rect is calculated as follows:
- In-flow children and float's margin boxes are unioned (including zero-size boxes)
- The unioned rect is then inflated by the scrollable element's padding

Note: The bounds of zero-area in-flow-child rects are included in this rect,
in both block- and inline- directions. This is a change in behavior; Divs of
huge inline size and zero block size used to not affect the scrollable overflow,
where divs with huge block size and zero inline size did, as a side effect of now
removed `nsBlockFrame::ConsiderBlockEndEdgeOfChildren`.

Note on WPT change sizing-orthog-(vlr|vrl)-in-htb-(008|020)-ref.xht - the padding existed
to force empty space below `p#sentence-after`. However, this only applies to previous
Firefox. Any combination of browser + default font (+ its default size) causing a scroll
would cause the test to fail as false positive (According to wpt.fyi, this is what happens
with sizing-orthog-(vlr|vrl)-008.xht tests). This change brings Firefox's scroll behaviour
inline with other browsers.

Differential Revision: https://phabricator.services.mozilla.com/D151310
2024-11-13 20:29:13 +00:00
Jonathan Kew
d76851fee6 Bug 1929445 - Use CSSMinMax rather than std::clamp to avoid assertion & undefined behavior on bad arguments. r=dholbert
This is just a band-aid to avoid the undefined behavior of std::clamp;
our CSSMinMax handles the case in a predictable way.

The real issue here must be that the frame has reported a "negative"
block-size, presumably due to integer overflow during nscoord arithmetic.
If we get a pernosco trace of the assertion, perhaps we can identify the
source of the overflow and correct/clamp it earlier to avoid this.

Differential Revision: https://phabricator.services.mozilla.com/D228595
2024-11-12 11:10:58 +00:00
Norisz Fay
07ccada8ce Backed out changeset 1445e1cfc71f (bug 1768921) for causing multiple failures CLOSED TREE 2024-11-08 00:09:56 +02:00
David Shin
361dd30414 Bug 1768921 - Ensure that padding inflated bounds of in-flow children are included in the scrollable element's overflow area. r=dholbert
This means that when users scroll to the inline-end of a scroller, they will
see that the inline-end padding of that scroller is added in.

This is achieved by unioning an additional rect into the scrollable element's
overflow area (Which is an accumulation of the recursive overflow-area
contributions from its subtree).

This additional rect is calculated as follows:
- In-flow children and float's margin boxes are unioned (including zero-size boxes)
- The unioned rect is then inflated by the scrollable element's padding

Note: The bounds of zero-area in-flow-child rects are included in this rect,
in both block- and inline- directions. This is a change in behavior; Divs of
huge inline size and zero block size used to not affect the scrollable overflow,
where divs with huge block size and zero inline size did, as a side effect of now
removed `nsBlockFrame::ConsiderBlockEndEdgeOfChildren`.

Note on WPT change sizing-orthog-(vlr|vrl)-in-htb-(008|020)-ref.xht - the padding existed
to force empty space below `p#sentence-after`. However, this only applies to previous
Firefox. Any combination of browser + default font (+ its default size) causing a scroll
would cause the test to fail as false positive (According to wpt.fyi, this is what happens
with sizing-orthog-(vlr|vrl)-008.xht tests). This change brings Firefox's scroll behaviour
inline with other browsers.

Differential Revision: https://phabricator.services.mozilla.com/D151310
2024-11-07 21:03:05 +00:00
longsonr
843d861ed7 Bug 1929338 - convert more mozilla:clamped to std:clamp r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D228069
2024-11-05 18:52:41 +00:00
Hiroyuki Ikezoe
e38ad9d39d Bug 1922904 - Fix bug 1780701 in a different approach. r=botond
In bug 1780701, we changed ScrollSnapUtils::GetSnapPointForDestination not to
return a valid SnapDestination if the snap position is equal to the original
scroll destination. But it has a bad side-effect on wheel scrolling.

While wheel scrolling, there are multiple wheel inputs comming from OS, in every
wheel input we do use the destination of the animation running at that moment
[1].  So if in the first wheel input we created a smooth animation for snapping
to the SnapDestination, and then in the second wheel input
GetSnapPointForDestination doesn't return any valid SnapDestination so that the
smooth animation is clobbered [2].

To avoid this bad side-effect, we do skip scroll snapping in the call site,
ScrollContainerFrame::ScrollSnap, if the snap position equals to the original
scroll destination.

[1] https://searchfox.org/mozilla-central/rev/53e8dfd81c32f1ab275516406ec06a68136aaef0/gfx/layers/apz/src/AsyncPanZoomController.cpp#2585-2586
[2] https://searchfox.org/mozilla-central/rev/53e8dfd81c32f1ab275516406ec06a68136aaef0/gfx/layers/apz/src/AsyncPanZoomController.cpp#2603

Differential Revision: https://phabricator.services.mozilla.com/D227409
2024-11-02 06:37:14 +00:00
Goloman Adrian
9d883be990 Backed out changeset 5b6fb5d517d3 (bug 1922904) for causing wpt failures at prefer-targeted-element-positioned.html. CLOSED TREE 2024-11-02 06:23:09 +02:00
Hiroyuki Ikezoe
7ba69c6d21 Bug 1922904 - Fix bug 1780701 in a different approach. r=botond
In bug 1780701, we changed ScrollSnapUtils::GetSnapPointForDestination not to
return a valid SnapDestination if the snap position is equal to the original
scroll destination. But it has a bad side-effect on wheel scrolling.

While wheel scrolling, there are multiple wheel inputs comming from OS, in every
wheel input we do use the destination of the animation running at that moment
[1].  So if in the first wheel input we created a smooth animation for snapping
to the SnapDestination, and then in the second wheel input
GetSnapPointForDestination doesn't return any valid SnapDestination so that the
smooth animation is clobbered [2].

To avoid this bad side-effect, we do skip scroll snapping in the call site,
ScrollContainerFrame::ScrollSnap, if the snap position equals to the original
scroll destination.

[1] https://searchfox.org/mozilla-central/rev/53e8dfd81c32f1ab275516406ec06a68136aaef0/gfx/layers/apz/src/AsyncPanZoomController.cpp#2585-2586
[2] https://searchfox.org/mozilla-central/rev/53e8dfd81c32f1ab275516406ec06a68136aaef0/gfx/layers/apz/src/AsyncPanZoomController.cpp#2603

Differential Revision: https://phabricator.services.mozilla.com/D227409
2024-11-01 22:23:07 +00:00
Hiroyuki Ikezoe
f49f73072b Bug 1858798 - Ignore any target snap points in the case of empty snapport. r=botond
Differential Revision: https://phabricator.services.mozilla.com/D226574
2024-10-25 21:13:34 +00:00
Hiroyuki Ikezoe
0f8e5e370e Bug 1911457 - Do a reflow on the root scroll container when the horizontal overflow area is changed to recompute minimum-scale size. r=layout-reviewers,emilio
On mobile environments, the `minimum-scale` size, which allows users to zoom
out to scales less than 1.0, should include the ICB's overflow, even when
`overflow-x:hidden` is specified on the root element.

This change ensures that we update the `minimum-scale` size when the overflow
of the ICB changes.

Differential Revision: https://phabricator.services.mozilla.com/D226416
2024-10-23 07:01:27 +00:00
Tamas Szentpeteri
e1227b3ba7 Backed out changeset 3033cffb3c50 (bug 1911457) for causing Wr failures on transform-3d-scales-different-x-y-dynamic-002.html. CLOSED TREE 2024-10-23 09:42:33 +03:00
Hiroyuki Ikezoe
3687fc5869 Bug 1911457 - Do a reflow on the root scroll container when the horizontal overflow area is changed to recompute minimum-scale size. r=layout-reviewers,emilio
On mobile environments, the `minimum-scale` size, which allows users to zoom
out to scales less than 1.0, should include the ICB's overflow, even when
`overflow-x:hidden` is specified on the root element.

This change ensures that we update the `minimum-scale` size when the overflow
of the ICB changes.

Differential Revision: https://phabricator.services.mozilla.com/D226416
2024-10-23 02:22:02 +00:00
Alexandru Marc
9d18bfafd9 Backed out changeset e88ac6f27379 (bug 1925476) as requested by Emilio for causing wpt failures. CLOSED TREE 2024-10-18 16:32:55 +03:00
Emilio Cobos Álvarez
9b80f0fb36 Bug 1925476 - Remove ScrollContainerFrame::DidReflow. r=jwatt
It's not needed, ReflowFinished runs less often but still
unconditionally for scroll containers when we reflow, so it's a fine
place to post async work.

Differential Revision: https://phabricator.services.mozilla.com/D226116
2024-10-18 12:09:37 +00:00
Florian Quèze
d15ab35ea1 Bug 1921237 - Remove the FX_REFRESH_DRIVER_SYNC_SCROLL_FRAME_DELAY_MS telemetry histogram, r=botond.
Differential Revision: https://phabricator.services.mozilla.com/D223750
2024-10-10 18:40:00 +00:00
Botond Ballo
a85f935913 Bug 1922865 - Define ScrollContainerFrame::GetScrollPortRectAccountingForMaxDynamicToolbar() out of line. r=hiro,TYLin
Differential Revision: https://phabricator.services.mozilla.com/D224619
2024-10-08 00:21:10 +00:00
Emilio Cobos Álvarez
1b1dfeb153 Bug 1922571 - Remove some unneeded use of compiler_specific.h outside of ipc. r=nika
We don't build with MSVC, so no need for any of this.

Differential Revision: https://phabricator.services.mozilla.com/D224503
2024-10-04 08:00:42 +00:00
Emilio Cobos Álvarez
8b9e0c00d4 Bug 1914154 - Fix how we deal with APZ scrollbar activity. r=hiro
For the vertical tab bar, probably due to how it re-implements
scrolling[1], we get multiple eTransformBegin state changes, but a
single eTransformEnd.

That ends up with a permanently-positive activity counter, which leaves
the scrollbar visible.

There might be an underlying APZ bug here, not sure if mismatched events
are expected, but it seems other handlers deal with this mostly
correctly, and the fix on layout's end is rather trivial, too, so this
seems worth doing.

[1]: https://searchfox.org/mozilla-central/rev/26a98a7ba56f315df146512c43449412f0592942/toolkit/content/widgets/arrowscrollbox.js#640-718

Differential Revision: https://phabricator.services.mozilla.com/D222431
2024-09-18 15:01:19 +00:00
Emilio Cobos Álvarez
117a44742f Bug 1918762 - Use ElementState rather than the hover attribute to determine scrollbar hover state. r=mac-reviewers,mstange
That's what we use for painting in all platforms except macOS with
overlay scrollbars, where we make it sticky. Make the stickiness more
explicit (this also fixes the sticky state getting cleaned up too
early).

Differential Revision: https://phabricator.services.mozilla.com/D222161
2024-09-17 08:08:20 +00:00
Ting-Yu Lin
6af05a0977 Bug 1909761 Part 2 - Create a helper struct IntrinsicSizeInput to aggregate needed data when computing intrinsic inline size. r=dholbert
This patch changes the signature to `GetMinISize()`, `GetPrefISize()`,
`IntrinsicISize` by adding a helper struct as a preparation. Then we can just
add more data such as a percentage basis to the struct without altering the
signature in the future.

When passing `IntrinsicSizeInput` struct down to another helper method, we
generally just pass the original one if the method is computing the intrinsic
size of our own or our anonymous children. If the method is computing our
children's intrinsic contribution, we'll need to create a brand new
`IntrinsicSizeInput` for our children.

Differential Revision: https://phabricator.services.mozilla.com/D219521
2024-09-03 04:25:41 +00:00
Butkovits Atila
4d06404349 Backed out 6 changesets (bug 1909761) for causing failures at test_contextmenu_rtl.xhtml. CLOSED TREE
Backed out changeset 1e9f47784a54 (bug 1909761)
Backed out changeset d2dcf159185b (bug 1909761)
Backed out changeset 3f48c106bff9 (bug 1909761)
Backed out changeset 38d1e5eda09d (bug 1909761)
Backed out changeset 8de556490289 (bug 1909761)
Backed out changeset 4e7f22f43bb4 (bug 1909761)
2024-08-28 10:44:09 +03:00
Ting-Yu Lin
f0ff97db90 Bug 1909761 Part 2 - Create a helper struct IntrinsicSizeInput to aggregate needed data when computing intrinsic inline size. r=dholbert
This patch changes the signature to `GetMinISize()`, `GetPrefISize()`,
`IntrinsicISize` by adding a helper struct as a preparation. Then we can just
add more data such as a percentage basis to the struct without altering the
signature in the future.

When passing `IntrinsicSizeInput` struct down to another helper method, we
generally just pass the original one if the method is computing the intrinsic
size of our own or our anonymous children. If the method is computing our
children's intrinsic contribution, we'll need to create a brand new
`IntrinsicSizeInput` for our children.

Differential Revision: https://phabricator.services.mozilla.com/D219521
2024-08-28 06:18:44 +00:00
Ting-Yu Lin
a024d0e616 Bug 1914661 Part 3 - Add ReflowInput::SetBResizeForPercentages(). r=dholbert
We have `SetBResize()`, so it would be useful to add a method to set
`mIsBResizeForPercentages` flag for consistency.

Differential Revision: https://phabricator.services.mozilla.com/D220023
2024-08-23 19:52:50 +00:00
Emilio Cobos Álvarez
a012cd6770 Bug 1906475 - Improve scroll{Width,Height} implementation for overflow: visible frames. r=dholbert
Differential Revision: https://phabricator.services.mozilla.com/D218782
2024-08-15 15:02:00 +00:00
Ting-Yu Lin
2969a5e0cb Bug 1909995 Part 2 - Add IntrinsicISize() as a helper to implement GetMinISize() and GetPrefISize(). r=layout-reviewers,emilio
Most frame types have identical or very similar implementation for GetMinISize()
and GetPrefISize(), and many of them already have `IntrinsicISize()` to unify
the implementation. This patch introduces nsIFrame::IntrinsicISize() so that
derived classes only need to override one method.

`nsBlockFrame`, `ColumnSetWrapperFrame`, and `nsColumnSetFrame` are the only
three classes where their `GetMinISize()` and `GetPrefISize()` have significant
differences. Therefore, we rename `GetMinISize()` and `GetPrefISize()` to
`MinISize()` and `PrefISize`, respectively, and use them as helpers to implement
their `IntrinsicISize()`.

This patch doesn't change behavior.

Differential Revision: https://phabricator.services.mozilla.com/D217790
2024-07-26 20:54:56 +00:00
Emilio Cobos Álvarez
d25d53b6fc Bug 1909311 - Remove nsIFormControlFrame and nsITextControlFrame. r=masayuki,layout-reviewers,dholbert
It's a rather useless interface:

 * nsITextControlFrame is only implemented by nsTextControlFrame, so we
   can just use that.
 * nsIFormControlFrame had very few actual functionality, mostly
   scattered around:
    * SetFormProperty(select) was only useful for nsTextControlFrame.
    * SetFormProperty(value) was only called on file controls.
    * SetFocus() did mostly nothing, or things that can be done in
      ElementStateChanged instead.

There are some do_QueryFrame calls that I replaced for better checks in
font inflation and nsIFrame, but I'll adjust to preserve behavior if you
insist (it just such a somewhat-random check).

Differential Revision: https://phabricator.services.mozilla.com/D217322
2024-07-23 16:16:18 +00:00
Emilio Cobos Álvarez
cf22f69bc6 Bug 1908242 - Make sure that sticky items are processed in the right order. r=TYLin
We rely on positioning ancestors before descendants to get the right
position. This was very implicitly enforced before the regressing bug,
by reframing on position changes (due to the order
StickyScrollContainer::AddFrame was called, ancestors before children).

In order to support dynamic sticky changes without reframing, we need to
handle the case of an existing ancestor switching position to sticky
dynamically.

Luckily we already have the right data-structure for that, so the change
is rather trivial.

Write a testharness test for this because APZ does get the position
right, so it's more future-proof against regressions to just test the
raw layout values.

Differential Revision: https://phabricator.services.mozilla.com/D216858
2024-07-18 20:54:13 +00:00
Emilio Cobos Álvarez
9b231b189e Bug 1788504 - Account for current dynamic toolbar state in IntersectionObserver. r=emilio
Chrome uses bimodal layout viewport for IntersectionObserver;

a) While the dynamic toolbar is visible, Chrome uses the layout viewport
   (which doesn't include the dynamic toolbar area)
b) While the dynamic toolbar is completely hidden, Chrome uses the layout
  viewport + the height that the dynamic toolbar was originally occupied.

In this change we align the behavior with Chrome's behavior.

Differential Revision: https://phabricator.services.mozilla.com/D212920
2024-07-18 07:08:16 +00:00
Hiroyuki Ikezoe
022e99a431 Bug 1905247 - Clamp scroll-snap-align: start snap points inside the scroll range. r=emilio
This change is basically equivalent with what we did for bug 1788029 but for
`scroll-snap-align: start` cases.

The test case was originally written by Daniel Holbert.

Differential Revision: https://phabricator.services.mozilla.com/D215315
2024-07-02 21:53:14 +00:00
Hiroyuki Ikezoe
44d88fd9fa Bug 1905247 - Convert logicalScrollRange into writingMode. r=emilio
`logicalScrollRange` is used to clamp each candidate snap position inside the
scroll range. If we used `aWritingModeOnScroller` for `logicalScrollRange`,
clamping will be done in a wrong axis in some cases.

With the next commit but without this change running
scroll-snap-writing-mode-000.html [1] causes a lot of
"ASSERTION: writing-mode mismatch" warnings.

[1] https://searchfox.org/mozilla-central/rev/16a5f0e868a01d3f3a4a7364206bef2a64e80735/testing/web-platform/tests/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-writing-mode-000.html

Differential Revision: https://phabricator.services.mozilla.com/D215314
2024-07-02 21:53:14 +00:00