Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: b37edf6d5b9ef66cda7e8f9246c7d06225888c0d
      
https://github.com/WebKit/WebKit/commit/b37edf6d5b9ef66cda7e8f9246c7d06225888c0d
  Author: Ben Nham <[email protected]>
  Date:   2024-07-31 (Wed, 31 Jul 2024)

  Changed paths:
    M Source/WebKit/NetworkProcess/Notifications/NetworkNotificationManager.cpp
    M Source/WebKit/NetworkProcess/Notifications/NetworkNotificationManager.h
    M Source/WebKit/Platform/spi/Cocoa/UserNotificationsSPI.h
    M Source/WebKit/Shared/Notifications/NotificationManagerMessageHandler.h
    M 
Source/WebKit/Shared/Notifications/NotificationManagerMessageHandler.messages.in
    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/Notifications/WebNotificationManager.h
    M Source/WebKit/WebProcess/WebCoreSupport/WebNotificationClient.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.h
    M Source/WebKit/webpushd/_WKMockUserNotificationCenter.mm
    M Source/WebKit/webpushd/webpushtool/WebPushToolConnection.h
    M Source/WebKit/webpushd/webpushtool/WebPushToolConnection.mm
    M Source/WebKit/webpushd/webpushtool/WebPushToolMain.mm

  Log Message:
  -----------
  Route notification permission requests through webpushd
https://bugs.webkit.org/show_bug.cgi?id=277101
rdar://131367050

Reviewed by Brady Eidson.

When running in built-in notifications mode, we should route push and 
notification permission
requests through webpushd rather than through the embedder.

We want to centralize notification and permission management in webpushd 
because it reduces the
amount of duplicate boilerplate code to write in each embedder, and it makes it 
much easier to keep
the state of permissions and push subscriptions in sync.

Testing is currently through an app that toggles on the built-in notification 
setting, as well as
via webpushtool. This patch is hooked up to use _WKMockUserNotificationCenter 
though, so it should
be easy to add an integration test for this in a future patch when I actually 
hook up
Notification.permission and PushManager.permissionState to webpushd.

* Source/WebKit/NetworkProcess/Notifications/NetworkNotificationManager.cpp:
(WebKit::NetworkNotificationManager::requestPermission):
(WebKit::NetworkNotificationManager::getPushPermissionState):
* Source/WebKit/NetworkProcess/Notifications/NetworkNotificationManager.h:
* Source/WebKit/Platform/spi/Cocoa/UserNotificationsSPI.h:
* Source/WebKit/Shared/Notifications/NotificationManagerMessageHandler.h:
* 
Source/WebKit/Shared/Notifications/NotificationManagerMessageHandler.messages.in:
* Source/WebKit/UIProcess/Notifications/ServiceWorkerNotificationHandler.cpp:
(WebKit::ServiceWorkerNotificationHandler::requestPermission):
* Source/WebKit/UIProcess/Notifications/ServiceWorkerNotificationHandler.h:
* 
Source/WebKit/UIProcess/Notifications/WebNotificationManagerMessageHandler.cpp:
(WebKit::WebNotificationManagerMessageHandler::requestPermission):
* Source/WebKit/UIProcess/Notifications/WebNotificationManagerMessageHandler.h:
* Source/WebKit/WebProcess/Notifications/WebNotificationManager.cpp:
(WebKit::sendNotificationMessageWithAsyncReply):
(WebKit::WebNotificationManager::requestPermission):
* Source/WebKit/WebProcess/Notifications/WebNotificationManager.h:
* Source/WebKit/WebProcess/WebCoreSupport/WebNotificationClient.cpp:
(WebKit::WebNotificationClient::requestPermission):
* Source/WebKit/webpushd/PushClientConnection.h:
* Source/WebKit/webpushd/PushClientConnection.messages.in:
* Source/WebKit/webpushd/PushClientConnection.mm:
(WebPushD::PushClientConnection::getPushPermissionState):
(WebPushD::PushClientConnection::requestPushPermission):
(WebPushD::PushClientConnection::showNotification):
(WebPushD::PushClientConnection::getNotifications):
* Source/WebKit/webpushd/WebPushDaemon.h:
* Source/WebKit/webpushd/WebPushDaemon.mm:
(WebPushD::WebPushDaemon::getPushPermissionState):
(WebPushD::WebPushDaemon::requestPushPermission):
* Source/WebKit/webpushd/_WKMockUserNotificationCenter.h:
* Source/WebKit/webpushd/_WKMockUserNotificationCenter.mm:
(notificationPermissions):
(-[_WKMockUserNotificationCenter initWithBundleIdentifier:]):
(-[_WKMockUserNotificationCenter 
addNotificationRequest:withCompletionHandler:]):
(-[_WKMockUserNotificationCenter 
getDeliveredNotificationsWithCompletionHandler:]):
(-[_WKMockUserNotificationCenter 
getNotificationSettingsWithCompletionHandler:]):
(-[_WKMockUserNotificationCenter 
requestAuthorizationWithOptions:completionHandler:]):
* Source/WebKit/webpushd/webpushtool/WebPushToolConnection.h:
* Source/WebKit/webpushd/webpushtool/WebPushToolConnection.mm:
(WebPushTool::Connection::getPushPermissionState):
(WebPushTool::Connection::requestPushPermission):
* Source/WebKit/webpushd/webpushtool/WebPushToolMain.mm:
(printUsageAndTerminate):
(WebKit::WebPushToolVerb::done):
(WebKit::InjectPushMessageVerb::InjectPushMessageVerb):
(WebKit::GetPushPermissionStateVerb::GetPushPermissionStateVerb):
(WebKit::RequestPushPermissionVerb::RequestPushPermissionVerb):
(WebKit::WebPushToolMain):

Canonical link: https://commits.webkit.org/281654@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