[webkit-changes] [WebKit/WebKit] a9b4b5: Implement MediaSession setCameraActive, setMicroph...
youennf
noreply at github.com
Mon Aug 26 08:59:42 PDT 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: a9b4b55ed533b19f20f750a2a0c1aff15fb7f7df
https://github.com/WebKit/WebKit/commit/a9b4b55ed533b19f20f750a2a0c1aff15fb7f7df
Author: Youenn Fablet <youenn at apple.com>
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
More information about the webkit-changes
mailing list