Closed Bug 1898344 Opened 5 months ago Closed 4 months ago

Support MediaCapabilitiesKeySystemConfiguration

Categories

(Core :: Audio/Video: Playback, task, P1)

task

Tracking

()

RESOLVED FIXED
129 Branch
Tracking Status
relnote-firefox --- 129+
firefox129 --- fixed

People

(Reporter: alwu, Assigned: alwu)

References

(Blocks 1 open bug, )

Details

(Keywords: dev-doc-complete)

Attachments

(10 files)

48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review

Currently Firefox hasn't implemented MediaCapabilitiesKeySystemConfiguration in MediaDecodingConfiguration. Chromium has supported that but WebKit hasn't supported that yet.

This bug will add the implementation for MediaCapabilitiesKeySystemConfiguration and then allows website to request a MediaCapabilitiesDecodingInfo via decodingInfo() method.

Severity: -- → N/A
Type: defect → task
Priority: P2 → P3
Priority: P3 → P1
Depends on: 1898588

We also need to implement MediaCapabilitiesDecodingInfo.

Media Capabilities has been enabled long enough and has been a standard
feature, it's no need to guard it by the preference anymore.

Depends on D212321

Depends on D212323

Attachment #9405099 - Attachment description: WIP: Bug 1898344 - part1 : implement MediaCapabilitiesKeySystemConfiguration and KeySystemTrackConfiguration. → Bug 1898344 - part1 : implement MediaCapabilitiesKeySystemConfiguration and KeySystemTrackConfiguration.
Attachment #9405100 - Attachment description: WIP: Bug 1898344 - part2 : split the creation of MediaCapabilitiesInfo into another function and reject the promise properly when error occurs. → Bug 1898344 - part2 : split the creation of MediaCapabilitiesInfo into another function and reject the promise properly when error occurs.
Attachment #9405101 - Attachment description: WIP: Bug 1898344 - part3 : remove the pref 'media.media-capabilities.enable'. → Bug 1898344 - part3 : remove the pref 'media.media-capabilities.enable'.
Attachment #9405102 - Attachment description: WIP: Bug 1898344 - part4 : make MediaCapabilitiesInfo a dictionary to match the spec. → Bug 1898344 - part4 : make MediaCapabilitiesInfo a dictionary to match the spec.
Attachment #9405103 - Attachment description: WIP: Bug 1898344 - part5 : implement MediaCapabilitiesDecodingInfo. → Bug 1898344 - part5 : implement MediaCapabilitiesDecodingInfo.
Attachment #9405104 - Attachment description: WIP: Bug 1898344 - part6 : use request's methods to resolve/reject promise. → Bug 1898344 - part6 : use request's methods to resolve/reject promise.
Attachment #9405105 - Attachment description: WIP: Bug 1898344 - part7 : implement a method to return a new media key system access via MozPromise. → Bug 1898344 - part7 : implement a method to return a new media key system access via MozPromise.
Attachment #9405106 - Attachment description: WIP: Bug 1898344 - part8 : create a media key system access for supported MediaCapabilitiesKeySystemConfiguration. → Bug 1898344 - part8 : create a media key system access for supported MediaCapabilitiesKeySystemConfiguration.

Depends on D212327

These prefs are removed:

  • media.media-capabilities.enabled
Blocks: old-prefs
Keywords: dev-doc-needed
Pushed by alwu@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/c130ec4b7353 part1 : implement MediaCapabilitiesKeySystemConfiguration and KeySystemTrackConfiguration. r=media-playback-reviewers,webidl,smaug,padenot https://hg.mozilla.org/integration/autoland/rev/9e435366c2b7 part2 : split the creation of MediaCapabilitiesInfo into another function and reject the promise properly when error occurs. r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/c2f20930bfed part3 : remove the pref 'media.media-capabilities.enable'. r=media-playback-reviewers,webidl,saschanaz,padenot https://hg.mozilla.org/integration/autoland/rev/7c59df042312 part4 : make MediaCapabilitiesInfo a dictionary to match the spec. r=media-playback-reviewers,webidl,smaug,padenot https://hg.mozilla.org/integration/autoland/rev/391230484cf6 part5 : implement MediaCapabilitiesDecodingInfo. r=media-playback-reviewers,webidl,smaug,padenot https://hg.mozilla.org/integration/autoland/rev/c83e42f9270b part6 : use request's methods to resolve/reject promise. r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/30097a228b33 part7 : implement a method to return a new media key system access via MozPromise. r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/990f497dd1ac part8 : create a media key system access for supported MediaCapabilitiesKeySystemConfiguration. r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/7aa44b36fdf3 part9 : enable wpt tests. r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/4269549304d0 part10 : ensure the type of the decoding config is the same as the type of key system config. r=media-playback-reviewers,padenot

Backed out for causing reftest crashes on crashtests/1608286.html and mochitest failures on test_interfaces.html and test_serviceworker_interfaces.html

[task 2024-06-10T18:52:43.749Z] 18:52:43     INFO - REFTEST TEST-START | dom/media/test/crashtests/1608286.html
[task 2024-06-10T18:52:43.750Z] 18:52:43     INFO - REFTEST TEST-LOAD | file:///D:/task_171804370111686/build/tests/reftest/tests/dom/media/test/crashtests/1608286.html | 768 / 4037 (19%)
[task 2024-06-10T18:52:43.790Z] 18:52:43     INFO - [Parent 1976, Main Thread] WARNING: NS_ENSURE_TRUE(she && she->mInfo->mSharedState.Get()) failed: file /builds/worker/checkouts/gecko/docshell/shistory/SessionHistoryEntry.cpp:1159
[task 2024-06-10T18:52:44.042Z] 18:52:44     INFO - [Parent 1976, IPC I/O Parent] WARNING: Call to Send() failed: file /builds/worker/checkouts/gecko/ipc/glue/NodeChannel.cpp:199
[task 2024-06-10T18:52:44.042Z] 18:52:44     INFO - [Parent 1976, IPC I/O Parent] WARNING: [1.1]: Dropping message '<null>'; no connection to unknown peer 5D5795066035C96A.466C94BEE58A226E: file /builds/worker/checkouts/gecko/ipc/glue/NodeController.cpp:365
[task 2024-06-10T18:52:44.044Z] 18:52:44     INFO - [Parent 1976, IPC I/O Parent] WARNING: [1.1]: Rejecting introduction request from 'C329E33867EBD65C.F6D545CD58E64EDA' for unknown peer '5D5795066035C96A.466C94BEE58A226E': file /builds/worker/checkouts/gecko/ipc/glue/NodeController.cpp:700
[task 2024-06-10T18:52:44.045Z] 18:52:44     INFO - [Parent 1976, Main Thread] WARNING: IPC Connection Error: [Parent][PContentParent] Send(msgname=PContent::Reply_DiscardBrowsingContext) Channel error: cannot send/recv: file /builds/worker/checkouts/gecko/ipc/glue/MessageChannel.cpp:1943
[task 2024-06-10T18:52:44.046Z] 18:52:44     INFO - [Parent 1976, IPC I/O Parent] WARNING: [1.1]: Rejecting introduction request from 'A5C17C53E4FBF87.42C908B9DDCCCD92' for unknown peer '5D5795066035C96A.466C94BEE58A226E': file /builds/worker/checkouts/gecko/ipc/glue/NodeController.cpp:700
[task 2024-06-10T18:52:44.047Z] 18:52:44     INFO - [RDD 2540, IPC I/O Child] WARNING: [C329E33867EBD65C.F6D545CD58E64EDA]: Could not be introduced to peer 5D5795066035C96A.466C94BEE58A226E: file /builds/worker/checkouts/gecko/ipc/glue/NodeController.cpp:629
[task 2024-06-10T18:52:44.047Z] 18:52:44     INFO - [Utility 8784, IPC I/O Child] WARNING: [A5C17C53E4FBF87.42C908B9DDCCCD92]: Could not be introduced to peer 5D5795066035C96A.466C94BEE58A226E: file /builds/worker/checkouts/gecko/ipc/glue/NodeController.cpp:629
[task 2024-06-10T18:52:44.049Z] 18:52:44     INFO - [Parent 1976, ProcessHangMon] WARNING: IPC message 'PProcessHangMonitor::Msg_RequestContentJSInterrupt' discarded: actor cannot send: file /builds/worker/checkouts/gecko/ipc/glue/ProtocolUtils.cpp:551
[task 2024-06-10T18:52:44.050Z] 18:52:44     INFO - [Parent 1976, Main Thread] WARNING: IPC message 'PBrowser::Msg_UpdateNativeWindowHandle' discarded: actor cannot send: file /builds/worker/checkouts/gecko/ipc/glue/ProtocolUtils.cpp:551
[task 2024-06-10T18:52:44.051Z] 18:52:44     INFO - [Parent 1976, Main Thread] WARNING: IPC message 'PBrowser::Msg_Destroy' discarded: actor cannot send: file /builds/worker/checkouts/gecko/ipc/glue/ProtocolUtils.cpp:551
[task 2024-06-10T18:52:44.051Z] 18:52:44     INFO - [Parent 1976, Main Thread] WARNING: No build ID mismatch: file /builds/worker/checkouts/gecko/dom/base/nsFrameLoader.cpp:3743
[task 2024-06-10T18:52:44.052Z] 18:52:44    ERROR - A content process crashed and MOZ_CRASHREPORTER_SHUTDOWN is set, shutting down
[task 2024-06-10T18:52:44.611Z] 18:52:44     INFO - 1718045564610	Marionette	TRACE	Received observer notification quit-application
[task 2024-06-10T18:52:44.612Z] 18:52:44     INFO - 1718045564611	Marionette	INFO	Stopped listening on port 2828
[task 2024-06-10T18:52:44.613Z] 18:52:44     INFO - 1718045564612	Marionette	DEBUG	Marionette stopped listening
[task 2024-06-10T18:52:44.652Z] 18:52:44     INFO - [GPU 2356, Compositor] WARNING: Possibly dropping task posted to updater thread: file /builds/worker/checkouts/gecko/gfx/layers/apz/src/APZUpdater.cpp:395
[task 2024-06-10T18:52:44.663Z] 18:52:44     INFO - [Parent 1976, Main Thread] WARNING: NS_ENSURE_TRUE(windowGlobalParent) failed: file /builds/worker/checkouts/gecko/toolkit/components/antitracking/bouncetrackingprotection/BounceTrackingState.cpp:433
[task 2024-06-10T18:52:44.666Z] 18:52:44     INFO - [GPU 2356, Compositor] WARNING: Possibly dropping task posted to updater thread: file /builds/worker/checkouts/gecko/gfx/layers/apz/src/APZUpdater.cpp:395
[task 2024-06-10T18:52:44.673Z] 18:52:44     INFO - [GPU 2356, Compositor] WARNING: Possibly dropping task posted to updater thread: file /builds/worker/checkouts/gecko/gfx/layers/apz/src/APZUpdater.cpp:395
[task 2024-06-10T18:52:44.686Z] 18:52:44     INFO - [GPU 2356, Compositor] WARNING: Possibly dropping task posted to updater thread: file /builds/worker/checkouts/gecko/gfx/layers/apz/src/APZUpdater.cpp:395
[task 2024-06-10T18:52:44.745Z] 18:52:44     INFO - [Parent 1976, Socket Thread] WARNING: cannot post event if not initialized: file /builds/worker/checkouts/gecko/netwerk/protocol/http/nsHttpConnectionMgr.cpp:240
[task 2024-06-10T18:52:44.753Z] 18:52:44     INFO - [Parent 1976, Socket Thread] WARNING: cannot post event if not initialized: file /builds/worker/checkouts/gecko/netwerk/protocol/http/nsHttpConnectionMgr.cpp:240
[task 2024-06-10T18:52:44.753Z] 18:52:44     INFO - [Parent 1976, Socket Thread] WARNING: cannot post event if not initialized: file /builds/worker/checkouts/gecko/netwerk/protocol/http/nsHttpConnectionMgr.cpp:240
[task 2024-06-10T18:52:44.754Z] 18:52:44     INFO - [Parent 1976, Socket Thread] WARNING: cannot post event if not initialized: file /builds/worker/checkouts/gecko/netwerk/protocol/http/nsHttpConnectionMgr.cpp:240
[task 2024-06-10T18:52:44.755Z] 18:52:44     INFO - [Parent 1976, Socket Thread] WARNING: cannot post event if not initialized: file /builds/worker/checkouts/gecko/netwerk/protocol/http/nsHttpConnectionMgr.cpp:240
[task 2024-06-10T18:52:44.755Z] 18:52:44     INFO - !!! error running onStopped callback: TypeError: callback is not a function
[task 2024-06-10T18:52:44.756Z] 18:52:44     INFO - [Parent 1976, Socket Thread] WARNING: cannot post event if not initialized: file /builds/worker/checkouts/gecko/netwerk/protocol/http/nsHttpConnectionMgr.cpp:240
[task 2024-06-10T18:52:44.756Z] 18:52:44     INFO - [Parent 1976, Socket Thread] WARNING: cannot post event if not initialized: file /builds/worker/checkouts/gecko/netwerk/protocol/http/nsHttpConnectionMgr.cpp:240
[task 2024-06-10T18:52:44.757Z] 18:52:44     INFO - [Parent 1976, Socket Thread] WARNING: cannot post event if not initialized: file /builds/worker/checkouts/gecko/netwerk/protocol/http/nsHttpConnectionMgr.cpp:240
[task 2024-06-10T18:52:44.974Z] 18:52:44     INFO - [Parent 1976, Main Thread] WARNING: BlockShutdown: Init failed: 'NS_FAILED(rv)', file /builds/worker/checkouts/gecko/toolkit/components/antitracking/bouncetrackingprotection/BounceTrackingProtectionStorage.cpp:304
[task 2024-06-10T18:52:45.058Z] 18:52:45     INFO - [Parent 1976, IPDL Background] WARNING: quota manager shutdown step: '0.000000s: startCrashBrowserTimer', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2231
[task 2024-06-10T18:52:45.058Z] 18:52:45     INFO - [Parent 1976, IPDL Background] WARNING: quota manager shutdown step: '0.000000s: initiateShutdownWorkThreads', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2231
[task 2024-06-10T18:52:45.058Z] 18:52:45     INFO - [Parent 1976, IPDL Background] WARNING: idb: '0.000000s: starting', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2231
[task 2024-06-10T18:52:45.058Z] 18:52:45     INFO - [Parent 1976, IPDL Background] WARNING: cache: '0.000000s: starting', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2231
[task 2024-06-10T18:52:45.058Z] 18:52:45     INFO - [Parent 1976, IPDL Background] WARNING: sdb: '0.000000s: starting', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2231
[task 2024-06-10T18:52:45.058Z] 18:52:45     INFO - [Parent 1976, IPDL Background] WARNING: fs: '0.000000s: starting', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2231
[task 2024-06-10T18:52:45.063Z] 18:52:45     INFO - [Parent 1976, IPDL Background] WARNING: ls: '0.000000s: starting', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2231
[task 2024-06-10T18:52:45.064Z] 18:52:45     INFO - [Parent 1976, IPDL Background] WARNING: quota manager shutdown step: '0.000000s: startKillActorsTimer', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2231
[task 2024-06-10T18:52:45.064Z] 18:52:45     INFO - [Parent 1976, IPDL Background] WARNING: idb: '0.000000s: Live database entry removed', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2231
[task 2024-06-10T18:52:45.065Z] 18:52:45     INFO - [Parent 1976, IPDL Background] WARNING: idb: '0.000000s: gLiveDatabaseHashtable entry removed', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2231
[task 2024-06-10T18:52:45.065Z] 18:52:45     INFO - [Parent 1976, IPDL Background] WARNING: idb: '0.015000s: Live database entry removed', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2231
[task 2024-06-10T18:52:45.066Z] 18:52:45     INFO - [Parent 1976, IPDL Background] WARNING: idb: '0.015000s: Live database entry removed', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2231
[task 2024-06-10T18:52:45.067Z] 18:52:45     INFO - [Parent 1976, IPDL Background] WARNING: idb: '0.015000s: gLiveDatabaseHashtable entry removed', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2231
[task 2024-06-10T18:52:45.068Z] 18:52:45     INFO - [Parent 1976, QuotaManager IO] WARNING: quota manager shutdown step: '0.015000s: ShutdownStorageOp::DoDirectoryWork -> ShutdownStorageInternal.', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2231
[task 2024-06-10T18:52:45.069Z] 18:52:45     INFO - [Parent 1976, IPDL Background] WARNING: quota manager shutdown step: '0.031000s: stopKillActorsTimer', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2231
[task 2024-06-10T18:52:45.069Z] 18:52:45     INFO - [Parent 1976, IPDL Background] WARNING: quota manager shutdown step: '0.031000s: shutdownAndJoinWorkThreads', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2231
[task 2024-06-10T18:52:45.070Z] 18:52:45     INFO - [Parent 1976, IPDL Background] WARNING: idb: '0.031000s: completed', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2231
<...>
[task 2024-06-10T18:52:45.939Z] 18:52:45     INFO - [Parent 1976, Main Thread] WARNING: NS_ENSURE_TRUE(!!svc) failed: file /builds/worker/checkouts/gecko/dom/file/uri/BlobURLProtocolHandler.cpp:507
[task 2024-06-10T18:52:45.939Z] 18:52:45     INFO - [Parent 1976, Main Thread] WARNING: NS_ENSURE_SUCCESS_VOID(rv) failed with result 0x8000FFFF (NS_ERROR_UNEXPECTED): file /builds/worker/checkouts/gecko/dom/file/uri/BlobURLProtocolHandler.cpp:407
[task 2024-06-10T18:52:45.940Z] 18:52:45     INFO - [Parent 1976, Main Thread] WARNING: NS_ENSURE_TRUE(!!svc) failed: file /builds/worker/checkouts/gecko/dom/file/uri/BlobURLProtocolHandler.cpp:507
[task 2024-06-10T18:52:46.060Z] 18:52:46     INFO - REFTEST INFO | Copy/paste: D:/task_171804370111686/fetches\minidump-stackwalk\minidump-stackwalk.exe --symbols-url=https://symbols.mozilla.org/ --cyborg=C:\Users\task_171804370111686\AppData\Local\Temp\tmpmcw5ks0n\32d9f110-eeaf-4208-bdb4-f31bbbd87617.trace C:\Users\task_171804370111686\AppData\Local\Temp\tmpannzkehw.mozrunner\minidumps\32d9f110-eeaf-4208-bdb4-f31bbbd87617.dmp D:\task_171804370111686\build\symbols
[task 2024-06-10T18:52:57.301Z] 18:52:57     INFO - REFTEST INFO | Saved minidump as D:\task_171804370111686\build\blobber_upload_dir\32d9f110-eeaf-4208-bdb4-f31bbbd87617.dmp
[task 2024-06-10T18:52:57.317Z] 18:52:57     INFO - REFTEST INFO | Saved app info as D:\task_171804370111686\build\blobber_upload_dir\32d9f110-eeaf-4208-bdb4-f31bbbd87617.extra
[task 2024-06-10T18:52:57.692Z] 18:52:57     INFO - REFTEST PROCESS-CRASH | application crashed [@ JS::Heap<JSObject *>::exposeToActiveJS] | dom/media/test/crashtests/1608286.html 
[task 2024-06-10T18:52:57.692Z] 18:52:57     INFO - Process type: content
[task 2024-06-10T18:52:57.702Z] 18:52:57     INFO - Process pid: 6296
[task 2024-06-10T18:52:57.702Z] 18:52:57     INFO - Crash dump filename: C:\Users\task_171804370111686\AppData\Local\Temp\tmpannzkehw.mozrunner\minidumps\32d9f110-eeaf-4208-bdb4-f31bbbd87617.dmp
[task 2024-06-10T18:52:57.702Z] 18:52:57     INFO - Operating system: Windows NT
[task 2024-06-10T18:52:57.702Z] 18:52:57     INFO -                   10.0.22621
[task 2024-06-10T18:52:57.702Z] 18:52:57     INFO - CPU: x86
[task 2024-06-10T18:52:57.702Z] 18:52:57     INFO -      GenuineIntel family 6 model 106 stepping 6
[task 2024-06-10T18:52:57.702Z] 18:52:57     INFO -      8 CPUs
[task 2024-06-10T18:52:57.702Z] 18:52:57     INFO - 
[task 2024-06-10T18:52:57.702Z] 18:52:57     INFO - Crash reason:  EXCEPTION_ACCESS_VIOLATION_READ
[task 2024-06-10T18:52:57.703Z] 18:52:57     INFO - Crash address: 0x00000014
[task 2024-06-10T18:52:57.703Z] 18:52:57     INFO - Process uptime: 16 seconds
[task 2024-06-10T18:52:57.703Z] 18:52:57     INFO - 
[task 2024-06-10T18:52:57.703Z] 18:52:57     INFO - Thread 0 MainThread (crashed)
[task 2024-06-10T18:52:57.703Z] 18:52:57     INFO -  0  xul.dll!JS::Heap<JSObject *>::exposeToActiveJS() const [RootingAPI.h:4269549304d061879885d910f13e6bbb334feff3 : 348]
[task 2024-06-10T18:52:57.703Z] 18:52:57     INFO -     Found by: inlining
[task 2024-06-10T18:52:57.703Z] 18:52:57     INFO -  1  xul.dll!JS::Heap<JSObject *>::get() const [RootingAPI.h:4269549304d061879885d910f13e6bbb334feff3 : 351]
[task 2024-06-10T18:52:57.703Z] 18:52:57     INFO -     Found by: inlining
[task 2024-06-10T18:52:57.703Z] 18:52:57     INFO -  2  xul.dll!JS::Heap<JSObject *>::operator JSObject *const &() const [RootingAPI.h:4269549304d061879885d910f13e6bbb334feff3 : 343]
[task 2024-06-10T18:52:57.703Z] 18:52:57     INFO -     Found by: inlining
[task 2024-06-10T18:52:57.703Z] 18:52:57     INFO -  3  xul.dll!mozilla::dom::Promise::PromiseObj() const [Promise.h:4269549304d061879885d910f13e6bbb334feff3 : 327]
[task 2024-06-10T18:52:57.703Z] 18:52:57     INFO -     Found by: inlining
[task 2024-06-10T18:52:57.703Z] 18:52:57     INFO -  4  xul.dll!mozilla::dom::ToJSValue(JSContext*, mozilla::dom::Promise&, JS::MutableHandle<JS::Value>) [ToJSValue.cpp:4269549304d061879885d910f13e6bbb334feff3 : 64 + 0x0]
[task 2024-06-10T18:52:57.703Z] 18:52:57     INFO -      eip = 0x67f7f7bd    esp = 0x0083ce70    ebp = 0x0083ce8c    ebx = 0x0083d200
[task 2024-06-10T18:52:57.703Z] 18:52:57     INFO -      esi = 0x0a4c80b8    edi = 0x00000000    eax = 0x1c2fbe90    ecx = 0x04c435c0
[task 2024-06-10T18:52:57.703Z] 18:52:57     INFO -      edx = 0x00000000 eflags = 0x00010206
[task 2024-06-10T18:52:57.703Z] 18:52:57     INFO -     Found by: given as instruction pointer in context
[task 2024-06-10T18:52:57.703Z] 18:52:57     INFO -  5  xul.dll!mozilla::dom::ToJSValue(JSContext*, RefPtr<mozilla::dom::Promise> const&, JS::MutableHandle<JS::Value>) [ToJSValue.h:4269549304d061879885d910f13e6bbb334feff3 : 268]
[task 2024-06-10T18:52:57.704Z] 18:52:57     INFO -     Found by: inlining
[task 2024-06-10T18:52:57.704Z] 18:52:57     INFO -  6  xul.dll!mozilla::dom::Navigator_Binding::requestMediaKeySystemAccess(JSContext*, JS::Handle<JSObject *>, void*, JSJitMethodCallArgs const&) [NavigatorBinding.cpp: : 2088]
[task 2024-06-10T18:52:57.704Z] 18:52:57     INFO -     Found by: inlining
[task 2024-06-10T18:52:57.704Z] 18:52:57     INFO -  7  xul.dll!mozilla::dom::Navigator_Binding::requestMediaKeySystemAccess_promiseWrapper(JSContext*, JS::Handle<JSObject *>, void*, JSJitMethodCallArgs const&) [NavigatorBinding.cpp: : 2097 + 0xd4]
[task 2024-06-10T18:52:57.704Z] 18:52:57     INFO -      eip = 0x67413d9d    esp = 0x0083ce94    ebp = 0x0083d2b8    ebx = 0x0083d200
[task 2024-06-10T18:52:57.704Z] 18:52:57     INFO -      esi = 0x00000000    edi = 0x0083d2d8
[task 2024-06-10T18:52:57.704Z] 18:52:57     INFO -     Found by: call frame info
[task 2024-06-10T18:52:57.718Z] 18:52:57     INFO - 78  kernel32.dll!BaseThreadInitThunk + 0x18
[task 2024-06-10T18:52:57.718Z] 18:52:57     INFO -      eip = 0x76a97ba9    esp = 0x0083f790    ebp = 0x0083f798    ebx = 0x00485000
[task 2024-06-10T18:52:57.718Z] 18:52:57     INFO -      esi = 0x04c23410    edi = 0x04c24030
[task 2024-06-10T18:52:57.718Z] 18:52:57     INFO -     Found by: call frame info
[task 2024-06-10T18:52:57.718Z] 18:52:57     INFO - 79  ntdll.dll!__RtlUserThreadStart + 0x2a
[task 2024-06-10T18:52:57.718Z] 18:52:57     INFO -      eip = 0x779abe3b    esp = 0x0083f7a0    ebp = 0x0083f7f0    ebx = 0x00485000
[task 2024-06-10T18:52:57.718Z] 18:52:57     INFO -      esi = 0x04c23410    edi = 0x04c24030
[task 2024-06-10T18:52:57.718Z] 18:52:57     INFO -     Found by: call frame info
[task 2024-06-10T18:52:57.719Z] 18:52:57     INFO - 80  ntdll.dll!_RtlUserThreadStart + 0x1a
[task 2024-06-10T18:52:57.719Z] 18:52:57     INFO -      eip = 0x779abdbf    esp = 0x0083f7f8    ebp = 0x0083f800    ebx = 0x00485000
[task 2024-06-10T18:52:57.719Z] 18:52:57     INFO -      esi = 0x04c23410    edi = 0x04c24030
[task 2024-06-10T18:52:57.719Z] 18:52:57     INFO -     Found by: call frame info
[task 2024-06-10T18:52:57.719Z] 18:52:57     INFO - 
[task 2024-06-10T18:52:57.719Z] 18:52:57     INFO - Thread 1 IPC I/O Child
Flags: needinfo?(alwu)
Flags: needinfo?(alwu)
Pushed by alwu@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/9b67ea28d52c part1 : implement MediaCapabilitiesKeySystemConfiguration and KeySystemTrackConfiguration. r=media-playback-reviewers,webidl,smaug,padenot https://hg.mozilla.org/integration/autoland/rev/e1eeb9e2fd5a part2 : split the creation of MediaCapabilitiesInfo into another function and reject the promise properly when error occurs. r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/c24cc984dd99 part3 : remove the pref 'media.media-capabilities.enable'. r=media-playback-reviewers,webidl,saschanaz,padenot https://hg.mozilla.org/integration/autoland/rev/1b862ff20c1c part4 : make MediaCapabilitiesInfo a dictionary to match the spec. r=media-playback-reviewers,webidl,smaug,padenot https://hg.mozilla.org/integration/autoland/rev/13d2d84bb7d6 part5 : implement MediaCapabilitiesDecodingInfo. r=media-playback-reviewers,webidl,smaug,padenot https://hg.mozilla.org/integration/autoland/rev/635ebc6011e1 part6 : use request's methods to resolve/reject promise. r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/4529b9ce9e7d part7 : implement a method to return a new media key system access via MozPromise. r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/753750b05d9f part8 : create a media key system access for supported MediaCapabilitiesKeySystemConfiguration. r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/417d30196aa3 part9 : enable wpt tests. r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/61461f1a7f18 part10 : ensure the type of the decoding config is the same as the type of key system config. r=media-playback-reviewers,padenot
Blocks: 1689560
Blocks: 1902120

