Commit Graph
160 Commits
Author SHA1 Message Date
Andrew Osmond 2edcc2e58c Bug 1912543 - Fix requestVideoFrameCallback with suspended/invisible videos. r=media-playback-reviewers,padenot
When a tab is backgrounded, or on some platforms, when the window is
fully covered, full decoding of a video for playback is disabled. The
video timeline still advances, but there are no valid frames for
presentation. Similarly, if an HTMLVideoElement is in the DOM tree but
marked as invisible (e.g. 'display: none;' is set), we also cease full
decoding of a video. This is the VideoDecodeMode::Suspend mode.

Chrome and Safari both continue to honour requestVideoFrameCallback when
the video element is invisible in a foreground tab. Conversely, when we
are in a backgrounded tab, Chrome suspends rVFC callbacks, while Safari
continues.

Given that we suspend requestAnimationFrame callbacks similar to Chrome
for backgrounded tabs, this patch matches our behaviour with Chrome.

The standard does not discuss the implications of visibility and
background/foreground on rVFC. We have filed an issue requesting for
clarification, and that can tracked at:

https://github.com/WICG/video-rvfc/issues/92

Differential Revision: https://phabricator.services.mozilla.com/D220274
2024-08-28 17:10:35 +00:00
Ashley Zebrowski a843c313da Bug 1800882 - Implement HTMLVideoElement.requestVideoFrameCallback. r=webidl,media-playback-reviewers,emilio,ErichDonGubler,padenot
See https://wicg.github.io/video-rvfc/ for standard details.

Differential Revision: https://phabricator.services.mozilla.com/D216159
2024-08-01 20:12:22 +00:00
Sandor Molnar 42c4952868 Backed out 3 changesets (bug 1800882) for causing webcodecs failures . CLOSED TREE
Backed out changeset fd02fd0205ab (bug 1800882)
Backed out changeset fa46622c4ec7 (bug 1800882)
Backed out changeset 3ac74b4d6534 (bug 1800882)
2024-07-31 20:45:09 +03:00
Ashley Zebrowski 05a02c5a88 Bug 1800882 - Implement HTMLVideoElement.requestVideoFrameCallback. r=webidl,media-playback-reviewers,emilio,ErichDonGubler,padenot
See https://wicg.github.io/video-rvfc/ for standard details.

Differential Revision: https://phabricator.services.mozilla.com/D216159
2024-07-31 16:53:55 +00:00
Butkovits Atila e422067dc8 Backed out 3 changesets (bug 1800882) for causing webgpu failures. CLOSED TREE
Backed out changeset 8acda0361e97 (bug 1800882)
Backed out changeset 1e76fd470d00 (bug 1800882)
Backed out changeset 548a1763e689 (bug 1800882)
2024-07-26 01:14:08 +03:00
Ashley Zebrowski c781cc475c Bug 1800882 - Implement HTMLVideoElement.requestVideoFrameCallback. r=webidl,media-playback-reviewers,emilio,ErichDonGubler,padenot
See https://wicg.github.io/video-rvfc/ for standard details.

Differential Revision: https://phabricator.services.mozilla.com/D216159
2024-07-25 17:08:38 +00:00
Tamas Szentpeteri c944152723 Backed out changeset e2de2a86795f (bug 1800882) 2024-07-25 00:05:30 +03:00
Ashley Zebrowski 189b0b8e40 Bug 1800882 - Implement HTMLVideoElement.requestVideoFrameCallback. r=webidl,media-playback-reviewers,emilio,ErichDonGubler,padenot
See https://wicg.github.io/video-rvfc/ for standard details.

Differential Revision: https://phabricator.services.mozilla.com/D216159
2024-07-24 18:30:35 +00:00
Emilio Cobos Álvarez 5b62de6483 Bug 1883435 - Don't include GleanMetrics.h from Document.h. r=chutten,necko-reviewers,valentin
In bug 1883435 comment 2 chutten mentions that including
nsGlobalWindowInner.h from GleanMetrics.h causes a stylo build failure.

