[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