Gecko Idle detection relies heavily on RefreshDriver. GC/CC scheduling, including when to run GC or CC slices, and the length of the slices, is mostly based on idle time. As WebXR isn't using normal RefreshDriver, the content process thinks it's idle and GC and CC get basically up to 50 ms slices.
Not having WebXR idle detection is causing stutter frames during immersive presentation. This patch implements idle deadline hint and sets the correct GC slices budgets during WebXR presentation.
Differential Revision: https://phabricator.services.mozilla.com/D74426
This patch will do :
- rename `MediaSessionController` to `MediaStatusManager`
- move `MediaStatusManager.*` to the folder under `mediacontrol`
- update the comment for `MediaStatusManager`
The advantage of doing so :
- increase the readability
More details :
We've extended the responsibility of `MediaSessionController` and it now handle a broader concept of media related status, not just media session related. Therefore, renaming it to precisely represent o its responsibility.
Differential Revision: https://phabricator.services.mozilla.com/D73493
This patch will do :
- rename variables and remove unnecessary spaces
The advantage of doing so :
- increase the readability
Differential Revision: https://phabricator.services.mozilla.com/D73491
This patch will do :
- create an interface `IMediaController` including only control related methods
The advantage of doing so :
- It's clear to use `IMediaController` as the only surface to control media
- explictly restrict which functions are available which can avoid using control related functions on those situations
Differential Revision: https://phabricator.services.mozilla.com/D73490
This patch will do :
- make all functions which are used to update information from the content process become a part of `IMediaInfoUpdater`
The advantage of doing so :
- It's clear to use `IMediaInfoUpdater` as the only surface to update the media related status
- explictly restrict which functions are available which can avoid using control related functions on those situations
Differential Revision: https://phabricator.services.mozilla.com/D73489
This patch will do :
- move the logic of determining `actual playback state` to `MediaSessionController`
The advantage of doing so :
- increate the cohesion of `MediaSessionController` because it should be the class to determine the final playback status, not `MediaController`
Differential Revision: https://phabricator.services.mozilla.com/D73488
This patch will do :
- move the instance of `MediaPlaybackStatus` to the `MediaSessionController` to allow `MediaSessionController` handle all media related status
The advantage of doing so :
- encapsulate all media related status details to `MediaSessionController` and simplify the code in `MediaController`
Differential Revision: https://phabricator.services.mozilla.com/D73487
This patch will do :
- implement a new class `MediaPlaybackStatus` to handle the detail of modifying different media status counter
The advantage of doing so :
- encapsulate the low level details to the delegate and simplify the code in `MediaController`
- help us maintain separated media status for each different context within a tab
- using `MediaPlaybackStatus` can fix the problem of not `IsAudible()` being able to represent the actual audible state of media controller
Differential Revision: https://phabricator.services.mozilla.com/D73486
This patch will do :
- make `NotifyMediaPlaybackChanged` and `NotifyMediaAudibleChanged` accept one more paramter that indicates where those update come from
The advantage of doing so :
- we would use that to maintain separated media status for each different context in the future patch.
Differential Revision: https://phabricator.services.mozilla.com/D72471
The right place to set the bit was in
nsIFrame::SetMayHaveTransformAnimations() (i.e. when we call
KeyframeEffect::UpdateEffectSet) for cases where we add transform animations.
on an nsIFrame which has been already initialized.
Depends on D75050
Differential Revision: https://phabricator.services.mozilla.com/D75051
Without this change stacking-context-transform-changing-keyframe.html will fail
with the next change, since we will incorrectly remove
nsChangeHint_UpdateTransformLayer from the target nsIFrame if the frame doesn't
have NS_FRAME_MAY_BE_TRANSFORMED bit.
Differential Revision: https://phabricator.services.mozilla.com/D75049
This looks like it was necessary a long time ago, but now just runs the same calls as the calling code, so unnecessarily splits the logic into two.
Depends on D75019
Differential Revision: https://phabricator.services.mozilla.com/D75020
Changes:
While the ubuntu1804 migration work was taking place, `pulseaudio` related pieces of code were sprinkled across a wide variety of modules.
Now that things have settled down, remove and streamline `pulseaudio` initialization so that there are less places for this to go wrong.
Differential Revision: https://phabricator.services.mozilla.com/D74809
Previously, any time a text run was encountered that was outside the
detected opaque backdrop of a picture cache, all subpixel AA would
get disabled for that surface.
Recently, we added support for conditional subpixel mode, where a
list of excluded rects can be provided (compositor surfaces) that
require a text run to disable subpixel AA.
This patch extends that, adding an inclusion rect to the conditional
subpixel mode. This allows subpixel AA to be enabled on any text
runs that are within the bounds of the detected opaque backdrop
for a picture cache.
Differential Revision: https://phabricator.services.mozilla.com/D75027
Fix up the browser_tab_label_during_restore.js test to wait for the right number of tab title changes, since the timing of the tab title updating has now changed.
Differential Revision: https://phabricator.services.mozilla.com/D72562
The upgrade of mp4parse pulled some code that previously was eliminated as
dead code in libxul. That code was unfortunately unreproducible as it
was generating a random seed at compile time. This was due to hashbrown
enabling the ahash feature that does that, but that was changed in 0.7.2.
Differential Revision: https://phabricator.services.mozilla.com/D75033
Turns out we did have a hook for this already! But it is used to draw or
not inner button styles, so not quite equivalent.
I had to expand the amount of things it applies to because buttons and
such do paint focus indicators in all widgets. This patch could cause
some undesired outlines in some widgets. I hope not (I tried to audit to
the best of my knowledge), but in that case they'd be just more values
to add to the list.
Differential Revision: https://phabricator.services.mozilla.com/D74733
WebVR and WebXR gamepad pose data is updated after the RAF and not before. This adds a extra frame of latency for the input because JavaScript will not use the latest value.
Differential Revision: https://phabricator.services.mozilla.com/D74924