This is because nsGlobalWindowInner.h itself brings a bunch of DOM
bindings template soup that bindgen isn't great at dealing with.

That can be fixed in various ways. However, there is a simpler fix,
which is not including GleanMetrics at all.

It's trivial to do, and given it's a massive autogenerated file, and
Document.h is a very common header, it's worth doing this if only for
build times.

Fix a bunch of unused includes while at it.

Differential Revision: https://phabricator.services.mozilla.com/D203625
2024-03-05 17:54:14 +00:00
Emilio Cobos Álvarez 7506fc5879 Bug 1881011 - Refactor UnbindFromTree to take a context argument. r=smaug
Much like BindToTree.

This will be useful because I need to pass more information through
UnbindFromTree() to speed up dir=auto for bug 1874040.

Differential Revision: https://phabricator.services.mozilla.com/D202215
2024-02-20 15:05:40 +00:00
Karl Tomlinson 36e0e49ccf Bug 1863846 change VideoInfo::Rotation to non-nested enum class VideoRotation so that it can be forward declared r=aosmond,media-playback-reviewers,padenot
Differential Revision: https://phabricator.services.mozilla.com/D193163
2023-11-29 01:44:45 +00:00
Emilio Cobos Álvarez 9661bc15e8 Bug 1858977 - Remove dead code to lock orientation on video controls. r=smaug,webidl,reusable-components-reviewers,mconley,hjones
mozLockOrientation etc haven't done anything for a while.

Depends on D193212

Differential Revision: https://phabricator.services.mozilla.com/D193213
2023-11-10 09:29:14 +00:00
Emilio Cobos Álvarez d02e297b2d Bug 1624819 - Remove TaskCategory and other quantum dom remnants. r=smaug,media-playback-reviewers,credential-management-reviewers,cookie-reviewers,places-reviewers,win-reviewers,valentin,mhowell,sgalich,alwu
Sorry this is not a particularly easy patch to review. But it should be
mostly straight-forward.

I kept Document::Dispatch mostly for convenience, but could be
cleaned-up too / changed by SchedulerGroup::Dispatch. Similarly maybe
that can just be NS_DispatchToMainThread if we add an NS_IsMainThread
check there or something (to preserve shutdown semantics).

Differential Revision: https://phabricator.services.mozilla.com/D190450
2023-10-10 08:51:12 +00:00
Emilio Cobos Álvarez 8bd872cf7c Bug 1856628 - Remove WakeLock::IsDocumentInvisible and related code. r=pip-reviewers,mhowell
This was added for bug 1659060 and bug 1679314, but it is effectively
superseded by bug 1755748, which makes document.hidden false if PiP is
used.

Covered by toolkit/content/tests/browser/browser_media_wakelock_PIP.js

Differential Revision: https://phabricator.services.mozilla.com/D189940
2023-10-03 16:08:59 +00:00
Emilio Cobos Álvarez 529c9ee321 Bug 1839922 - Remove usage of {Has,Get}Attr(kNameSpaceID_None, ..). r=edgar
We have more readable and faster versions (that just omit the namespace
arg).

Mostly done via sed, with a couple helpers to use the faster lookups
where possible.

Differential Revision: https://phabricator.services.mozilla.com/D181795
2023-06-23 10:01:32 +00:00
Emilio Cobos Álvarez a1007b18c6 Bug 1839223 - Remove nsMappedAttributes. r=smaug
Instead, lazily schedule evaluation of them before styling, much like we
were doing for SVG.

A subtle tweak is that we only remain scheduled while in the document.
This allows us to use the "in document" bit plus the "mapped attributes
dirty" bit to know our scheduled status. It also prevents doing silly
work for disconnected elements, and having to do hashmap lookups on
adoption and node destruction.

