Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: a9b4b55ed533b19f20f750a2a0c1aff15fb7f7df
https://github.com/WebKit/WebKit/commit/a9b4b55ed533b19f20f750a2a0c1aff15fb7f7df
Author: Youenn Fablet <[email protected]>
Date: 2024-08-26 (Mon, 26 Aug 2024)
Changed paths:
A
LayoutTests/http/wpt/mediasession/setCaptureState-audio-category-expected.txt
A LayoutTests/http/wpt/mediasession/setCaptureState-audio-category.html
A LayoutTests/http/wpt/mediasession/setCaptureState-expected.txt
A LayoutTests/http/wpt/mediasession/setCaptureState.html
M LayoutTests/imported/w3c/web-platform-tests/interfaces/mediasession.idl
M
LayoutTests/imported/w3c/web-platform-tests/mediasession/idlharness.window-expected.txt
M LayoutTests/media/audio-session-category-expected.txt
M LayoutTests/media/audio-session-category.html
M LayoutTests/platform/glib/TestExpectations
M Source/WebCore/Modules/mediasession/MediaSession.cpp
M Source/WebCore/Modules/mediasession/MediaSession.h
M Source/WebCore/Modules/mediasession/MediaSession.idl
M Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp
M Source/WebCore/Modules/mediastream/UserMediaClient.h
M Source/WebCore/Modules/mediastream/UserMediaController.h
M Source/WebCore/dom/Document.cpp
M Source/WebCore/page/Page.cpp
M Source/WebCore/page/Page.h
M Source/WebCore/platform/audio/PlatformMediaSessionManager.h
M Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.mm
M Source/WebKit/UIProcess/API/C/WKPage.cpp
M Source/WebKit/UIProcess/API/C/WKPagePrivate.h
M Source/WebKit/UIProcess/WebPageProxy.cpp
M Source/WebKit/UIProcess/WebPageProxy.h
M Source/WebKit/UIProcess/WebPageProxy.messages.in
M Source/WebKit/WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp
M Source/WebKit/WebProcess/MediaStream/UserMediaPermissionRequestManager.h
M Source/WebKit/WebProcess/WebCoreSupport/WebUserMediaClient.cpp
M Source/WebKit/WebProcess/WebCoreSupport/WebUserMediaClient.h
M Source/WebKit/WebProcess/WebPage/WebPage.cpp
M Source/WebKit/WebProcess/WebPage/WebPage.h
M Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl
M Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp
M Tools/WebKitTestRunner/InjectedBundle/TestRunner.h
M Tools/WebKitTestRunner/TestController.cpp
M Tools/WebKitTestRunner/TestController.h
M Tools/WebKitTestRunner/TestInvocation.cpp
Log Message:
-----------
Implement MediaSession setCameraActive, setMicrophoneActive and
setScreenshareActive
rdar://132901228
https://bugs.webkit.org/show_bug.cgi?id=277421
Reviewed by Eric Carlson.
Implement these methods by sending IPC messages to UIProcess.
UIProcess will then always allow to mute capture.
But it will only allow to unmute capture if capture was previously muted by the
web page and not the UIProcess directly.
We update the computation of the audio session category to synchronously exit
of PlayAndRecord when all audio capture tracks are muted or ended.
This allows web applications to listen for mute events and know they can play
audio with an audio session category that will be set to MediaPlayback instead
of PlayAndRecord.
We update LayoutTests/media/audio-session-category.html accordingly.
*
LayoutTests/http/wpt/mediasession/setCaptureState-audio-category-expected.txt:
Added.
* LayoutTests/http/wpt/mediasession/setCaptureState-audio-category.html: Added.
* LayoutTests/http/wpt/mediasession/setCaptureState-expected.txt: Added.
* LayoutTests/http/wpt/mediasession/setCaptureState.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/interfaces/mediasession.idl:
*
LayoutTests/imported/w3c/web-platform-tests/mediasession/idlharness.window-expected.txt:
* LayoutTests/media/audio-session-category-expected.txt:
* LayoutTests/media/audio-session-category.html:
* LayoutTests/platform/glib/TestExpectations:
* Source/WebCore/Modules/mediasession/MediaSession.cpp:
(WebCore::MediaSession::updateCaptureState):
* Source/WebCore/Modules/mediasession/MediaSession.h:
(WebCore::MediaSession::setMicrophoneActive):
(WebCore::MediaSession::setCameraActive):
(WebCore::MediaSession::setScreenshareActive):
* Source/WebCore/Modules/mediasession/MediaSession.idl:
* Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp:
(WebCore::MediaStreamTrack::stopTrack):
(WebCore::MediaStreamTrack::trackMutedChanged):
* Source/WebCore/Modules/mediastream/UserMediaClient.h:
* Source/WebCore/Modules/mediastream/UserMediaController.h:
(WebCore::UserMediaController::updateCaptureState):
* Source/WebCore/dom/Document.cpp:
(WebCore::updateCaptureSourceToPageMutedState):
* Source/WebCore/page/Page.cpp:
(WebCore::toMediaProducerMutedStateFlags):
(WebCore::computeCaptureMutedState):
(WebCore::Page::updateCaptureState):
* Source/WebCore/page/Page.h:
* Source/WebCore/platform/audio/PlatformMediaSessionManager.h:
(WebCore::PlatformMediaSessionManager::audioCaptureSourceStateChanged):
* Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.mm:
(WebCore::MediaSessionManagerCocoa::updateSessionState):
* Source/WebKit/UIProcess/API/C/WKPage.cpp:
(WKPageSetMuted):
* Source/WebKit/UIProcess/API/C/WKPagePrivate.h:
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::requestUserMediaPermissionForFrame):
(WebKit::WebPageProxy::enumerateMediaDevicesForFrame):
(WebKit::WebPageProxy::beginMonitoringCaptureDevices):
(WebKit::WebPageProxy::validateCaptureStateUpdate):
(WebKit::WebPageProxy::syncIfMockDevicesEnabledChanged):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/WebPageProxy.messages.in:
* Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.cpp:
(WebKit::RemoteAudioSession::setCategory):
* Source/WebKit/WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
(WebKit::UserMediaPermissionRequestManager::updateCaptureState):
* Source/WebKit/WebProcess/MediaStream/UserMediaPermissionRequestManager.h:
* Source/WebKit/WebProcess/WebCoreSupport/WebUserMediaClient.cpp:
(WebKit::WebUserMediaClient::updateCaptureState):
* Source/WebKit/WebProcess/WebCoreSupport/WebUserMediaClient.h:
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updateCaptureState):
* Source/WebKit/WebProcess/WebPage/WebPage.h:
* Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
* Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::setCaptureState):
* Tools/WebKitTestRunner/InjectedBundle/TestRunner.h:
* Tools/WebKitTestRunner/TestController.cpp:
(WTR::TestController::setCaptureState):
* Tools/WebKitTestRunner/TestController.h:
* Tools/WebKitTestRunner/TestInvocation.cpp:
(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):
Canonical link: https://commits.webkit.org/282739@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes