haikuwebkit/LayoutTests/fast/mediastream/media-stream-page-muted-exp...

67 lines
3.2 KiB
Plaintext
Raw Permalink Normal View History

[MediaStream] Host should be able to mute screen capture and camera/microphone independently https://bugs.webkit.org/show_bug.cgi?id=196555 <rdar://problem/47303865> Reviewed by Youenn Fablet. Source/WebCore: Test: fast/mediastream/media-stream-page-muted.html * Modules/mediastream/MediaStream.cpp: (WebCore::MediaStream::MediaStream): Call setCaptureTracksMuted to pass page muted state to tracks. (WebCore::MediaStream::startProducingData): Ditto. (WebCore::MediaStream::setCaptureTracksMuted): New. * Modules/mediastream/MediaStream.h: * Modules/mediastream/MediaStreamTrack.cpp: (WebCore::MediaStreamTrack::MediaStreamTrack): Call setMuted with page muted state. (WebCore::MediaStreamTrack::setMuted): Set muted according to page state and source type. (WebCore::MediaStreamTrack::pageMutedStateDidChange): Call setMuted. (WebCore::MediaStreamTrack::mediaState const): Update for new page state. * Modules/mediastream/MediaStreamTrack.h: * page/MediaProducer.h: Split capture muted state into two: camera/microphone and screen. * page/Page.h: (WebCore::Page::isMediaCaptureMuted const): Update for state changes. * platform/mediastream/MediaStreamPrivate.cpp: (WebCore::MediaStreamPrivate::setCaptureTracksMuted): Deleted. (WebCore::MediaStreamPrivate::hasCaptureVideoSource const): Deleted. * platform/mediastream/MediaStreamPrivate.h: * platform/mediastream/RealtimeMediaSource.cpp: (WebCore::RealtimeMediaSource::setMuted): Log state. (WebCore::RealtimeMediaSource::notifyMutedChange): Call notifyMutedObservers on the next runloop so events aren't dispatched synchronously. * testing/Internals.cpp: (WebCore::Internals::setPageMuted): Add new state. Source/WebKit: * UIProcess/API/C/WKPagePrivate.h: Add kWKMediaScreenCaptureMuted. * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _setPageMuted:]): (-[WKWebView _setMediaCaptureMuted:]): Deleted, it was unused. (-[WKWebView _muteMediaCapture]): Deleted, it was unused. * UIProcess/API/Cocoa/WKWebViewPrivate.h: * UIProcess/UserMediaPermissionRequestManagerProxy.cpp: (WebKit::UserMediaPermissionRequestManagerProxy::processUserMediaPermissionValidRequest): Fix a log comment typo. * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::setMediaStreamCaptureMuted): Use the new flag. (WebKit::WebPageProxy::activateMediaStreamCaptureInPage): Ditto. (WebKit::WebPageProxy::setMuted): Ditto. * UIProcess/WebPageProxy.h: (WebKit::WebPageProxy::isMediaStreamCaptureMuted const): Ditto. LayoutTests: * fast/mediastream/media-stream-page-muted-expected.txt: Added. * fast/mediastream/media-stream-page-muted.html: Added. * fast/mediastream/media-stream-track-interrupted.html: Read page muted state before interrupting capture track because the page state now changes immediately. * fast/mediastream/media-stream-track-muted.html: Ditto, for muting. Canonical link: https://commits.webkit.org/210889@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@243899 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-04-04 20:44:29 +00:00
*** Creating screen capture stream
PASS displayStream is an instance of Object
PASS displayStream.getTracks().length is 1
PASS displayStream.getVideoTracks().length is 1
PASS screenCaptureTrack.muted is false
*** Creating camera and microphone stream
PASS cameraStream is an instance of Object
PASS cameraStream.getTracks().length is 2
PASS microphoneCaptureTrack.muted is false
PASS cameraCaptureTrack.muted is false
*** Muting screen capture
EVENT: mute
PASS screenCaptureTrack.muted is true
PASS microphoneCaptureTrack.muted is false
PASS cameraCaptureTrack.muted is false
PASS window.internals.pageMediaState().includes(HasMutedDisplayCaptureDevice) became true
PASS window.internals.pageMediaState().includes(HasActiveDisplayCaptureDevice) became false
PASS window.internals.pageMediaState().includes(HasActiveAudioCaptureDevice) became true
PASS window.internals.pageMediaState().includes(HasMutedAudioCaptureDevice) became false
PASS window.internals.pageMediaState().includes(HasActiveAudioCaptureDevice) became true
PASS window.internals.pageMediaState().includes(HasMutedAudioCaptureDevice) became false
*** Muting camera and microphone
EVENT: mute
EVENT: mute
PASS screenCaptureTrack.muted is true
PASS microphoneCaptureTrack.muted is true
PASS cameraCaptureTrack.muted is true
PASS window.internals.pageMediaState().includes(HasMutedDisplayCaptureDevice) became true
PASS window.internals.pageMediaState().includes(HasActiveDisplayCaptureDevice) became false
PASS window.internals.pageMediaState().includes(HasMutedAudioCaptureDevice) became true
PASS window.internals.pageMediaState().includes(HasActiveAudioCaptureDevice) became false
PASS window.internals.pageMediaState().includes(HasMutedVideoCaptureDevice) became true
PASS window.internals.pageMediaState().includes(HasActiveVideoCaptureDevice) became false
*** Unmuting camera and microphone
EVENT: unmute
EVENT: unmute
PASS screenCaptureTrack.muted is true
PASS microphoneCaptureTrack.muted is false
PASS cameraCaptureTrack.muted is false
PASS window.internals.pageMediaState().includes(HasMutedDisplayCaptureDevice) became true
PASS window.internals.pageMediaState().includes(HasActiveDisplayCaptureDevice) became false
PASS window.internals.pageMediaState().includes(HasActiveAudioCaptureDevice) became true
PASS window.internals.pageMediaState().includes(HasMutedAudioCaptureDevice) became false
PASS window.internals.pageMediaState().includes(HasActiveAudioCaptureDevice) became true
PASS window.internals.pageMediaState().includes(HasMutedAudioCaptureDevice) became false
*** Unmuting screen capture
EVENT: unmute
PASS screenCaptureTrack.muted is false
PASS microphoneCaptureTrack.muted is false
PASS cameraCaptureTrack.muted is false
PASS window.internals.pageMediaState().includes(HasActiveDisplayCaptureDevice) became true
PASS window.internals.pageMediaState().includes(HasMutedDisplayCaptureDevice) became false
PASS window.internals.pageMediaState().includes(HasActiveAudioCaptureDevice) became true
PASS window.internals.pageMediaState().includes(HasMutedAudioCaptureDevice) became false
PASS window.internals.pageMediaState().includes(HasActiveAudioCaptureDevice) became true
PASS window.internals.pageMediaState().includes(HasMutedAudioCaptureDevice) became false
PASS successfullyParsed is true
TEST COMPLETE