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

Reply via email to