haikuwebkit/LayoutTests/fast/mediastream/enumerate-speaker-expected.txt

5 lines
70 B
Plaintext
Raw Permalink Normal View History

enumerateDevices should expose audiooutput devices that are tied to an audio input device https://bugs.webkit.org/show_bug.cgi?id=215806 Reviewed by Eric Carlson. LayoutTests/imported/w3c: * web-platform-tests/mediacapture-streams/MediaStreamTrack-getSettings.https-expected.txt: * web-platform-tests/mediacapture-streams/MediaStreamTrack-getSettings.https.html: Source/WebCore: Add support for a speaker selection feature policy, as per https://w3c.github.io/mediacapture-output/#permissions-policy-integration. Add support for speaker mock devices and for listing speakers on MacOS in CoreAudioCaptureDeviceManager. Add support for groupId to group microphones and speakers for both mock audio manager and CoreAudioCaptureDeviceManager. For mock speakers, we add two audiooutput devices that are related to a microphone and one audiooutput that is not related to any microphone. Test: fast/mediastream/enumerate-speaker.html * Modules/mediastream/MediaDevices.cpp: (WebCore::MediaDevices::MediaDevices): (WebCore::checkSpeakerAccess): (WebCore::toMediaDeviceInfoKind): (WebCore::MediaDevices::refreshDevices): * Modules/mediastream/MediaDevices.h: * Modules/mediastream/MediaStreamTrack.cpp: (WebCore::sourceCaptureState): (WebCore::MediaStreamTrack::updateToPageMutedState): * html/FeaturePolicy.cpp: (WebCore::policyTypeName): (WebCore::FeaturePolicy::parse): (WebCore::FeaturePolicy::allows const): * html/FeaturePolicy.h: * page/Settings.yaml: * platform/mediastream/CaptureDevice.h: (WebCore::CaptureDevice::label const): (WebCore::CaptureDevice::setGroupId): * platform/mediastream/RealtimeMediaSourceCenter.cpp: (WebCore::RealtimeMediaSourceCenter::getMediaStreamDevices): * platform/mediastream/RealtimeMediaSourceFactory.h: * platform/mediastream/gstreamer/GStreamerAudioCaptureSource.cpp: (WebCore::GStreamerAudioCaptureSourceFactory::speakerDevices const): * platform/mediastream/ios/AVAudioSessionCaptureDeviceManager.h: * platform/mediastream/mac/CoreAudioCaptureDevice.cpp: (WebCore::CoreAudioCaptureDevice::create): (WebCore::CoreAudioCaptureDevice::CoreAudioCaptureDevice): (WebCore::CoreAudioCaptureDevice::relatedAudioDeviceIDs): * platform/mediastream/mac/CoreAudioCaptureDevice.h: * platform/mediastream/mac/CoreAudioCaptureDeviceManager.cpp: (WebCore::CoreAudioCaptureDeviceManager::captureDevices): (WebCore::deviceHasOutputStreams): (WebCore::getDefaultCaptureInputDevice): (WebCore::hasDevice): (WebCore::CoreAudioCaptureDeviceManager::refreshAudioCaptureDevices): * platform/mediastream/mac/CoreAudioCaptureDeviceManager.h: * platform/mediastream/mac/CoreAudioCaptureSource.cpp: (WebCore::CoreAudioCaptureSourceFactory::speakerDevices const): * platform/mediastream/mac/CoreAudioCaptureSource.h: * platform/mediastream/mac/DisplayCaptureManagerCocoa.cpp: (WebCore::DisplayCaptureManagerCocoa::captureDeviceWithPersistentID): * platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp: (WebCore::DisplayCaptureSourceCocoa::create): * platform/mock/MockMediaDevice.h: (WebCore::MockSpeakerProperties::encode const): (WebCore::MockSpeakerProperties::decode): (WebCore::MockMediaDevice::isSpeaker const): (WebCore::MockMediaDevice::captureDevice const): (WebCore::MockMediaDevice::type const): (WebCore::MockMediaDevice::speakerProperties const): (WebCore::MockMediaDevice::encode const): (WebCore::MockMediaDevice::decode): * platform/mock/MockRealtimeMediaSourceCenter.cpp: (WebCore::defaultDevices): (WebCore::deviceListForDevice): (WebCore::toCaptureDevice): (WebCore::createMockDevice): (WebCore::MockRealtimeMediaSourceCenter::setDevices): (WebCore::MockRealtimeMediaSourceCenter::addDevice): (WebCore::MockRealtimeMediaSourceCenter::captureDeviceWithPersistentID): (WebCore::MockRealtimeMediaSourceCenter::microphoneDevices): (WebCore::MockRealtimeMediaSourceCenter::speakerDevices): (WebCore::MockRealtimeMediaSourceCenter::videoDevices): * platform/mock/MockRealtimeMediaSourceCenter.h: Source/WebKit: Introduce an experimental flag (off by default) to cover speaker selection, including exposing speaker devices to web pages. Update UserMediaPermissionRequestManagerProxy::computeFilteredDeviceList to only expose speakers that are tied to a microphone that is exposed. This aligns with https://w3c.github.io/mediacapture-output/#privacy-obtaining-consent. * GPUProcess/GPUConnectionToWebProcess.cpp: * Shared/WebPreferences.yaml: * UIProcess/API/C/WKMockMediaDevice.cpp: (WKAddMockMediaDevice): * UIProcess/API/C/WKPreferences.cpp: (WKPreferencesSetExposeSpeakersEnabled): (WKPreferencesGetExposeSpeakersEnabled): * UIProcess/API/C/WKPreferencesRefPrivate.h: * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp: (WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints): * UIProcess/UserMediaPermissionRequestManagerProxy.cpp: (WebKit::isMicrophoneDevice): (WebKit::UserMediaPermissionRequestManagerProxy::computeFilteredDeviceList): * WebProcess/cocoa/RemoteRealtimeMediaSource.cpp: (WebKit::sourceTypeFromDeviceType): (WebKit::RemoteRealtimeMediaSource::RemoteRealtimeMediaSource): (WebKit::RemoteRealtimeMediaSource::~RemoteRealtimeMediaSource): * WebProcess/cocoa/UserMediaCaptureManager.h: Tools: Enable experimental flag. * WebKitTestRunner/TestController.cpp: (WTR::TestController::resetPreferencesToConsistentValues): LayoutTests: * fast/mediastream/enumerate-speaker-expected.txt: Added. * fast/mediastream/enumerate-speaker.html: Added. * fast/mediastream/get-user-media-device-id.html: * http/tests/media/media-stream/enumerate-devices-source-id.html: * http/tests/media/media-stream/enumerate-devices-iframe-allow-attribute-expected.txt: * http/tests/media/media-stream/enumerate-devices-iframe-allow-attribute.html: Rewrite test to use testharness and ensure order of the iframe tests so that console messages are ordered. * http/tests/media/media-stream/resources/enumerate-devices-iframe.html: Canonical link: https://commits.webkit.org/228635@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@266166 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-08-26 11:16:03 +00:00
PASS Before gum, no audiooutput is exposed
PASS audiooutput devices
enumerateDevices should expose audiooutput devices that are tied to an audio input device https://bugs.webkit.org/show_bug.cgi?id=215806 Reviewed by Eric Carlson. LayoutTests/imported/w3c: * web-platform-tests/mediacapture-streams/MediaStreamTrack-getSettings.https-expected.txt: * web-platform-tests/mediacapture-streams/MediaStreamTrack-getSettings.https.html: Source/WebCore: Add support for a speaker selection feature policy, as per https://w3c.github.io/mediacapture-output/#permissions-policy-integration. Add support for speaker mock devices and for listing speakers on MacOS in CoreAudioCaptureDeviceManager. Add support for groupId to group microphones and speakers for both mock audio manager and CoreAudioCaptureDeviceManager. For mock speakers, we add two audiooutput devices that are related to a microphone and one audiooutput that is not related to any microphone. Test: fast/mediastream/enumerate-speaker.html * Modules/mediastream/MediaDevices.cpp: (WebCore::MediaDevices::MediaDevices): (WebCore::checkSpeakerAccess): (WebCore::toMediaDeviceInfoKind): (WebCore::MediaDevices::refreshDevices): * Modules/mediastream/MediaDevices.h: * Modules/mediastream/MediaStreamTrack.cpp: (WebCore::sourceCaptureState): (WebCore::MediaStreamTrack::updateToPageMutedState): * html/FeaturePolicy.cpp: (WebCore::policyTypeName): (WebCore::FeaturePolicy::parse): (WebCore::FeaturePolicy::allows const): * html/FeaturePolicy.h: * page/Settings.yaml: * platform/mediastream/CaptureDevice.h: (WebCore::CaptureDevice::label const): (WebCore::CaptureDevice::setGroupId): * platform/mediastream/RealtimeMediaSourceCenter.cpp: (WebCore::RealtimeMediaSourceCenter::getMediaStreamDevices): * platform/mediastream/RealtimeMediaSourceFactory.h: * platform/mediastream/gstreamer/GStreamerAudioCaptureSource.cpp: (WebCore::GStreamerAudioCaptureSourceFactory::speakerDevices const): * platform/mediastream/ios/AVAudioSessionCaptureDeviceManager.h: * platform/mediastream/mac/CoreAudioCaptureDevice.cpp: (WebCore::CoreAudioCaptureDevice::create): (WebCore::CoreAudioCaptureDevice::CoreAudioCaptureDevice): (WebCore::CoreAudioCaptureDevice::relatedAudioDeviceIDs): * platform/mediastream/mac/CoreAudioCaptureDevice.h: * platform/mediastream/mac/CoreAudioCaptureDeviceManager.cpp: (WebCore::CoreAudioCaptureDeviceManager::captureDevices): (WebCore::deviceHasOutputStreams): (WebCore::getDefaultCaptureInputDevice): (WebCore::hasDevice): (WebCore::CoreAudioCaptureDeviceManager::refreshAudioCaptureDevices): * platform/mediastream/mac/CoreAudioCaptureDeviceManager.h: * platform/mediastream/mac/CoreAudioCaptureSource.cpp: (WebCore::CoreAudioCaptureSourceFactory::speakerDevices const): * platform/mediastream/mac/CoreAudioCaptureSource.h: * platform/mediastream/mac/DisplayCaptureManagerCocoa.cpp: (WebCore::DisplayCaptureManagerCocoa::captureDeviceWithPersistentID): * platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp: (WebCore::DisplayCaptureSourceCocoa::create): * platform/mock/MockMediaDevice.h: (WebCore::MockSpeakerProperties::encode const): (WebCore::MockSpeakerProperties::decode): (WebCore::MockMediaDevice::isSpeaker const): (WebCore::MockMediaDevice::captureDevice const): (WebCore::MockMediaDevice::type const): (WebCore::MockMediaDevice::speakerProperties const): (WebCore::MockMediaDevice::encode const): (WebCore::MockMediaDevice::decode): * platform/mock/MockRealtimeMediaSourceCenter.cpp: (WebCore::defaultDevices): (WebCore::deviceListForDevice): (WebCore::toCaptureDevice): (WebCore::createMockDevice): (WebCore::MockRealtimeMediaSourceCenter::setDevices): (WebCore::MockRealtimeMediaSourceCenter::addDevice): (WebCore::MockRealtimeMediaSourceCenter::captureDeviceWithPersistentID): (WebCore::MockRealtimeMediaSourceCenter::microphoneDevices): (WebCore::MockRealtimeMediaSourceCenter::speakerDevices): (WebCore::MockRealtimeMediaSourceCenter::videoDevices): * platform/mock/MockRealtimeMediaSourceCenter.h: Source/WebKit: Introduce an experimental flag (off by default) to cover speaker selection, including exposing speaker devices to web pages. Update UserMediaPermissionRequestManagerProxy::computeFilteredDeviceList to only expose speakers that are tied to a microphone that is exposed. This aligns with https://w3c.github.io/mediacapture-output/#privacy-obtaining-consent. * GPUProcess/GPUConnectionToWebProcess.cpp: * Shared/WebPreferences.yaml: * UIProcess/API/C/WKMockMediaDevice.cpp: (WKAddMockMediaDevice): * UIProcess/API/C/WKPreferences.cpp: (WKPreferencesSetExposeSpeakersEnabled): (WKPreferencesGetExposeSpeakersEnabled): * UIProcess/API/C/WKPreferencesRefPrivate.h: * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp: (WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints): * UIProcess/UserMediaPermissionRequestManagerProxy.cpp: (WebKit::isMicrophoneDevice): (WebKit::UserMediaPermissionRequestManagerProxy::computeFilteredDeviceList): * WebProcess/cocoa/RemoteRealtimeMediaSource.cpp: (WebKit::sourceTypeFromDeviceType): (WebKit::RemoteRealtimeMediaSource::RemoteRealtimeMediaSource): (WebKit::RemoteRealtimeMediaSource::~RemoteRealtimeMediaSource): * WebProcess/cocoa/UserMediaCaptureManager.h: Tools: Enable experimental flag. * WebKitTestRunner/TestController.cpp: (WTR::TestController::resetPreferencesToConsistentValues): LayoutTests: * fast/mediastream/enumerate-speaker-expected.txt: Added. * fast/mediastream/enumerate-speaker.html: Added. * fast/mediastream/get-user-media-device-id.html: * http/tests/media/media-stream/enumerate-devices-source-id.html: * http/tests/media/media-stream/enumerate-devices-iframe-allow-attribute-expected.txt: * http/tests/media/media-stream/enumerate-devices-iframe-allow-attribute.html: Rewrite test to use testharness and ensure order of the iframe tests so that console messages are ordered. * http/tests/media/media-stream/resources/enumerate-devices-iframe.html: Canonical link: https://commits.webkit.org/228635@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@266166 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-08-26 11:16:03 +00:00