Branch: refs/heads/webkitglib/2.52
Home: https://github.com/WebKit/WebKit
Commit: 7b1f7e96bd5cc0113c463b898338792ad4bc2d0e
https://github.com/WebKit/WebKit/commit/7b1f7e96bd5cc0113c463b898338792ad4bc2d0e
Author: Philippe Normand <[email protected]>
Date: 2026-06-07 (Sun, 07 Jun 2026)
Changed paths:
M Source/WebCore/platform/encryptedmedia/CDMProxy.h
Log Message:
-----------
Cherry-pick 313873@main (6a02a758cba4).
https://bugs.webkit.org/show_bug.cgi?id=315557
[EME] Increase key wait timeout to 10 seconds
https://bugs.webkit.org/show_bug.cgi?id=315557
Reviewed by Xabier Rodriguez-Calvar.
Seven seconds were not sufficient on some embedded device providing a
Widevine L3 CDM, so increase
the timeout to 10 seconds.
* Source/WebCore/platform/encryptedmedia/CDMProxy.h:
Canonical link: https://commits.webkit.org/313873@main
Canonical link: https://commits.webkit.org/305877.711@webkitglib/2.52
Commit: 159dc1a71fcdfc429916a42c8d405390fdec64c5
https://github.com/WebKit/WebKit/commit/159dc1a71fcdfc429916a42c8d405390fdec64c5
Author: Philippe Normand <[email protected]>
Date: 2026-06-07 (Sun, 07 Jun 2026)
Changed paths:
M Source/WebCore/platform/encryptedmedia/CDMProxy.h
M Source/WebCore/platform/graphics/gstreamer/eme/CDMProxyThunder.cpp
M Source/WebCore/platform/graphics/gstreamer/eme/CDMThunder.cpp
Log Message:
-----------
Cherry-pick 313876@main (4c8616689118).
https://bugs.webkit.org/show_bug.cgi?id=315558
[EME][OCDM] Prevent spurious keystatuses event when all keys expired
https://bugs.webkit.org/show_bug.cgi?id=315558
Reviewed by Xabier Rodriguez-Calvar.
If the keystore is empty, generating an empty status vector would trigger a
new keystatuses event
potentially overriding the previous one. Manually tested with a Widevine L3
CDM. This is sadly not
testable because there's no notion of key expiration in ClearKey.
Driving-by, improve GStreamer logging a bit in CDMProxyThunder.
* Source/WebCore/platform/encryptedmedia/CDMProxy.h:
(WebCore::KeyStoreBase::isEmpty const):
* Source/WebCore/platform/graphics/gstreamer/eme/CDMProxyThunder.cpp:
(WebCore::CDMProxyThunder::getDecryptionSession const):
* Source/WebCore/platform/graphics/gstreamer/eme/CDMThunder.cpp:
(WebCore::CDMInstanceSessionThunder::updateLicense):
Canonical link: https://commits.webkit.org/313876@main
Canonical link: https://commits.webkit.org/305877.712@webkitglib/2.52
Commit: 5cfea315b67d8d11fb403818fa441f10ebd6ef8b
https://github.com/WebKit/WebKit/commit/5cfea315b67d8d11fb403818fa441f10ebd6ef8b
Author: Philippe Normand <[email protected]>
Date: 2026-06-07 (Sun, 07 Jun 2026)
Changed paths:
M Source/WebCore/Modules/mediastream/gstreamer/GStreamerIceAgent.cpp
Log Message:
-----------
Cherry-pick 314018@main (8af0c2d1ea00).
https://bugs.webkit.org/show_bug.cgi?id=315571
[GStreamer][WebRTC][Rice] webrtc/datachannel/multiple-connections.html
still flaky crashing in Debug
https://bugs.webkit.org/show_bug.cgi?id=315571
Reviewed by Xabier Rodriguez-Calvar.
Don't attempt to notify incoming data after the ICE agent was closed.
* Source/WebCore/Modules/mediastream/gstreamer/GStreamerIceAgent.cpp:
(webkitGstWebRTCIceAgentIsClosed):
(webkitGstWebRTCIceAgentClose):
(webkitGstWebRTCIceAgentConfigure):
Canonical link: https://commits.webkit.org/314018@main
Canonical link: https://commits.webkit.org/305877.713@webkitglib/2.52
Commit: b20042980bf725104f10070c317b0588f99c6a91
https://github.com/WebKit/WebKit/commit/b20042980bf725104f10070c317b0588f99c6a91
Author: Simon Pena <[email protected]>
Date: 2026-06-07 (Sun, 07 Jun 2026)
Changed paths:
A
LayoutTests/media/encrypted-media/mock-getSupportedCapabilitiesForAudioVideoType-expected.txt
A
LayoutTests/media/encrypted-media/mock-getSupportedCapabilitiesForAudioVideoType.html
M Source/WebCore/platform/encryptedmedia/CDMPrivate.cpp
M Source/WebCore/platform/network/ParsedContentType.h
M Source/WebCore/testing/MockCDMFactory.cpp
M Source/WebCore/testing/MockCDMFactory.h
M Source/WebCore/testing/MockCDMFactory.idl
Log Message:
-----------
Cherry-pick 314032@main (932c6b3792a1).
https://bugs.webkit.org/show_bug.cgi?id=315667
[EME] getSupportedCapabilitiesForAudioVideoType can accidentally include
unsupported capabilities
https://bugs.webkit.org/show_bug.cgi?id=315667
Reviewed by Philippe Normand.
A local copy of accumulatedConfiguration is created where we append the
requestedCapability, then supportsConfigurationWithRestrictions is
queried. This means that requestedCapabilities cannot be accidentally
added when they aren't supported.
Tested on HBO Max, which was incorrectly serving HEVC content on a system
that didn't support it, and added a new test verifying this behaviour
after extending the MockCDMFactory to support this.
*
LayoutTests/media/encrypted-media/mock-getSupportedCapabilitiesForAudioVideoType-expected.txt:
Added.
*
LayoutTests/media/encrypted-media/mock-getSupportedCapabilitiesForAudioVideoType.html:
Added.
* Source/WebCore/platform/encryptedmedia/CDMPrivate.cpp:
(WebCore::CDMPrivate::getSupportedCapabilitiesForAudioVideoType):
* Source/WebCore/platform/network/ParsedContentType.h:
* Source/WebCore/testing/MockCDMFactory.cpp:
(WebCore::MockCDM::supportsConfigurationWithRestrictions const):
* Source/WebCore/testing/MockCDMFactory.h:
(WebCore::MockCDMFactory::setUnsupportedVideoCodecs):
* Source/WebCore/testing/MockCDMFactory.idl:
Canonical link: https://commits.webkit.org/314032@main
Canonical link: https://commits.webkit.org/305877.714@webkitglib/2.52
Commit: 5d7fb54ee9f17f81c3174b91fafc35dc775780f4
https://github.com/WebKit/WebKit/commit/5d7fb54ee9f17f81c3174b91fafc35dc775780f4
Author: Simon Pena <[email protected]>
Date: 2026-06-07 (Sun, 07 Jun 2026)
Changed paths:
A
LayoutTests/media/encrypted-media/mock-MediaKeySession-concurrent-close-expected.txt
A
LayoutTests/media/encrypted-media/mock-MediaKeySession-concurrent-close.html
M Source/WebCore/Modules/encryptedmedia/MediaKeySession.cpp
Log Message:
-----------
Cherry-pick 314350@main (eb9354ae86c5).
https://bugs.webkit.org/show_bug.cgi?id=315842
[EME] Protect MediaKeySession::sessionClosed from concurrent calls
https://bugs.webkit.org/show_bug.cgi?id=315842
Reviewed by Xabier Rodriguez-Calvar.
Add an additional m_closed check in MediaKeySession::sessionClosed to
account from multiple queued counts to close().
Test: media/encrypted-media/mock-MediaKeySession-concurrent-close.html
*
LayoutTests/media/encrypted-media/mock-MediaKeySession-concurrent-close-expected.txt:
Added.
*
LayoutTests/media/encrypted-media/mock-MediaKeySession-concurrent-close.html:
Added.
* Source/WebCore/Modules/encryptedmedia/MediaKeySession.cpp:
(WebCore::MediaKeySession::sessionClosed):
Canonical link: https://commits.webkit.org/314350@main
Canonical link: https://commits.webkit.org/305877.715@webkitglib/2.52
Commit: af8b8e7dc7305e8cbf255d338543ffab443d7a38
https://github.com/WebKit/WebKit/commit/af8b8e7dc7305e8cbf255d338543ffab443d7a38
Author: Simon Pena <[email protected]>
Date: 2026-06-07 (Sun, 07 Jun 2026)
Changed paths:
A
LayoutTests/media/encrypted-media/mock-MediaKeySession-backforwardcache-prune-crash-expected.txt
A
LayoutTests/media/encrypted-media/mock-MediaKeySession-backforwardcache-prune-crash.html
A
LayoutTests/media/encrypted-media/resources/mock-MediaKeySession-backforwardcache-prune-helper.html
M Source/WebCore/Modules/encryptedmedia/MediaKeySession.cpp
Log Message:
-----------
Cherry-pick 314352@main (b09929827ab5).
https://bugs.webkit.org/show_bug.cgi?id=315849
[EME] Crash pruning a back/forward-cached page that owns an open
MediaKeySession
https://bugs.webkit.org/show_bug.cgi?id=315849
Reviewed by Xabier Rodriguez-Calvar.
Invoking session.sessionClosed during document teardown can trigger an
assertion in a deferred promise (JSDOMPromiseDeferred --
!activeDOMObjectsAreSuspended() ||
scriptExecutionContext()->eventLoop().isSuspended()).
By queueing it, we can ensure the task is dropped if the event loop is
stopped.
Test:
media/encrypted-media/mock-MediaKeySession-backforwardcache-prune-crash.html
*
LayoutTests/media/encrypted-media/mock-MediaKeySession-backforwardcache-prune-crash-expected.txt:
Added.
*
LayoutTests/media/encrypted-media/mock-MediaKeySession-backforwardcache-prune-crash.html:
Added.
*
LayoutTests/media/encrypted-media/resources/mock-MediaKeySession-backforwardcache-prune-helper.html:
Added.
* Source/WebCore/Modules/encryptedmedia/MediaKeySession.cpp:
(WebCore::MediaKeySession::stop):
Canonical link: https://commits.webkit.org/314352@main
Canonical link: https://commits.webkit.org/305877.716@webkitglib/2.52
Commit: d007e5b4a9d952531f7229e143fb96fa7d2f61e7
https://github.com/WebKit/WebKit/commit/d007e5b4a9d952531f7229e143fb96fa7d2f61e7
Author: Philippe Normand <[email protected]>
Date: 2026-06-07 (Sun, 07 Jun 2026)
Changed paths:
M LayoutTests/platform/glib/TestExpectations
M Source/WebCore/Modules/mediastream/gstreamer/GStreamerMediaEndpoint.cpp
M Source/WebCore/Modules/mediastream/gstreamer/GStreamerMediaEndpoint.h
M
Source/WebCore/Modules/mediastream/gstreamer/GStreamerPeerConnectionBackend.cpp
M
Source/WebCore/Modules/mediastream/gstreamer/GStreamerPeerConnectionBackend.h
M Source/WebCore/Modules/mediastream/gstreamer/GStreamerRtpSenderBackend.cpp
M
Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingMediaSourceGStreamer.cpp
M
Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingMediaSourceGStreamer.h
Log Message:
-----------
Cherry-pick 314285@main (cf5066c74642).
https://bugs.webkit.org/show_bug.cgi?id=315917
[GStreamer][WebRTC] webrtc/getDisplayMedia-pc-resolution.html almost
consistently times out
https://bugs.webkit.org/show_bug.cgi?id=315917
Reviewed by Xabier Rodriguez-Calvar.
The timeout was happening in the penultimate sub-test that calls
replaceTrack before generating an
offer. In that situation the outgoing media track bin isn't fully linked
and doesn't have a
transceiver yet. The transceiver codec-preferences were not updated so the
attempt to link outgoing
sources in the end-point after creating the offer left an unlinked outgoing
media track bin, because
the msid SDP attribute wasn't matched properly.
The proposed fix is to iterate over the webrtcbin transceivers after the
replaceTrack call and
update a-msid attributes on their codec-preferences caps when appropriate.
* LayoutTests/platform/glib/TestExpectations:
* Source/WebCore/Modules/mediastream/gstreamer/GStreamerMediaEndpoint.cpp:
(WebCore::GStreamerMediaEndpoint::linkOutgoingSources):
(WebCore::GStreamerMediaEndpoint::trackWasReplaced):
* Source/WebCore/Modules/mediastream/gstreamer/GStreamerMediaEndpoint.h:
*
Source/WebCore/Modules/mediastream/gstreamer/GStreamerPeerConnectionBackend.cpp:
(WebCore::GStreamerPeerConnectionBackend::trackWasReplaced):
*
Source/WebCore/Modules/mediastream/gstreamer/GStreamerPeerConnectionBackend.h:
*
Source/WebCore/Modules/mediastream/gstreamer/GStreamerRtpSenderBackend.cpp:
(WebCore::GStreamerRtpSenderBackend::replaceTrack):
*
Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingMediaSourceGStreamer.cpp:
(WebCore::RealtimeOutgoingMediaSourceGStreamer::replaceTrack):
*
Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingMediaSourceGStreamer.h:
Canonical link: https://commits.webkit.org/314285@main
Canonical link: https://commits.webkit.org/305877.717@webkitglib/2.52
Commit: 52c54a667a6a59987b905bb976fc136b393c15ee
https://github.com/WebKit/WebKit/commit/52c54a667a6a59987b905bb976fc136b393c15ee
Author: Philippe Normand <[email protected]>
Date: 2026-06-07 (Sun, 07 Jun 2026)
Changed paths:
M
Source/WebCore/platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp
Log Message:
-----------
Cherry-pick 314283@main (1961e19bf3e5).
https://bugs.webkit.org/show_bug.cgi?id=315923
[GStreamer][WebRTC] Reported video source stats have incorrect
frames-per-second value
https://bugs.webkit.org/show_bug.cgi?id=315923
Reviewed by Xabier Rodriguez-Calvar.
The stats collector expects this caps field to be a double, not unsigned.
*
Source/WebCore/platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp:
Canonical link: https://commits.webkit.org/314283@main
Canonical link: https://commits.webkit.org/305877.718@webkitglib/2.52
Commit: 6786ce5aaaea54f8844509e02faa0836dc4bf3d5
https://github.com/WebKit/WebKit/commit/6786ce5aaaea54f8844509e02faa0836dc4bf3d5
Author: Philippe Normand <[email protected]>
Date: 2026-06-07 (Sun, 07 Jun 2026)
Changed paths:
M LayoutTests/platform/glib/TestExpectations
M
Source/WebCore/platform/mediastream/gstreamer/GStreamerIncomingTrackProcessor.h
Log Message:
-----------
Cherry-pick 314281@main (387b2d3ec9c2).
https://bugs.webkit.org/show_bug.cgi?id=315759
[GStreamer][WebRTC] webrtc/getDisplayMedia-pc-resolution.html is flaky
crashing
https://bugs.webkit.org/show_bug.cgi?id=315759
Reviewed by Xabier Rodriguez-Calvar.
Make sure the m_frameRate GStreamerIncomingTrackProcessor member variable
is initialized. This is a
prospective fix for a flaky crash I cannot reproduce, where the stats
collector would attempt to
create a -nan double to an IDLDouble.
* LayoutTests/platform/glib/TestExpectations:
*
Source/WebCore/platform/mediastream/gstreamer/GStreamerIncomingTrackProcessor.h:
Canonical link: https://commits.webkit.org/314281@main
Canonical link: https://commits.webkit.org/305877.719@webkitglib/2.52
Commit: 70aadedb63340708a0a66694a8864a2c22e3601a
https://github.com/WebKit/WebKit/commit/70aadedb63340708a0a66694a8864a2c22e3601a
Author: Philippe Normand <[email protected]>
Date: 2026-06-07 (Sun, 07 Jun 2026)
Changed paths:
M Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
Log Message:
-----------
Cherry-pick 314284@main (30cef1151ab3).
https://bugs.webkit.org/show_bug.cgi?id=315943
REGRESSION(313830@main): [GStreamer]
imported/w3c/web-platform-tests/media-source/mediasource-getvideoplaybackquality.html
fails
https://bugs.webkit.org/show_bug.cgi?id=315943
Reviewed by Xabier Rodriguez-Calvar.
Since that commit the video sink GRefPtr is cleared along with the
pipeline, so at EOS
updateVideoSinkStatistics() was returning false and no playback quality
metrics were reported
anymore. We now attempt to update the stats only if playback hasn't ended
yet.
*
Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::videoPlaybackQualityMetrics):
Canonical link: https://commits.webkit.org/314284@main
Canonical link: https://commits.webkit.org/305877.720@webkitglib/2.52
Commit: e182502ede3ab5fa25495d5c34157280f4276f8f
https://github.com/WebKit/WebKit/commit/e182502ede3ab5fa25495d5c34157280f4276f8f
Author: Simon Pena <[email protected]>
Date: 2026-06-07 (Sun, 07 Jun 2026)
Changed paths:
M Source/WebCore/Modules/encryptedmedia/MediaKeySession.cpp
Log Message:
-----------
Cherry-pick 314438@main (25e4e199bf08).
https://bugs.webkit.org/show_bug.cgi?id=316101
REGRESSION(314352@main): [EME] Deferring MediaKeySession teardown leaks the
CDM session into the next test
https://bugs.webkit.org/show_bug.cgi?id=316101
Reviewed by Xabier Rodriguez-Calvar.
This makes MediaKeySession teardown synchronous again, instead avoiding
the promise resolution when we are tearing down.
Tests clearkey-mp4-playback-destroy-persistent-license.https.html and
clearkey-mp4-playback-retrieve-persistent-license.https.html cover the
CDM session leaking scenario, while
mock-MediaKeySession-backforwardcache-prune-crash.html verifies that
the promise is not incorrectly resolved.
* Source/WebCore/Modules/encryptedmedia/MediaKeySession.cpp:
(WebCore::MediaKeySession::sessionClosed):
(WebCore::MediaKeySession::stop):
Canonical link: https://commits.webkit.org/314438@main
Canonical link: https://commits.webkit.org/305877.721@webkitglib/2.52
Commit: aec9d2ad958e716ab4bca4bf03007e6edac7323f
https://github.com/WebKit/WebKit/commit/aec9d2ad958e716ab4bca4bf03007e6edac7323f
Author: Przemyslaw Gorszkowski <[email protected]>
Date: 2026-06-07 (Sun, 07 Jun 2026)
Changed paths:
A
LayoutTests/fast/mediastream/captureStream/canvas-rvfc-metadata-expected.txt
A LayoutTests/fast/mediastream/captureStream/canvas-rvfc-metadata.html
M LayoutTests/platform/ios/TestExpectations
M LayoutTests/platform/mac/TestExpectations
M Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
Log Message:
-----------
Cherry-pick 314533@main (82c645da79b5).
https://bugs.webkit.org/show_bug.cgi?id=316190
[GStreamer] mediaTime from requestVideoFrameCallback is wrong in case of
captureCanvas as source
https://bugs.webkit.org/show_bug.cgi?id=316190
Reviewed by Philippe Normand.
Canvas capture frames have their PTS stamped with the absolute GStreamer
system clock time. Because the default GstSegment has start=0, calling
gst_segment_to_stream_time on such a buffer returns the raw clock value
(system uptime in seconds), not a stream-relative position.
To fix that and set the correct value of mediaTime in VideoFrameMetadata
provided by requestVideoFrameCallback, this change detects canvas frames
via their VideoFrameContentHint and uses currentTime() instead.
A new layout test fast/mediastream/captureStream/canvas-rvfc-metadata.html
validates the metadata fields returned by requestVideoFrameCallback for a
canvas captureStream, including that mediaTime is stream-relative and not
an absolute clock value.
Test: fast/mediastream/captureStream/canvas-rvfc-metadata.html
*
LayoutTests/fast/mediastream/captureStream/canvas-rvfc-metadata-expected.txt:
Added.
* LayoutTests/fast/mediastream/captureStream/canvas-rvfc-metadata.html:
Added.
*
Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::videoFrameMetadata):
Canonical link: https://commits.webkit.org/314533@main
Canonical link: https://commits.webkit.org/305877.722@webkitglib/2.52
Compare: https://github.com/WebKit/WebKit/compare/31deefad901e...aec9d2ad958e
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications