Commit Graph
1147 Commits
Author SHA1 Message Date
Tom Schuster 86424bc2fa Bug 2039903 - Change from nsIWidget::Modifiers to nsIWidget::NativeModifiers. r=masayuki,geckoview-reviewers,win-reviewers,m_kato,gstoll
Differential Revision: https://phabricator.services.mozilla.com/D300802
2026-06-01 14:01:29 +00:00
rperta 700e284d7c Revert "Bug 2039903 - Use nsIWidget::NativeModifiers for SynthesizeNativeMouseScrollEvent. r=masayuki,win-reviewers,gstoll" for causing build bustages
This reverts commit 312ba34b1e.

Revert "Bug 2039903 - Use nsIWidget::NativeModifiers for SynthesizeNativeKeyEvent. r=masayuki,win-reviewers,gstoll"

This reverts commit cdcd922a07.

Revert "Bug 2039903 - Use proper types for PBrowser::SynthesizeNativeMouseEvent. r=masayuki"

This reverts commit 45369938ed.

Revert "Bug 2039903 - Change from nsIWidget::Modifiers to nsIWidget::NativeModifiers. r=masayuki,geckoview-reviewers,win-reviewers,m_kato,gstoll"

This reverts commit 479f174ddb.
2026-06-01 11:32:48 +00:00
Tom Schuster 479f174ddb Bug 2039903 - Change from nsIWidget::Modifiers to nsIWidget::NativeModifiers. r=masayuki,geckoview-reviewers,win-reviewers,m_kato,gstoll
Differential Revision: https://phabricator.services.mozilla.com/D300802
2026-06-01 10:06:01 +00:00
Daniel Holbert fe6ee9a068 Bug 2043345: Use MakeRefPtr to do allocation for various RefPtr variables in widget/android. r=geckoview-reviewers,hiro
Differential Revision: https://phabricator.services.mozilla.com/D302957
2026-05-29 03:43:06 +00:00
serge-sans-paille d58c18b09a Bug 2030235 - Decouple ServoStyleConsts from nsGkAtoms.h r=emilio,necko-reviewers,geckoview-reviewers,firefox-style-system-reviewers,firefox-svg-reviewers,layout-reviewers,kershaw,m_kato
And remove unused includes of nsGkAtoms.h in the process. The few
dependencies have been moved to ServoStyleConstsInlines.h

The used command to remove the now unused dependency was:

git grep -l nsGkAtoms.h | while read line; do grep -v nsGkAtoms.h $line | grep -q -E '\<nsGkAtoms\>' || sed -i -e '/nsGkAtoms.h/d' $line  ; done

Differential Revision: https://phabricator.services.mozilla.com/D292697
2026-04-09 10:05:25 +00:00
Silaghi 81930b22ee Revert "Bug 2030235 - Decouple ServoStyleConsts from nsGkAtoms.h r=emilio,necko-reviewers,geckoview-reviewers,firefox-style-system-reviewers,firefox-svg-reviewers,layout-reviewers,kershaw,m_kato" for causing build bustages at style/nsStyleUtil
This reverts commit b97e69b590.
2026-04-09 08:09:15 +00:00
serge-sans-paille b97e69b590 Bug 2030235 - Decouple ServoStyleConsts from nsGkAtoms.h r=emilio,necko-reviewers,geckoview-reviewers,firefox-style-system-reviewers,firefox-svg-reviewers,layout-reviewers,kershaw,m_kato
And remove unused includes of nsGkAtoms.h in the process. The few
dependencies have been moved to ServoStyleConstsInlines.h

The used command to remove the now unused dependency was:

git grep -l nsGkAtoms.h | while read line; do grep -v nsGkAtoms.h $line | grep -q -E '\<nsGkAtoms\>' || sed -i -e '/nsGkAtoms.h/d' $line  ; done

Differential Revision: https://phabricator.services.mozilla.com/D292697
2026-04-09 06:41:33 +00:00
Makoto Kato fec6a67611 Bug 1912015 - Use proxy method for some JNI methods in LayerViewSupport. r=geckoview-reviewers,ohall.
`LayerViewSupport` has a race condition by disposing this object and
calling JNI methods. According to the crash reports, `onBoundsChanged`
and `onSafeAreaChanged` are possible called after `LayerViewSupport` is
disposed. In other word, some methods that notify Gecko of changing
window size etc by `onGlobalLayout` or `onApplyWindowInsets`) might be
called after window is being destroyed.

So we should use proxy method and `WindowEvent` class to avoid it.
`WindowEvent` will check if the object is attached during
`Runnable::Run`.

Differential Revision: https://phabricator.services.mozilla.com/D289083
2026-03-27 04:03:39 +00:00
Sylvestre Ledru 4f6b8b516d Bug 2023419 - Remove Emacs/Vim modelines from widget/ r=emilio
replaced by .editorconfig
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D287877
2026-03-16 17:22:02 +00:00
LIU Xinyu b99253dfd8 Bug 2018858 - Move PerformHapicFeedback to nsIWidget r=geckoview-reviewers,layout-reviewers,emilio,m_kato
Differential Revision: https://phabricator.services.mozilla.com/D285391
2026-03-09 09:09:18 +00:00
imnotlxy 350037349e Bug 1817606 - Perform haptic feedback when dragging an accessible caret r=geckoview-reviewers,layout-reviewers,TYLin,m_kato
Differential Revision: https://phabricator.services.mozilla.com/D283441
2026-02-24 09:28:50 +00:00
Charlotte 7870738376 Bug 1619755 - remove nsWindow::DispatchHitTest r=geckoview-reviewers,botond,masayuki
Differential Revision: https://phabricator.services.mozilla.com/D277570
2026-02-13 06:29:11 +00:00
pstanciu 248c74d533 Revert "Bug 1619755 - remove nsWindow::DispatchHitTest r=masayuki" as requested by the dev
This reverts commit f9693566e2.
2026-02-13 00:00:54 +00:00
Charlotte f9693566e2 Bug 1619755 - remove nsWindow::DispatchHitTest r=masayuki
Differential Revision: https://phabricator.services.mozilla.com/D277570
2026-02-12 22:59:08 +00:00
Jamie Nicol 63c3d4c4f3 Bug 2014923 - Ensure the correct GeckoResult is completed for screen pixels returned from the compositor. r=gfx-reviewers,geckoview-reviewers,ohall,lsalzman
To fulfil multiple GeckoDisplay.capturePixels() requests, Android
nsWindow's LayerViewSupport class maintains a queue of CaptureRequests
to be completed and sends one request at a time to the
compositor. When the result is returned from the compositor it pops
the first request from the queue and completes its GeckoResult.

In some circumstances, however, such as when the compositor is paused,
LayerViewSupport will immediately clear the CaptureRequest queue,
completing the GeckoResults with an error. If the compositor
subsequently returns the result for this request, the queue will now
be empty. Or worse, if a new request was received in the meantime, the
queue will contain a CaptureRequest corresponding to an entirely
different screenshot request, and we will incorrectly resolve its
GeckoResult with the result of the previous request. If the two
requests were for different sizes of screenshot this will even trigger
the sanity check assertions prior to copying the pixel data into the
bitmap.

This patch ensures that we ignore results returned from the compositor
if their corresponding GeckoResult has already been completed.

To achieve this, UiCompositorControllerChild::RequestScreenPixels()
now returns a MozPromise which resolves with the screen pixels
result. This is Track()ed with a MozPromiseRequestHolder, and when we
choose to clear the CaptureRequest queue early without waiting for the
result from the compositor then we must Disconnect() the request. This
ensures that when the promise callback actually runs it will always
correspond to the CaptureRequest at the front of the queue.

Differential Revision: https://phabricator.services.mozilla.com/D282437
2026-02-09 21:45:33 +00:00
Jamie Nicol 090b5329bb Bug 1661106 - Capture screen pixels by blitting into HardwareBuffer. r=gfx-reviewers,geckoview-reviewers,lsalzman,ohall
Rather than allocating a Shmem and performing a glReadPixels(),
instead allocate a HardwareBuffer which is bound to a framebuffer via
an EGL image, then blit to this from the main framebuffer. The
hardware buffer and a fence for synchronization are returned to the
child side via file descriptors. This avoids the existing synchronous
glReadPixels, and is more efficient than even an asynchronous
glReadPixels to a PBO would be as it only requires one copy.

This also allows us to handle the y-flip and cropping/scaling on the
GPU rather than performing this on the CPU.

On the client side we map the hardware buffer and perform a final copy
in to the target Bitmap. As the hardware buffer may have a different
stride than the Bitmap we can no longer use the Java function
Bitmap.copyPixelsFromBuffer(). Instead we use the NDK's
AndroidBitmap_getInfo() to determine the Bitmap's stride and memcpy()
line by line if required.

For now we only use RendererOGL::RequestScreenPixels() and related
functions on Android, so we just use the AndroidHardwareBuffer type
directly in the required function and type declarations and hide them
behind ifdefs. If we choose to make use of this infrastructure on
other platforms going forward we can implement a more generic
interface. If possible it would additionally be good to unify this
with the other screenshotting mechanisms (profiler screenshots and
composition recording).

Differential Revision: https://phabricator.services.mozilla.com/D281495
2026-02-04 16:22:39 +00:00
Jamie Nicol b2a8ae84e5 Bug 1661106 - Make UiCompositorBridgeParent::RecvRequestScreenPixels a bit more asynchronous. r=gfx-reviewers,geckoview-reviewers,lsalzman,ohall
UiCompositorBridgeParent::RecvRequestScreenPixels() is used by GeckoView
to screenshot the current session (for Fenix's tab thumbnails, etc).

Currently this works by requesting a composite and calling
WebRenderBridgeParent::RequestScreenPixels(). This will generate a
frame for the requested composite, and then call
MaybeCaptureScreenPixels(), which calls WebRenderAPI::Readback() to
capture the pixels.

WebRenderAPI::Readback() was designed to be used with
WebRenderBridgeParent::RecvSnapshot() which must return the snapshot
synchronously. It therefore dispatches a synchronous task to the
renderer thread and performs a render before performing the
readback. Not only that, it also disables webrender debug flags prior
to this render, then re-enables them afterwards, each of which causes
a render. This means it does 3 renders in total, in addition to the
normal render for the frame that we generated.

RecvRequestScreenPixels does not need to return synchronously. Instead
of using WebRenderAPI::Readback this patch therefore posts an
asynchronous message to the render thread to ensure the next rendered
frame is read back, making sure to post this message just *before*
generating the frame rather than just after.

The newly added functions use promises to return the results from the
render thread to WebRenderBridgeParent. And as an additional tidy up
the communication between UiCompositorControllerParent and
WebRenderBridgeParent was also switched to using promises.

Note that the actual readback is still performed using a synchronous
glReadPixels() call. This will be improved upon in subsequent patches.

Differential Revision: https://phabricator.services.mozilla.com/D281493
2026-02-04 16:22:32 +00:00
Emilio Cobos Álvarez 9202bc27c7 Bug 2006320 - Fix android/cocoa build bustage.
Signed-off-by: Emilio Cobos Álvarez <[email protected]>
2025-12-16 23:11:49 +00:00
Emilio Cobos Álvarez f465bef00d Bug 2006320 - Clean up WindowMoved / WindowResized to use typed units. r=win-reviewers,gstoll
Make sure that we notify of outer position and inner sizes.

Differential Revision: https://phabricator.services.mozilla.com/D276645
2025-12-16 22:27:48 +00:00
Chris Peterson 1bacc90000 Bug 2002864 - Replace MOZ_CONSTINIT with C++20 constinit in Android code. r=geckoview-reviewers,nalexander
Differential Revision: https://phabricator.services.mozilla.com/D274496
2025-12-09 06:59:25 +00:00
Emilio Cobos Álvarez 79e3fdc22a Bug 2000153 - Clean up widget event dispatch. r=masayuki
Make all nsIWidgetListener::HandleEvent go through a single
nsIWidget::DispatchEvent().

Differential Revision: https://phabricator.services.mozilla.com/D272601
2025-11-17 04:28:20 +00:00
Emilio Cobos Álvarez 3daf20f2ed Bug 2000138 - Add a missing include. 2025-11-14 09:46:46 +00:00
Emilio Cobos Álvarez 2ee191cca3 Bug 2000138 - Remove nsIWidgetListener::RequestRepaint. r=tnikkel,layout-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D272566
2025-11-14 05:05:16 +00:00
Markus Stange efc509c727 Bug 1956923 - Warm up URL classifier earlier. r=valentin,geckoview-reviewers,ohall
In the past we were opening the URL classifier DB on demand when
we made the first network request. This delays the first network
request slightly. Warming it up earlier will let the first request
go out sooner.

Differential Revision: https://phabricator.services.mozilla.com/D272041
2025-11-11 05:04:56 +00:00
serge-sans-paille b9ab86d508 Bug 1998400 - Make empty global variables of type nsTArray MOZ_CONSTINIT instead of MOZ_RUNINIT r=emilio,geckoview-reviewers,media-playback-reviewers,places-reviewers,ohall,chunmin
Differential Revision: https://phabricator.services.mozilla.com/D271390
2025-11-06 16:30:12 +00:00
Andrew Osmond bcf14f680d Bug 1992857 - Avoid disabling GPU process when backgrounded on Android. r=jnicol
This patch makes it so that we silently fail to setup the GPU process
and its associated IPDL actors on Android when we are in the background.
This is because Android limits our ability to keep a GPU process when
backgrounded, and the higher levels should have an ability to recover
from this situation for content processes when brought back into the
foreground. It also resets the unstable and launch attempt counters when
the fore/background state changes to be more forgiving of GPU process
crashes during the transitions.

When the GPU process is relaunched, it will also destroy the fallback
renderers created on Android, so that the next paint will properly
request remote compositing.

Differential Revision: https://phabricator.services.mozilla.com/D267679
2025-11-04 23:34:42 +00:00
Emilio Cobos Álvarez 256e9aa1ec Bug 1998225 - Remove some unused nsView includes. r=jwatt
Differential Revision: https://phabricator.services.mozilla.com/D271260
2025-11-04 19:06:23 +00:00
Ryan VanderMeulen d794b4c091 Bug 1991789 - Remove unnecessary GetApiVersion checks and NewApi suppressions. r=geckoview-reviewers,gfx-reviewers,jnicol,ohall
Differential Revision: https://phabricator.services.mozilla.com/D270353
2025-10-30 11:53:09 +00:00
serge-sans-paille 72609da313 Bug 1996641 - Remove unused mfbt inclusion in widget/** r=emilio,necko-reviewers,geckoview-reviewers,win-reviewers,gstoll,ohall,sunil
Differential Revision: https://phabricator.services.mozilla.com/D270216
2025-10-29 13:06:08 +00:00
Sandor Molnar 50c434493d Revert "Bug 1996641 - Remove unused mfbt inclusion in widget/** r=emilio,necko-reviewers,geckoview-reviewers,win-reviewers,gstoll,ohall,sunil" for causing build bustages @ nsHttpChannel.cpp
This reverts commit 66b97f2926.
2025-10-29 11:31:08 +00:00
serge-sans-paille 66b97f2926 Bug 1996641 - Remove unused mfbt inclusion in widget/** r=emilio,necko-reviewers,geckoview-reviewers,win-reviewers,gstoll,ohall,sunil
Differential Revision: https://phabricator.services.mozilla.com/D270216
2025-10-29 11:00:27 +00:00
Emilio Cobos Álvarez d2eb173cee Bug 1995049 - Simplify widget move/resize APIs. r=stransky,mac-reviewers,mstange
We no longer have child windows which means that all widgets use desktop
pixels. Make the type system enforce that.

We want to start storing coordinates in DesktopPixels for GTK, to deal
correctly with fractional scaling, so move mBounds to the relevant
subclasses.

There's no behavior change. Some of the changes uncover coordinate
system confusions in Windows that I plan to fix in followups.

Android / iOS / PuppetWidgets don't care about the coordinate
differences, because their DesktopToLayoutDeviceScale is 1.0. Still I
made puppet widgets go through the coordinate conversion because it
seemed easier than casting or what not.

Differential Revision: https://phabricator.services.mozilla.com/D269091
2025-10-17 23:33:52 +00:00
Emilio Cobos Álvarez 5d95a0922d Bug 1994893 - Avoid null InitData in widget init. r=mac-reviewers,geckoview-reviewers,bradwerth,m_kato
widget/cocoa was already dereferencing without checking. There were two
callers with null init data which were for headless / puppet widgets,
but this is clearer.

Differential Revision: https://phabricator.services.mozilla.com/D268978
2025-10-17 08:10:05 +00:00
Emilio Cobos Álvarez cc2759f7e5 Bug 1994157 - Remove nsBaseWidget. r=stransky,win-reviewers,gstoll
The distinction between nsBaseWidget and nsIWidget is useless as all our
implementations use the former.

So just merge both.

Differential Revision: https://phabricator.services.mozilla.com/D268518
2025-10-14 15:19:51 +00:00
Ryan VanderMeulen b782a19a5d Bug 1972713 - Fix non-unified build errors in widget. r=geckoview-reviewers,tcampbell
Differential Revision: https://phabricator.services.mozilla.com/D264313
2025-09-10 12:46:31 +00:00
Makoto Kato 43a750107b Bug 1974148 - Media keys on GeckoView aren't e10s-aware. r=masayuki,geckoview-reviewers,ohall
Originally, media keys were dispatched to `AudioManager` if web content
 doesn’t consume it by bug 730192. But after GeckoView (moving to e10s),
we always call `GeckoEditable.onDefaultKeyEvent()` if focused element
isn't editable even if web content consumes it.

`DispatchKeyboardEvent` is asynchronous and it doesn't wait for
whether the event is consumed or not. Also, even if we set the flag for
"waiting reply from remote process", its flag will reset in
`DispatchKeyboardEventInternal`.

So I would like to inhibit this. Then if media key, we set the flag if
on parent process.

Differential Revision: https://phabricator.services.mozilla.com/D256739
2025-08-07 07:56:11 +00:00
Nika Layzell 28950da5cb Bug 1953595 - Part 1: Refactor EventDispatcher to be more embedder-agnostic, r=geckoview-reviewers,nalexander
This patch refactors the C++/JS side of EventDispatcher into a new
EventDispatcherBase class, which has no dependencies on jni or Android thanks
to passing around JS::Value. This will allow the iOS implementation in part 2
to be much smaller and share more code with the Android implementation.

When refactoring the EventDispatcher logic, I also noticed some small
simplifications (such as using `nsTObserverArray` rather than the hand-rolled
observer logic from the previous version of the patch), which have been
applied. The code was also updated to use proper thread-safety annotations.

Differential Revision: https://phabricator.services.mozilla.com/D241287
2025-06-24 23:17:17 +00:00
Cristina Horotan 4da7d4ee45 Revert "Bug 1953595 - Part 2: Add EventDispatcher implementation for iOS, r=glandium,geckoview-reviewers,nalexander" for causing gv-junit failures
This reverts commit 23eb1407b7.

Revert "Bug 1953595 - Part 1: Refactor EventDispatcher to be more embedder-agnostic, r=geckoview-reviewers,nalexander"

This reverts commit 13b598fec0.
2025-06-11 02:16:57 +00:00
Nika Layzell 13b598fec0 Bug 1953595 - Part 1: Refactor EventDispatcher to be more embedder-agnostic, r=geckoview-reviewers,nalexander
This patch refactors the C++/JS side of EventDispatcher into a new
EventDispatcherBase class, which has no dependencies on jni or Android thanks
to passing around JS::Value. This will allow the iOS implementation in part 2
to be much smaller and share more code with the Android implementation.

When refactoring the EventDispatcher logic, I also noticed some small
simplifications (such as using `nsTObserverArray` rather than the hand-rolled
observer logic from the previous version of the patch), which have been
applied. The code was also updated to use proper thread-safety annotations.

Differential Revision: https://phabricator.services.mozilla.com/D241287
2025-06-10 19:18:37 +00:00
Atila Butkovits 7709788eac Revert "Bug 1953595 - Part 2: Add EventDispatcher implementation for iOS, r=glandium,geckoview-reviewers,nalexander" for causing Android failures.
This reverts commit 843fc1fc8a.

Revert "Bug 1953595 - Part 1: Refactor EventDispatcher to be more embedder-agnostic, r=geckoview-reviewers,nalexander"

This reverts commit 3582db2329.
2025-06-07 01:15:03 +00:00
Nika Layzell 3582db2329 Bug 1953595 - Part 1: Refactor EventDispatcher to be more embedder-agnostic, r=geckoview-reviewers,nalexander
This patch refactors the C++/JS side of EventDispatcher into a new
EventDispatcherBase class, which has no dependencies on jni or Android thanks
to passing around JS::Value. This will allow the iOS implementation in part 2
to be much smaller and share more code with the Android implementation.

When refactoring the EventDispatcher logic, I also noticed some small
simplifications (such as using `nsTObserverArray` rather than the hand-rolled
observer logic from the previous version of the patch), which have been
applied. The code was also updated to use proper thread-safety annotations.

Differential Revision: https://phabricator.services.mozilla.com/D241287
2025-06-06 23:47:37 +00:00
Oskar Mansfeld 97113e0aa9 Bug 1965076 - Add markers for Applink Startup milestones. r=mstange,geckoview-reviewers,nalexander,owlish
Added the following "Applink Startup" markers: `GeckoViewSupport::Open` and
`GeckoViewReady` milestones.

Differential Revision: https://phabricator.services.mozilla.com/D248340
2025-06-05 17:35:02 +00:00
Edgar Chen ecbdba93e3 Bug 1968352 - Stop using nsIObserver in nsIDOMWindowUtils.sendNative*Event; r=masayuki,smaug,geckoview-reviewers,hiro
The observer is always notified with null subject and data, and use different
topics for different events, but not all call sites check the topic. So it could
be just a callback with no arguments, would also clean up the code a bit.

Differential Revision: https://phabricator.services.mozilla.com/D251080
2025-06-03 09:47:52 +00:00
Makoto Kato b97f0d47dc Bug 1961452 - Don't call SetAttached until native handle is set. r=geckoview-reviewers,ohall
This issue is a possible crash case.

Actually `SessionAccessibility.NativeProvider.setAttached` is called in
C++ constructor of `SessionAccessibility`.  But native handle is set
after calling the constructor. So when `NativeProvider.setAttached` is
called, C++ side might not set native handle yet.

So we should not call `setAttached` in the constructor.

Differential Revision: https://phabricator.services.mozilla.com/D246070
2025-04-23 06:49:59 +00:00
Botond Ballo f9f72a3580 Bug 1940581 - Factor out a Metrics struct inside CompositorScrollUpdate to store the scroll offset and zoom. r=hiro,geckoview-reviewers,m_kato
This allows re-using the comparison logic in operator== in contexts where
we are only working with the scroll offset and zoom, and not a Source.

Differential Revision: https://phabricator.services.mozilla.com/D245524
2025-04-21 00:42:45 +00:00
Makoto Kato e908f5b0ea Bug 1957566 - Doesn't use GeckoViewSupport after window is destroyed. r=geckoview-reviewers,owlish
When the window is destroyed, Java object of GeckoViewSupport will be disposed.
So before using GeckoViewSupport, we should check whether the window is
destroyed.

Differential Revision: https://phabricator.services.mozilla.com/D243766
2025-04-15 10:58:38 +00:00
Emilio Cobos Álvarez 79aa0d7606 Bug 1958322 - Plumb pip mode to Gecko. r=padenot,hiro,geckoview-reviewers,webidl,saschanaz,smaug,calu
Differential Revision: https://phabricator.services.mozilla.com/D244794
2025-04-09 18:04:42 +00:00
Botond Ballo a97b1a0536 Bug 1956124 - Extend CompositorScrollUpdate with a 'source' field. r=hiro,geckoview-reviewers,nalexander
For now, this is always set to UserInteraction. In bug 1940581, an accurate
source will be tracked and propagated.

Differential Revision: https://phabricator.services.mozilla.com/D242837
2025-04-07 23:04:07 +00:00
Botond Ballo 1dde7b68bf Bug 1956124 - Pass CompositorScrollUpdate over PCompositorController as a struct rather than loose fields. r=hiro,geckoview-reviewers,m_kato
This makes it easier to extend the struct in the future.

Also rename some related APIs to have CompositorScrollUpdate in their
name for consistency.

(It would be nice to rename GeckoSession.ScrollPositionUpdate to
CompositorScrollUpdate as well, but that's public API.)

Differential Revision: https://phabricator.services.mozilla.com/D242835
2025-04-07 23:04:06 +00:00
kernp25 4d18975ff5 Bug 1945924 - Replace SchemeIsFoo functions with the inlined SchemeIs() call. r=valentin,emilio,necko-reviewers,geckoview-reviewers,anti-tracking-reviewers,core-sessionstore-reviewers,ohall,farre
No behavior change intended.

Differential Revision: https://phabricator.services.mozilla.com/D236756
2025-03-31 14:25:54 +00:00