This website requires JavaScript.
Explore
Help
Sign In
nephele
/
haikuwebkit
Watch
1
Star
0
Fork
You've already forked haikuwebkit
0
Code
Issues
Releases
Activity
haiku
haikuwebkit
/
LayoutTests
/
fast
/
mediastream
/
enumerate-speaker-expected.txt
5 lines
70 B
Plaintext
Raw
Permalink
Normal View
History
Unescape
Escape
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
Remove trailing spaces from expected.txt files (excluding WPT for now since that contains too many) https://bugs.webkit.org/show_bug.cgi?id=217016 Reviewed by Zalan Bujtas. Done with this command: find LayoutTests -name '*-expected.txt' | grep -v imported | xargs awk '/^CONSOLE MESSAGE:/ { next }; /^<\?xml/ { nextfile }; { print FILENAME; nextfile }' | xargs perl -i -pe 's/ +$//g' This affects many files, and it's not helpful to clog the change log with a list of them. Canonical link: https://commits.webkit.org/229803@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267644 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-09-27 02:15:19 +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