Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 1bf29719b1040f73b6b1175cabb3e89534e4134a https://github.com/WebKit/WebKit/commit/1bf29719b1040f73b6b1175cabb3e89534e4134a Author: Youenn Fablet <youe...@gmail.com> Date: 2023-10-11 (Wed, 11 Oct 2023)
Changed paths: A LayoutTests/fast/mediastream/enumerateDevices-active-auxiliary-unit-expected.txt A LayoutTests/fast/mediastream/enumerateDevices-active-auxiliary-unit.html M LayoutTests/platform/glib/TestExpectations M Source/WebCore/WebCore.xcodeproj/project.pbxproj M Source/WebCore/platform/mediastream/ios/AVAudioSessionCaptureDeviceManager.h M Source/WebCore/platform/mediastream/ios/CoreAudioCaptureSourceIOS.h M Source/WebCore/platform/mediastream/ios/CoreAudioCaptureSourceIOS.mm M Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.h M Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.cpp M Source/WebKit/UIProcess/API/C/WKUserMediaPermissionCheck.cpp M Source/WebKit/UIProcess/API/C/WKUserMediaPermissionCheck.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 M Tools/WebKitTestRunner/cocoa/TestControllerCocoa.mm Log Message: ----------- REGRESSION (iOS 17): mediaDevices.enumerateDevices() breaks audio https://bugs.webkit.org/show_bug.cgi?id=262569 rdar://116433066 Reviewed by Eric Carlson. The auxiliary unit allows to enumerate all audio devices. But, when enabled with PlayAndRecord, it might have an impact on rendered audio. To prevent this effect, we are now limiting when this unit is made active. In particular, when only camera capture happens, we are still exposing all capabilities but we are limiting the unit to be active for a single run loop during which happens the microphone enumeration. We add a WTR testRunner API to validate this is working as expected on iOS. To make it work with mocks, we make MockAudioCaptureSourceFactory derive from CoreAudioCaptureSourceFactoryIOS on iOS. * LayoutTests/fast/mediastream/enumerateDevices-active-auxiliary-unit-expected.txt: Added. * LayoutTests/fast/mediastream/enumerateDevices-active-auxiliary-unit.html: Added. * LayoutTests/platform/glib/TestExpectations: * Source/WebCore/WebCore.xcodeproj/project.pbxproj: * Source/WebCore/platform/mediastream/ios/AVAudioSessionCaptureDeviceManager.h: * Source/WebCore/platform/mediastream/ios/CoreAudioCaptureSourceIOS.h: * Source/WebCore/platform/mediastream/ios/CoreAudioCaptureSourceIOS.mm: (WebCore::CoreAudioCaptureSourceFactoryIOS::removeExtensiveObserver): (WebCore::CoreAudioCaptureSourceFactoryIOS::createAudioCaptureSource): * Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.h: * Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.cpp: * Source/WebKit/UIProcess/API/C/WKUserMediaPermissionCheck.cpp: (WKUserMediaIsEnumeratingAudioUnitActive): * Source/WebKit/UIProcess/API/C/WKUserMediaPermissionCheck.h: * Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl: * Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp: (WTR::TestRunner::isEnumeratingAudioUnitActive const): * Tools/WebKitTestRunner/InjectedBundle/TestRunner.h: * Tools/WebKitTestRunner/TestController.cpp: (WTR::TestController::isEnumeratingAudioUnitActive const): * Tools/WebKitTestRunner/TestController.h: * Tools/WebKitTestRunner/TestInvocation.cpp: (WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle): * Tools/WebKitTestRunner/cocoa/TestControllerCocoa.mm: (WTR::TestController::isDoingMediaCapture const): (WTR::TestController::isEnumeratingAudioUnitActive const): Canonical link: https://commits.webkit.org/269196@main _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes