[webkit-changes] [WebKit/WebKit] 566b4e: Notification permission lookup should be handled b...

bnham noreply at github.com
Tue Aug 6 12:31:10 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 566b4eccdb82b90363aa42d4c2a7b77cc7916e7c
      https://github.com/WebKit/WebKit/commit/566b4eccdb82b90363aa42d4c2a7b77cc7916e7c
  Author: Ben Nham <nham at apple.com>
  Date:   2024-08-06 (Tue, 06 Aug 2024)

  Changed paths:
    M Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp
    M Source/WebKit/NetworkProcess/Notifications/NetworkNotificationManager.cpp
    M Source/WebKit/NetworkProcess/Notifications/NetworkNotificationManager.h
    M Source/WebKit/Shared/Notifications/NotificationManagerMessageHandler.h
    M Source/WebKit/Shared/Notifications/NotificationManagerMessageHandler.messages.in
    M Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm
    M Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h
    M Source/WebKit/UIProcess/Notifications/ServiceWorkerNotificationHandler.cpp
    M Source/WebKit/UIProcess/Notifications/ServiceWorkerNotificationHandler.h
    M Source/WebKit/UIProcess/Notifications/WebNotificationManagerMessageHandler.cpp
    M Source/WebKit/UIProcess/Notifications/WebNotificationManagerMessageHandler.h
    M Source/WebKit/WebProcess/Notifications/WebNotificationManager.cpp
    M Source/WebKit/WebProcess/WebCoreSupport/WebPermissionController.cpp
    M Source/WebKit/webpushd/PushClientConnection.h
    M Source/WebKit/webpushd/PushClientConnection.messages.in
    M Source/WebKit/webpushd/PushClientConnection.mm
    M Source/WebKit/webpushd/WebPushDaemon.h
    M Source/WebKit/webpushd/WebPushDaemon.mm
    M Source/WebKit/webpushd/_WKMockUserNotificationCenter.mm
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/WebPushDaemon.mm

  Log Message:
  -----------
  Notification permission lookup should be handled by webpushd when built-in notifications are enabled
https://bugs.webkit.org/show_bug.cgi?id=277656
rdar://131367219

Reviewed by Sihui Liu.

When built-in notifications mode is enabled, we should ask webpushd for notification permissions
instead of calling back to the embedder. This extends to:

1. Notification.permission (via WebNotificationManager::policyForOrigin)
2. PushManager.permissionState (via WebNotificationManager::policyForOrigin)
3. Permissions.query (via WebPermissionController::query)

Right now, both (1) and (2) send a sync IPC to NetworkProcess. In theory, we can do (2) without a
sync IPC, but I'll look in to optimizing that in a future PR.

I added an integration test to make sure that all of these APIs work in both the document and
service worker context.

* Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::didReceiveSyncMessage):
* Source/WebKit/NetworkProcess/Notifications/NetworkNotificationManager.cpp:
(WebKit::getPushPermissionStateImpl):
(WebKit::NetworkNotificationManager::getPermissionState):
(WebKit::NetworkNotificationManager::getPermissionStateSync):
* Source/WebKit/NetworkProcess/Notifications/NetworkNotificationManager.h:
* Source/WebKit/Shared/Notifications/NotificationManagerMessageHandler.h:
* Source/WebKit/Shared/Notifications/NotificationManagerMessageHandler.messages.in:
* Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _evaluateJavaScript:asAsyncFunction:withSourceURL:withArguments:forceUserGesture:inFrame:inWorld:completionHandler:]):
(-[WKWebView _forceStickyTransientActivation]):
(-[WKWebView _setForceStickyTransientActivation:]):
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h:
* Source/WebKit/UIProcess/Notifications/ServiceWorkerNotificationHandler.cpp:
(WebKit::ServiceWorkerNotificationHandler::getPermissionState):
(WebKit::ServiceWorkerNotificationHandler::getPermissionStateSync):
* Source/WebKit/UIProcess/Notifications/ServiceWorkerNotificationHandler.h:
* Source/WebKit/UIProcess/Notifications/WebNotificationManagerMessageHandler.cpp:
(WebKit::WebNotificationManagerMessageHandler::getPermissionState):
(WebKit::WebNotificationManagerMessageHandler::getPermissionStateSync):
* Source/WebKit/UIProcess/Notifications/WebNotificationManagerMessageHandler.h:
* Source/WebKit/WebProcess/Notifications/WebNotificationManager.cpp:
(WebKit::WebNotificationManager::policyForOrigin const):
* Source/WebKit/WebProcess/WebCoreSupport/WebPermissionController.cpp:
(WebKit::WebPermissionController::query):
* Source/WebKit/webpushd/PushClientConnection.h:
* Source/WebKit/webpushd/PushClientConnection.messages.in:
* Source/WebKit/webpushd/PushClientConnection.mm:
(WebPushD::PushClientConnection::enableMockUserNotificationCenterForTesting): Deleted.
* Source/WebKit/webpushd/WebPushDaemon.h:
* Source/WebKit/webpushd/WebPushDaemon.mm:
(WebPushD::WebPushDaemon::startMockPushService):
(WebPushD::WebPushDaemon::enableMockUserNotificationCenterForTesting): Deleted.
* Source/WebKit/webpushd/_WKMockUserNotificationCenter.mm:
(-[_WKMockUserNotificationCenter getNotificationSettingsWithCompletionHandler:]):
(-[_WKMockUserNotificationCenter requestAuthorizationWithOptions:completionHandler:]):
(notificationPermissions): Deleted.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WebPushDaemon.mm:

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



To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications


More information about the webkit-changes mailing list