Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 75d48825d90d7006712c1a1f85fc1cf837c28f55
https://github.com/WebKit/WebKit/commit/75d48825d90d7006712c1a1f85fc1cf837c28f55
Author: Youenn Fablet <[email protected]>
Date: 2025-03-31 (Mon, 31 Mar 2025)
Changed paths:
M LayoutTests/fast/mediastream/anonymize-device-name.html
M LayoutTests/fast/mediastream/delayed-permission-allowed.html
M LayoutTests/fast/mediastream/delayed-permission-denied.html
M LayoutTests/fast/mediastream/enumerate-devices-change-event.html
A LayoutTests/fast/mediastream/enumerateDevices-camera-denied-expected.txt
A LayoutTests/fast/mediastream/enumerateDevices-camera-denied.html
A
LayoutTests/fast/mediastream/enumerateDevices-microphone-denied-expected.txt
A LayoutTests/fast/mediastream/enumerateDevices-microphone-denied.html
M LayoutTests/fast/mediastream/get-user-media-device-id.html
M LayoutTests/fast/mediastream/media-devices-enumerate-devices.html
M LayoutTests/fast/mediastream/overconstrainederror-constraint.html
M LayoutTests/http/tests/media/media-stream/get-display-media-prompt.html
M LayoutTests/http/tests/media/media-stream/get-user-media-prompt.html
M
LayoutTests/imported/w3c/web-platform-tests/mediacapture-streams/GUM-impossible-constraint.https-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/mediacapture-streams/GUM-invalid-facing-mode.https-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/mediacapture-streams/MediaDevices-enumerateDevices-persistent-permission.https-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/mediacapture-streams/MediaDevices-enumerateDevices.https-expected.txt
M Source/WebKit/UIProcess/API/APIUIClient.cpp
M Source/WebKit/UIProcess/API/APIUIClient.h
M Source/WebKit/UIProcess/API/C/WKPage.cpp
M Source/WebKit/UIProcess/API/C/WKPageUIClient.h
M Source/WebKit/UIProcess/API/Cocoa/WKUIDelegatePrivate.h
M
Source/WebKit/UIProcess/API/glib/WebKitDeviceInfoPermissionRequestPrivate.h
M Source/WebKit/UIProcess/API/glib/WebKitUIClient.cpp
M Source/WebKit/UIProcess/Cocoa/UIDelegate.h
M Source/WebKit/UIProcess/Cocoa/UIDelegate.mm
M Source/WebKit/UIProcess/DeviceIdHashSaltStorage.h
M Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp
M Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.h
M Tools/TestWebKitAPI/CMakeLists.txt
M Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
R Tools/TestWebKitAPI/Tests/WebKit/EnumerateMediaDevices.cpp
M Tools/TestWebKitAPI/Tests/WebKit/GetUserMediaNavigation.mm
M Tools/TestWebKitAPI/Tests/WebKit/UserMedia.cpp
M Tools/TestWebKitAPI/Tests/WebKitCocoa/UserMediaDisabled.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/UserMediaSimulateFailedSandbox.mm
M Tools/TestWebKitAPI/Tests/WebKitGLib/TestUIClient.cpp
M Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl
M Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp
M Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.h
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:
-----------
enumerateDevices returns devices as available when permissions are denied
rdar://147313922
https://bugs.webkit.org/show_bug.cgi?id=289529
Reviewed by Eric Carlson.
We remove the device exposure permission delegate related code.
Instead, we get permission for camera and microphone to decide whether to
expose devices.
We update WebKitTestRunner accordingly and we add a test runner API to delay
answering to getUserMedia requests.
We simplify the request counter to be global, as there is no need for per-frame
handling.
We update API tests to remove setting of the delegate.
We have to update some layout tests to cope with new test runner API.
We rebase some WPT tests.
The newly failing WPT tests are due to the fact that we are exposing devices in
case permission is granted persistently.
We will fix
LayoutTests/imported/w3c/web-platform-tests/mediacapture-streams/MediaDevices-enumerateDevices.https.html
in a follow-up where we plan to stop exposing microphones if only cameras are
being used (and vice versa).
* LayoutTests/fast/mediastream/anonymize-device-name.html:
* LayoutTests/fast/mediastream/delayed-permission-allowed.html:
* LayoutTests/fast/mediastream/delayed-permission-denied.html:
* LayoutTests/fast/mediastream/enumerate-devices-change-event.html:
* LayoutTests/fast/mediastream/enumerateDevices-camera-denied-expected.txt:
Added.
* LayoutTests/fast/mediastream/enumerateDevices-camera-denied.html: Added.
* LayoutTests/fast/mediastream/enumerateDevices-microphone-denied-expected.txt:
Added.
* LayoutTests/fast/mediastream/enumerateDevices-microphone-denied.html: Added.
* LayoutTests/fast/mediastream/get-user-media-device-id.html:
* LayoutTests/fast/mediastream/media-devices-enumerate-devices.html:
* LayoutTests/fast/mediastream/overconstrainederror-constraint.html:
* LayoutTests/http/tests/media/media-stream/get-display-media-prompt.html:
* LayoutTests/http/tests/media/media-stream/get-user-media-prompt.html:
*
LayoutTests/imported/w3c/web-platform-tests/mediacapture-streams/GUM-impossible-constraint.https-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/mediacapture-streams/GUM-invalid-facing-mode.https-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/mediacapture-streams/MediaDevices-enumerateDevices-persistent-permission.https-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/mediacapture-streams/MediaDevices-enumerateDevices.https-expected.txt:
* Source/WebKit/UIProcess/API/APIUIClient.cpp:
(API::UIClient::checkUserMediaPermissionForOrigin): Deleted.
* Source/WebKit/UIProcess/API/APIUIClient.h:
(API::UIClient::decidePolicyForScreenCaptureUnmuting):
* Source/WebKit/UIProcess/API/C/WKPage.cpp:
(WKPageSetPageUIClient):
* Source/WebKit/UIProcess/API/C/WKPageUIClient.h:
* Source/WebKit/UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
* Source/WebKit/UIProcess/API/glib/WebKitDeviceInfoPermissionRequestPrivate.h:
* Source/WebKit/UIProcess/API/glib/WebKitUIClient.cpp:
* Source/WebKit/UIProcess/Cocoa/UIDelegate.h:
* Source/WebKit/UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::setDelegate):
(WebKit::UIDelegate::UIClient::checkUserMediaPermissionForOrigin): Deleted.
* Source/WebKit/UIProcess/DeviceIdHashSaltStorage.h:
* Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::UserMediaPermissionRequestManagerProxy::captureDevicesChanged):
(WebKit::UserMediaPermissionRequestManagerProxy::startProcessingUserMediaPermissionRequest):
(WebKit::UserMediaPermissionInfoGatherer::create):
(WebKit::UserMediaPermissionInfoGatherer::~UserMediaPermissionInfoGatherer):
(WebKit::UserMediaPermissionInfoGatherer::setCameraPermission):
(WebKit::UserMediaPermissionInfoGatherer::setMicrophonePermission):
(WebKit::UserMediaPermissionInfoGatherer::UserMediaPermissionInfoGatherer):
(WebKit::UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo):
(WebKit::UserMediaPermissionRequestManagerProxy::computeFilteredDeviceList):
(WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame):
* Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.h:
* Tools/TestWebKitAPI/CMakeLists.txt:
* Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* Tools/TestWebKitAPI/Tests/WebKit/EnumerateMediaDevices.cpp: Removed.
* Tools/TestWebKitAPI/Tests/WebKit/UserMedia.cpp:
(TestWebKitAPI::TEST(WebKit, UserMediaBasic)):
(TestWebKitAPI::TEST(WebKit, OnDeviceChangeCrash)):
(TestWebKitAPI::checkUserMediaPermissionCallback): Deleted.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/UserMediaDisabled.mm:
(-[UserMediaUIDelegate
webView:requestMediaCapturePermissionForOrigin:initiatedByFrame:type:decisionHandler:]):
(-[UserMediaUIDelegate _webView:includeSensitiveMediaDeviceDetails:]): Deleted.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/UserMediaSimulateFailedSandbox.mm:
(-[SimulateFailedSandboxUIDelegate
webView:requestMediaCapturePermissionForOrigin:initiatedByFrame:type:decisionHandler:]):
(-[SimulateFailedSandboxUIDelegate
_webView:includeSensitiveMediaDeviceDetails:]): Deleted.
* Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
* Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
(WTR::InjectedBundle::delayUserMediaRequestDecision):
(WTR::InjectedBundle::userMediaPermissionRequestCount const):
(WTR::InjectedBundle::resetUserMediaPermissionRequestCount):
(WTR::InjectedBundle::setUserMediaPersistentPermissionForOrigin): Deleted.
(WTR::InjectedBundle::userMediaPermissionRequestCountForOrigin const): Deleted.
(WTR::InjectedBundle::resetUserMediaPermissionRequestCountForOrigin): Deleted.
* Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.h:
* Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::delayUserMediaRequestDecision):
(WTR::TestRunner::userMediaPermissionRequestCount const):
(WTR::TestRunner::resetUserMediaPermissionRequestCount):
(WTR::TestRunner::setUserMediaPersistentPermissionForOrigin): Deleted.
(WTR::TestRunner::userMediaPermissionRequestCountForOrigin const): Deleted.
(WTR::TestRunner::resetUserMediaPermissionRequestCountForOrigin): Deleted.
* Tools/WebKitTestRunner/InjectedBundle/TestRunner.h:
* Tools/WebKitTestRunner/TestController.cpp:
(WTR::TestController::handleQueryPermission):
(WTR::TestController::createOtherPlatformWebView):
(WTR::TestController::createWebViewWithOptions):
(WTR::TestController::resetStateToConsistentValues):
(WTR::TestController::setCameraPermission):
(WTR::TestController::setMicrophonePermission):
(WTR::TestController::resetUserMediaPermission):
(WTR::TestController::handleUserMediaPermissionRequest):
(WTR::TestController::delayUserMediaRequestDecision):
(WTR::TestController::userMediaPermissionRequestCount):
(WTR::TestController::resetUserMediaPermissionRequestCount):
(WTR::TestController::decidePolicyForUserMediaPermissionRequestIfPossible):
(WTR::checkUserMediaPermissionForOrigin): Deleted.
(WTR::userMediaOriginHash): Deleted.
(WTR::OriginSettings::OriginSettings): Deleted.
(WTR::OriginSettings::persistentPermission const): Deleted.
(WTR::OriginSettings::setPersistentPermission): Deleted.
(WTR::OriginSettings::persistentSalt const): Deleted.
(WTR::OriginSettings::setPersistentSalt): Deleted.
(WTR::OriginSettings::ephemeralSalts): Deleted.
(WTR::OriginSettings::incrementRequestCount): Deleted.
(WTR::OriginSettings::resetRequestCount): Deleted.
(WTR::OriginSettings::requestCount const): Deleted.
(WTR::TestController::saltForOrigin): Deleted.
(WTR::TestController::setUserMediaPersistentPermissionForOrigin): Deleted.
(WTR::TestController::handleCheckOfUserMediaPermissionForOrigin): Deleted.
(WTR::TestController::settingsForOrigin): Deleted.
(WTR::TestController::userMediaPermissionRequestCountForOrigin): Deleted.
(WTR::TestController::resetUserMediaPermissionRequestCountForOrigin): Deleted.
* Tools/WebKitTestRunner/TestController.h:
* Tools/WebKitTestRunner/TestInvocation.cpp:
(WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):
Canonical link: https://commits.webkit.org/292921@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