Differential Revision: https://phabricator.services.mozilla.com/D181549
2023-06-22 17:22:03 +00:00
Cristian Tuns f54a728824 Backed out changeset a3e55d5f9f13 (bug 1839223) for causing multiple failures in Document.cpp CLOSED TREE 2023-06-22 11:34:15 -04:00
Emilio Cobos Álvarez a28183ac0e Bug 1839223 - Remove nsMappedAttributes. r=smaug
Instead, lazily schedule evaluation of them before styling, much like we
were doing for SVG.

A subtle tweak is that we only remain scheduled while in the document.
This allows us to use the "in document" bit plus the "mapped attributes
dirty" bit to know our scheduled status. It also prevents doing silly
work for disconnected elements, and having to do hashmap lookups on
adoption and node destruction.

Differential Revision: https://phabricator.services.mozilla.com/D181549
2023-06-22 14:31:16 +00:00
Tom Schuster 21a7211d1d Bug 1838415 - Add explicit targets for HTMLVideoElement metadata. r=tjr
Differential Revision: https://phabricator.services.mozilla.com/D180937
2023-06-21 07:01:22 +00:00
Tom Schuster f33200529a Bug 1834737 - Make RFPTarget parameter of Document::ShouldResistFingerprinting non-optional. r=tjr
Differential Revision: https://phabricator.services.mozilla.com/D178925
2023-05-31 09:46:54 +00:00
Karl Tomlinson f92ec4bbae Bug 1832479 use types for decoder owner Invalidate() boolean parameters r=pehrsons
for safety and readability.

Differential Revision: https://phabricator.services.mozilla.com/D177983
2023-05-16 21:30:29 +00:00
Masayuki Nakano 68d5732829 Bug 1829570 - part 2: Add an overload of AsyncEventDispatcher::RunDOMEventWhenSafe r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D176488
2023-05-15 01:07:29 +00:00
Andreas Pehrson e4753e6500 Bug 1807215 - Take video element intrinsic dimensions from VideoFrameContainer instead of ImageContainer. r=padenot
VideoFrameContainer already knows a frame's intrinsic size. The same intrinsic
size that drives media element invalidation.

ImageContainer just handles images and they don't have a notion of intrinsic
dimensions.

Differential Revision: https://phabricator.services.mozilla.com/D174085
2023-04-03 08:36:40 +00:00
Andreas Pehrson 04981fbabb Bug 1807215 - Make the intrinsic size arg in MediaDecoderOwner::Invalidate a const ref. r=padenot
Differential Revision: https://phabricator.services.mozilla.com/D174083
2023-04-03 08:36:39 +00:00
alwu db08a6d91a Bug 1820723 - do not create wakelock if XPCOM has started shutdown. r=media-playback-reviewers,jolin
Differential Revision: https://phabricator.services.mozilla.com/D172031
2023-03-09 18:08:43 +00:00
alwu 238599ac73 Bug 1804770 - add a pref to control video wakelock. r=azebrowski
Differential Revision: https://phabricator.services.mozilla.com/D165324
2022-12-22 19:19:15 +00:00
alwu 203938c43b Bug 1803834 - part2 : pause/resume non-audible autoplay video when its visibility changes. r=media-playback-reviewers,padenot
https://html.spec.whatwg.org/multipage/media.html#ready-states:eligible-for-autoplay-2

Depends on D163741

Differential Revision: https://phabricator.services.mozilla.com/D163742
2022-12-06 18:21:39 +00:00
Emilio Cobos Álvarez 12e596995e Bug 1799435 - Make RFP checks faster. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D161447
2022-11-08 02:36:25 +00:00
Sandor Molnar 93a6e1c506 Backed out changeset c7f5349824c4 (bug 1799435) for causing crashes in mozilla::dom::HTMLImageElement::LoadSelectedImage CLOSED TREE 2022-11-08 02:39:14 +02:00
Emilio Cobos Álvarez 79700d8de9 Bug 1799435 - Make RFP checks faster. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D161447
2022-11-07 22:23:50 +00:00
Iulian Moraru 281af99f4d Backed out changeset 44cb21194dc0 (bug 1799435) for causing multiple resist fingerprint related failures. CLOSED TREE 2022-11-07 18:42:11 +02:00
Emilio Cobos Álvarez 553deca383 Bug 1799435 - Make RFP checks faster. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D161447
2022-11-07 14:40:57 +00:00
Paul Adenot 745f7bd15e Bug 1757637 - Use the ImageContainer to determine video{Width,Height} instead of passing through the state machine. r=alwu
This means there is significantly less chance of desynchronization between the
actual size of the image and the reported size of the image.

Differential Revision: https://phabricator.services.mozilla.com/D149150
2022-07-11 13:32:40 +00:00
Norisz Fay 3a68c1efa2 Backed out changeset 817af8f5f831 (bug 1757637) for causing reftest failures on incorrect_display_in_bytestream_vp8.html CLOSED TREE 2022-06-29 14:25:07 +03:00
Paul Adenot 6aee2bf39d Bug 1757637 - Use the ImageContainer to determine video{Width,Height} instead of passing through the state machine. r=alwu
This means there is significantly less chance of desynchronization between the
actual size of the image and the reported size of the image.

Differential Revision: https://phabricator.services.mozilla.com/D149150
2022-06-29 10:01:34 +00:00
Jeff Muizelaar b9508e2e6e Bug 1762966 - Add a pref to force the number of dropped frames to 0. r=alwu
I want to use this to help debug resolution changes caused by frame
drops.

Differential Revision: https://phabricator.services.mozilla.com/D142870
2022-04-05 21:02:53 +00:00
Emilio Cobos Álvarez 6ddc96e2db Bug 1700640 - Map width and height to aspect-ratio in <canvas>, <input type=image>, and <video>. r=boris
As per https://html.spec.whatwg.org/#attributes-for-embedded-content-and-images:

> The width and height attributes map to the aspect-ratio property on
> img, canvas, and video elements, and input elements with a type
> attribute in the Image Button state.

See https://github.com/whatwg/html/issues/6527 for the parsing issue
with canvas and zero. For now allow both behaviors in the tests.

We also remove the width-and-height-map-to-aspect-ratio pref, as it is
true everywhere and has been for a while.

Differential Revision: https://phabricator.services.mozilla.com/D109618
2021-03-24 22:18:55 +00:00
alwu c8b54c29bb Bug 1685399 - part7 : implement a helper class to accumulate and report the telemetry probe. r=padenot,bryce
In this patch, we move the responsibility of accumulating time and report the telemetry to `TelemetryProbesReporter`.

There are some differences between new telemetry report and the old one.
1. more accuracy on knowing if element is visible
2. more accuracy on determining when it should start accumulating visible & invisible play time
3. being able to report the correct result when element encounts an error or changes to a new resource
4. report result whenever MediaDecoder stops working

Here is the explanation [1] describing why our previous method was not able to achieve those advantages.

[1] https://bugzilla.mozilla.org/show_bug.cgi?id=1685399#c13

Differential Revision: https://phabricator.services.mozilla.com/D101112
2021-01-19 17:34:47 +00:00
Simon Giesecke 46908cfb51 Bug 1660470 - Add missing include directives/forward declarations. r=nika
Differential Revision: https://phabricator.services.mozilla.com/D87865
2020-11-23 16:21:38 +00:00
Sylvestre Ledru 68b806d604 Bug 1674637 - Use nested namespaces in dom/ r=sg,andi
Also add some missing namespace qualifications

Done with:
./mach static-analysis check --checks="-*,modernize-concat-nested-namespaces" --fix dom/
./mach clang-format -p $(hg status dom/|grep ^M|awk '{print $2}')

