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

Reply via email to