[webkit-changes] [WebKit/WebKit] 7f531f: Add support for PermissionStatus.onchange

Rupin Mittal noreply at github.com
Tue Sep 6 12:06:08 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 7f531f3e0265f2d2722545e3600d39eb08242190
      https://github.com/WebKit/WebKit/commit/7f531f3e0265f2d2722545e3600d39eb08242190
  Author: Rupin Mittal <rmittal2 at apple.com>
  Date:   2022-09-06 (Tue, 06 Sep 2022)

  Changed paths:
    A LayoutTests/http/tests/notifications/permission/permission-status-onchange-event-expected.txt
    A LayoutTests/http/tests/notifications/permission/permission-status-onchange-event.html
    M LayoutTests/imported/w3c/web-platform-tests/permissions/idlharness.any-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/permissions/idlharness.any.worker-expected.txt
    M Source/WebCore/Headers.cmake
    M Source/WebCore/Modules/permissions/PermissionController.h
    M Source/WebCore/Modules/permissions/PermissionObserver.h
    M Source/WebCore/Modules/permissions/PermissionStatus.h
    M Source/WebCore/Modules/permissions/PermissionStatus.idl
    M Source/WebCore/Modules/permissions/Permissions.cpp
    M Source/WebCore/Modules/permissions/Permissions.h
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    M Source/WebKit/CMakeLists.txt
    M Source/WebKit/DerivedSources-input.xcfilelist
    M Source/WebKit/DerivedSources-output.xcfilelist
    M Source/WebKit/DerivedSources.make
    M Source/WebKit/Sources.txt
    M Source/WebKit/UIProcess/API/C/WKPage.cpp
    M Source/WebKit/UIProcess/API/C/WKPagePrivate.h
    M Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm
    M Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h
    M Source/WebKit/UIProcess/WebPermissionControllerProxy.h
    M Source/WebKit/UIProcess/WebProcessProxy.cpp
    M Source/WebKit/UIProcess/WebProcessProxy.h
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj
    M Source/WebKit/WebProcess/WebCoreSupport/WebPermissionController.cpp
    M Source/WebKit/WebProcess/WebCoreSupport/WebPermissionController.h
    A Source/WebKit/WebProcess/WebCoreSupport/WebPermissionController.messages.in
    M Source/WebKit/WebProcess/WebProcess.cpp
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/PermissionsAPI.mm
    M Tools/WebKitTestRunner/TestController.cpp

  Log Message:
  -----------
  Add support for PermissionStatus.onchange
https://bugs.webkit.org/show_bug.cgi?id=244633

Reviewed by Chris Dumez and Youenn Fablet.

The PermissionStatus object returned by Permissions::query should
have an onchange event as specified by the Permissions API spec.
This patch adds this by adding a permissionChanged function to the
WKWebViewPrivate SPI which a client can call to indicate to WebKit
that a permission state has changed. WebPermissionController will
then query for the specified permission state and dispatch an
onchange event to the PermissionStatus object if the permission
state has indeed changed.

The permissionChanged function is a class/static function, so the
client needs to call it only once and WebKit will look through all
of the web processes and find the ones where the permission has
changed.

Currently, the onchange event is only supported in Window contexts.
A future patch will add support for Worker contexts.

An API test and Layout test were added to test this.

* LayoutTests/http/tests/notifications/permission/permission-status-onchange-event-expected.txt: Added.
* LayoutTests/http/tests/notifications/permission/permission-status-onchange-event.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/permissions/idlharness.any-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/permissions/idlharness.any.worker-expected.txt:
* Source/WebCore/Headers.cmake:
* Source/WebCore/Modules/permissions/PermissionController.h:
* Source/WebCore/Modules/permissions/PermissionObserver.h:
* Source/WebCore/Modules/permissions/PermissionStatus.h:
* Source/WebCore/Modules/permissions/PermissionStatus.idl:
* Source/WebCore/Modules/permissions/Permissions.cpp:
(WebCore::Permissions::sourceFromContext):
(WebCore::Permissions::toPermissionName):
(WebCore::Permissions::query):
(WebCore::sourceFromContext): Deleted.
* Source/WebCore/Modules/permissions/Permissions.h:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebKit/CMakeLists.txt:
* Source/WebKit/DerivedSources-input.xcfilelist:
* Source/WebKit/DerivedSources-output.xcfilelist:
* Source/WebKit/DerivedSources.make:
* Source/WebKit/Sources.txt:
* Source/WebKit/UIProcess/API/C/WKPage.cpp:
(WKPagePermissionChanged):
* Source/WebKit/UIProcess/API/C/WKPagePrivate.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:
(+[WKWebView _permissionChanged:forOrigin:]):
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h:
* Source/WebKit/UIProcess/WebPermissionControllerProxy.h:
* Source/WebKit/UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::permissionChanged):
(WebKit::WebProcessProxy::sendPermissionChanged):
* Source/WebKit/UIProcess/WebProcessProxy.h:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/WebCoreSupport/WebPermissionController.cpp:
(WebKit::WebPermissionController::create):
(WebKit::WebPermissionController::WebPermissionController):
(WebKit::WebPermissionController::~WebPermissionController):
(WebKit::WebPermissionController::query):
(WebKit::WebPermissionController::permissionChanged):
* Source/WebKit/WebProcess/WebCoreSupport/WebPermissionController.h:
* Source/WebKit/WebProcess/WebCoreSupport/WebPermissionController.messages.in: Copied from Source/WebCore/Modules/permissions/PermissionStatus.idl.
* Source/WebKit/WebProcess/WebProcess.cpp:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/PermissionsAPI.mm:
(-[PermissionChangedTestAPIMessageHandler userContentController:didReceiveScriptMessage:]):
(-[PermissionChangedTestAPIUIDelegate _webView:queryPermission:forOrigin:completionHandler:]):
(TestWebKitAPI::TEST):
* Tools/WebKitTestRunner/TestController.cpp:
(WTR::TestController::grantNotificationPermission):
(WTR::TestController::denyNotificationPermission):

Canonical link: https://commits.webkit.org/254193@main




More information about the webkit-changes mailing list