[webkit-changes] [WebKit/WebKit] 078916: [macOS] Disable suspension when local notification...
Chris Dumez
noreply at github.com
Mon May 1 17:26:46 PDT 2023
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 0789169e66412b631fddd23369aa42a65592721a
https://github.com/WebKit/WebKit/commit/0789169e66412b631fddd23369aa42a65592721a
Author: Chris Dumez <cdumez at apple.com>
Date: 2023-05-01 (Mon, 01 May 2023)
Changed paths:
M LayoutTests/imported/w3c/web-platform-tests/permissions/all-permissions-expected.txt
M Source/WebCore/Modules/permissions/PermissionName.h
M Source/WebCore/Modules/permissions/PermissionName.idl
M Source/WebCore/Modules/permissions/Permissions.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/Cocoa/ProcessAssertionCocoa.mm
M Source/WebKit/UIProcess/Notifications/ServiceWorkerNotificationHandler.h
M Source/WebKit/UIProcess/Notifications/WebNotificationManagerMessageHandler.cpp
M Source/WebKit/UIProcess/Notifications/WebNotificationManagerMessageHandler.h
M Source/WebKit/UIProcess/WebPageProxy.cpp
M Source/WebKit/UIProcess/WebPageProxy.h
M Source/WebKit/WebProcess/Notifications/WebNotificationManager.cpp
M Source/WebKit/WebProcess/Notifications/WebNotificationManager.h
M Source/WebKit/WebProcess/WebCoreSupport/WebNotificationClient.cpp
Log Message:
-----------
[macOS] Disable suspension when local notifications are granted
https://bugs.webkit.org/show_bug.cgi?id=256095
rdar://107012193
Reviewed by Geoffrey Garen.
On macOS, we now disable process suspension if a tab using this process is likely
to use local notifications. In particular, we disable suspension if either:
- A notification has been shown
- The page called navigator.permissions.query({ name: "notifications" }) and it returned true.
- The page accessed Notification.permission and it returned "granted".
- The page requested permission via Notification.requestPermission() and it was granted.
This gets reset whenever a new main frame load commits inside the page.
Before this change, our behavior was to restart the 8 minute suspension timer whenever
a local notification was shown.
* Source/WebCore/Modules/permissions/PermissionName.h:
* Source/WebCore/Modules/permissions/PermissionName.idl:
* Source/WebCore/Modules/permissions/Permissions.cpp:
(WebCore::Permissions::toPermissionName):
* Source/WebKit/NetworkProcess/Notifications/NetworkNotificationManager.h:
* Source/WebKit/Shared/Notifications/NotificationManagerMessageHandler.h:
* Source/WebKit/Shared/Notifications/NotificationManagerMessageHandler.messages.in:
* Source/WebKit/UIProcess/Notifications/ServiceWorkerNotificationHandler.h:
* Source/WebKit/UIProcess/Notifications/WebNotificationManagerMessageHandler.cpp:
(WebKit::WebNotificationManagerMessageHandler::pageWasNotifiedOfNotificationPermission):
* Source/WebKit/UIProcess/Notifications/WebNotificationManagerMessageHandler.h:
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::ProcessActivityState::takeLikelyToUseNotificationsActivity):
(WebKit::WebPageProxy::ProcessActivityState::dropLikelyToUseNotificationsActivity):
(WebKit::WebPageProxy::ProcessActivityState::reset):
(WebKit::WebPageProxy::didCommitLoadForFrame):
(WebKit::WebPageProxy::queryPermission):
(WebKit::WebPageProxy::pageWillLikelyUseNotifications):
(WebKit::WebPageProxy::showNotification):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/WebProcess/Notifications/WebNotificationManager.cpp:
(WebKit::sendMessage):
(WebKit::sendNotificationMessage):
(WebKit::sendNotificationMessageWithAsyncReply):
(WebKit::WebNotificationManager::policyForOrigin const):
(WebKit::WebNotificationManager::sendNotificationMessage): Deleted.
(WebKit::WebNotificationManager::sendNotificationMessageWithAsyncReply): Deleted.
* Source/WebKit/WebProcess/Notifications/WebNotificationManager.h:
* Source/WebKit/WebProcess/WebCoreSupport/WebNotificationClient.cpp:
(WebKit::WebNotificationClient::checkPermission):
Canonical link: https://commits.webkit.org/263565@main
More information about the webkit-changes
mailing list