Differential Revision: https://phabricator.services.mozilla.com/D95456
2020-11-04 17:04:01 +00:00
Butkovits Atila a6e7dcc53f Backed out changeset c0adbf7522dc (bug 1674637) for bustage on GMPParent.cpp. CLOSED TREE 2020-11-04 10:54:36 +02:00
Sylvestre Ledru 8f709b39e8 Bug 1674637 - Use nested namespaces in dom/ r=sg,andi
Also add some missing namespace qualifications

Done with:
./mach static-analysis check --checks="-*,modernize-concat-nested-namespaces" --fix dom/
./mach clang-format -p $(hg status dom/|grep ^M|awk '{print $2}')

Differential Revision: https://phabricator.services.mozilla.com/D95456
2020-11-04 08:29:00 +00:00
Ting-Yu Lin a11e3afb50 Bug 1674863 Part 1 - Improve type safety for APIs computing video's intrinsic size and ratio. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D95577
2020-11-03 19:54:41 +00:00
alwu 3bbdc5fd0e Bug 1659060 - part1 : treat lock visible if corresponding document has in use picture-in-picture element. r=bryce,smaug
When a tab is in the background, its document visibility would become invisible even if a tab owns a video which is visible because of being used in picture in picture mode.

When a document changes its visibility, the wakelock would change its lockstate from `lock-foreground` to `lock-background`. For `video-playing` wakelock topic, we would only request a real platform lock for `lock-foreground` because we don't want to prevent screen from sleeping if the video is invisible.

Therefore, considering if video is being used in picture in picture mode, when determining the wakelock's visible state. If video is still being used in picture in picture mode, then we would treat wakelock as if it's in foreground in order to keep a screen lock.

Differential Revision: https://phabricator.services.mozilla.com/D90781
2020-09-23 23:34:12 +00:00
Andreas Pehrson 597728ed3c Bug 1592539 - Use a MediaStreamRenderer to render video tracks into a secondary container. r=jib,mconley
This re-uses MediaStreamRenderer to render video into a secondary container, to
get identical logic for the clone target as for the clone source. The
MediaStreamRenderer can handle audio, currentTime and more as well, but those
are not used here.

Differential Revision: https://phabricator.services.mozilla.com/D87139
2020-08-26 14:25:40 +00:00
Andreas Pehrson fe4286e0d6 Bug 1592539 - Move the FirstFrameListener handling to MediaStreamRenderer. r=jib
This unclutters HTMLMediaElement somewhat by putting away the logic for handling
the FirstFrameListener into MediaStreamRenderer, which is better suited for the
task.

This will allow us to use a second MediaStreamRenderer to properly track video
tracks for a secondary VideoFrameContainer.

Differential Revision: https://phabricator.services.mozilla.com/D87134
2020-08-26 14:24:55 +00:00
Simon Giesecke a69d79b6db Bug 1648010 - Replace uses of NS_LITERAL_STRING/NS_LITERAL_CSTRING macros by _ns literals. r=geckoview-reviewers,jgilbert,agi,hsivonen,froydnj
Differential Revision: https://phabricator.services.mozilla.com/D80860
2020-07-01 08:29:29 +00:00
Jan-Ivar Bruaroey 5e8db4878d Bug 1434601 - Do screen wakelock even without audio if video element is sourced by a media stream. r=alwu
Differential Revision: https://phabricator.services.mozilla.com/D74129
2020-05-07 21:35:37 +00:00
Jonathan Watt 3b22e68804 Bug 1634474. Make dom/html/ buildable outside of unified-build environment. r=farre
Differential Revision: https://phabricator.services.mozilla.com/D73309
2020-05-04 14:29:02 +00:00
Timothy Gu ea6c1fcd3f Bug 1628500 - Remove aIgnoreTabindex argument from Element::IsInteractiveHTMLContent(). r=edgar
This argument is set to true everywhere, and soon HTML will no longer consider
tabindex for interactive content: https://github.com/whatwg/html/pull/5457.

Differential Revision: https://phabricator.services.mozilla.com/D72568
2020-04-28 11:22:32 +00:00