:alwu could you consider nominating this for a release note? (Process info)
We could include it in the nightly release notes.

Flags: needinfo?(alwu)

Release Note Request (optional, but appreciated)
[Why is this notable]: Adding new feature for web developers
[Affects Firefox for Android]: Yes
[Suggested wording]: Support querying encryption key system config in mediaCapabilities.decodingInfo() API
[Links (documentation, blog post, etc)]:
Spec https://w3c.github.io/media-capabilities/#mediacapabilitieskeysystemconfiguration
Explainer : https://github.com/w3c/media-capabilities/blob/main/explainer.md#encryption

relnote-firefox: --- → ?
Flags: needinfo?(alwu)

Thanks, added to the Fx129 nightly release notes, please allow 30 minutes for the site to update.
Keeping the relnote-firefox flag as ? to keep it on the radar for inclusion in the final Fx129 release notes

FF129 MDN docs work can be tracked in https://github.com/mdn/content/issues/34696

My understanding is that this updates MediaCapabilities.decodingInfo() with an additional property added to the configuration argument object called keySystemConfiguration - which defines config for encrypted media, and which can be used in a secure context in the window thread only. It also causes the returned object to have a new property keySystemAccess (a MediaKeySystemAccess that can be used for decoding the media.
About right?

The spec says the returned object should also include a property configuration that contains the original configuration passed in - that does not appear to be in the returned object on FF right?

The question I have is whether anyone else has implemented this? It looks like Chrome might have a precursor version in Chrome 80 based on:

The examples show the configuration property has keySystem and a robustness parameter. Do you know if they are updating to match the new spec. What about Safari?

Flags: needinfo?(alwu)

(In reply to Hamish Willee from comment #20)

FF129 MDN docs work can be tracked in https://github.com/mdn/content/issues/34696

My understanding is that this updates MediaCapabilities.decodingInfo() with an additional property added to the configuration argument object called keySystemConfiguration - which defines config for encrypted media, and which can be used in a secure context in the window thread only. It also causes the returned object to have a new property keySystemAccess (a MediaKeySystemAccess that can be used for decoding the media.
About right?

Yes.

The spec says the returned object should also include a property configuration that contains the original configuration passed in - that does not appear to be in the returned object on FF right?

Yes, we haven't implemented that part, and so do other browser vendors.

The question I have is whether anyone else has implemented this? It looks like Chrome might have a precursor version in Chrome 80 based on:

The examples show the configuration property has keySystem and a robustness parameter. Do you know if they are updating to match the new spec. What about Safari?

Chromium-based browsers already support this feature as you know, and I haven't heard any news from Safari. Our and Chromium's implementation are the same, both of them matches the current spec.

Flags: needinfo?(alwu)

Thanks very much!

You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: