summaryrefslogtreecommitdiff
path: root/Source/WebKit2/WebProcess/Notifications
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit2/WebProcess/Notifications')
-rw-r--r--Source/WebKit2/WebProcess/Notifications/NotificationPermissionRequestManager.cpp44
-rw-r--r--Source/WebKit2/WebProcess/Notifications/NotificationPermissionRequestManager.h7
-rw-r--r--Source/WebKit2/WebProcess/Notifications/WebNotificationManager.cpp2
-rw-r--r--Source/WebKit2/WebProcess/Notifications/WebNotificationManager.h4
4 files changed, 37 insertions, 20 deletions
diff --git a/Source/WebKit2/WebProcess/Notifications/NotificationPermissionRequestManager.cpp b/Source/WebKit2/WebProcess/Notifications/NotificationPermissionRequestManager.cpp
index 0c137a668..81ff1b1b7 100644
--- a/Source/WebKit2/WebProcess/Notifications/NotificationPermissionRequestManager.cpp
+++ b/Source/WebKit2/WebProcess/Notifications/NotificationPermissionRequestManager.cpp
@@ -52,21 +52,24 @@ static uint64_t generateRequestID()
}
#endif
-PassRefPtr<NotificationPermissionRequestManager> NotificationPermissionRequestManager::create(WebPage* page)
+Ref<NotificationPermissionRequestManager> NotificationPermissionRequestManager::create(WebPage* page)
{
- return adoptRef(new NotificationPermissionRequestManager(page));
+ return adoptRef(*new NotificationPermissionRequestManager(page));
}
-NotificationPermissionRequestManager::NotificationPermissionRequestManager(WebPage* page)
#if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS)
+NotificationPermissionRequestManager::NotificationPermissionRequestManager(WebPage* page)
: m_page(page)
-#endif
{
- (void)page;
}
+#else
+NotificationPermissionRequestManager::NotificationPermissionRequestManager(WebPage*)
+{
+}
+#endif
#if ENABLE(NOTIFICATIONS)
-void NotificationPermissionRequestManager::startRequest(SecurityOrigin* origin, PassRefPtr<NotificationPermissionCallback> callback)
+void NotificationPermissionRequestManager::startRequest(SecurityOrigin* origin, RefPtr<NotificationPermissionCallback>&& callback)
{
NotificationClient::Permission permission = permissionLevel(origin);
if (permission != NotificationClient::PermissionNotAllowed) {
@@ -78,13 +81,13 @@ void NotificationPermissionRequestManager::startRequest(SecurityOrigin* origin,
uint64_t requestID = generateRequestID();
m_originToIDMap.set(origin, requestID);
m_idToOriginMap.set(requestID, origin);
- m_idToCallbackMap.set(requestID, callback);
+ m_idToCallbackMap.set(requestID, WTFMove(callback));
m_page->send(Messages::WebPageProxy::RequestNotificationPermission(requestID, origin->toString()));
}
#endif
#if ENABLE(LEGACY_NOTIFICATIONS)
-void NotificationPermissionRequestManager::startRequest(SecurityOrigin* origin, PassRefPtr<VoidCallback> callback)
+void NotificationPermissionRequestManager::startRequest(SecurityOrigin* origin, RefPtr<WebCore::VoidCallback>&& callback)
{
NotificationClient::Permission permission = permissionLevel(origin);
if (permission != NotificationClient::PermissionNotAllowed) {
@@ -96,7 +99,7 @@ void NotificationPermissionRequestManager::startRequest(SecurityOrigin* origin,
uint64_t requestID = generateRequestID();
m_originToIDMap.set(origin, requestID);
m_idToOriginMap.set(requestID, origin);
- m_idToVoidCallbackMap.set(requestID, callback);
+ m_idToVoidCallbackMap.set(requestID, WTFMove(callback));
m_page->send(Messages::WebPageProxy::RequestNotificationPermission(requestID, origin->toString()));
}
#endif
@@ -120,13 +123,23 @@ void NotificationPermissionRequestManager::cancelRequest(SecurityOrigin* origin)
#endif
}
+bool NotificationPermissionRequestManager::hasPendingPermissionRequests(SecurityOrigin* origin) const
+{
+#if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS)
+ return m_originToIDMap.contains(origin);
+#else
+ UNUSED_PARAM(origin);
+ return false;
+#endif
+}
+
NotificationClient::Permission NotificationPermissionRequestManager::permissionLevel(SecurityOrigin* securityOrigin)
{
#if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS)
if (!m_page->corePage()->settings().notificationsEnabled())
return NotificationClient::PermissionDenied;
- return WebProcess::shared().supplement<WebNotificationManager>()->policyForOrigin(securityOrigin);
+ return WebProcess::singleton().supplement<WebNotificationManager>()->policyForOrigin(securityOrigin);
#else
UNUSED_PARAM(securityOrigin);
return NotificationClient::PermissionDenied;
@@ -136,7 +149,7 @@ NotificationClient::Permission NotificationPermissionRequestManager::permissionL
void NotificationPermissionRequestManager::setPermissionLevelForTesting(const String& originString, bool allowed)
{
#if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS)
- WebProcess::shared().supplement<WebNotificationManager>()->didUpdateNotificationDecision(originString, allowed);
+ WebProcess::singleton().supplement<WebNotificationManager>()->didUpdateNotificationDecision(originString, allowed);
#else
UNUSED_PARAM(originString);
UNUSED_PARAM(allowed);
@@ -146,7 +159,7 @@ void NotificationPermissionRequestManager::setPermissionLevelForTesting(const St
void NotificationPermissionRequestManager::removeAllPermissionsForTesting()
{
#if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS)
- WebProcess::shared().supplement<WebNotificationManager>()->removeAllPermissionsForTesting();
+ WebProcess::singleton().supplement<WebNotificationManager>()->removeAllPermissionsForTesting();
#endif
}
@@ -157,12 +170,15 @@ void NotificationPermissionRequestManager::didReceiveNotificationPermissionDecis
return;
RefPtr<WebCore::SecurityOrigin> origin = m_idToOriginMap.take(requestID);
+ if (!origin)
+ return;
+
m_originToIDMap.remove(origin);
- WebProcess::shared().supplement<WebNotificationManager>()->didUpdateNotificationDecision(origin->toString(), allowed);
+ WebProcess::singleton().supplement<WebNotificationManager>()->didUpdateNotificationDecision(origin->toString(), allowed);
#if ENABLE(LEGACY_NOTIFICATIONS)
- RefPtr<VoidCallback> voidCallback = m_idToVoidCallbackMap.take(requestID);
+ RefPtr<WebCore::VoidCallback> voidCallback = m_idToVoidCallbackMap.take(requestID);
if (voidCallback) {
voidCallback->handleEvent();
return;
diff --git a/Source/WebKit2/WebProcess/Notifications/NotificationPermissionRequestManager.h b/Source/WebKit2/WebProcess/Notifications/NotificationPermissionRequestManager.h
index 312f0646c..86e4cfc26 100644
--- a/Source/WebKit2/WebProcess/Notifications/NotificationPermissionRequestManager.h
+++ b/Source/WebKit2/WebProcess/Notifications/NotificationPermissionRequestManager.h
@@ -47,15 +47,16 @@ class WebPage;
/// FIXME: Need to keep a queue of pending notifications which permission is still being requested.
class NotificationPermissionRequestManager : public RefCounted<NotificationPermissionRequestManager> {
public:
- static PassRefPtr<NotificationPermissionRequestManager> create(WebPage*);
+ static Ref<NotificationPermissionRequestManager> create(WebPage*);
#if ENABLE(NOTIFICATIONS)
- void startRequest(WebCore::SecurityOrigin*, PassRefPtr<WebCore::NotificationPermissionCallback>);
+ void startRequest(WebCore::SecurityOrigin*, RefPtr<WebCore::NotificationPermissionCallback>&&);
#endif
#if ENABLE(LEGACY_NOTIFICATIONS)
- void startRequest(WebCore::SecurityOrigin*, PassRefPtr<WebCore::VoidCallback>);
+ void startRequest(WebCore::SecurityOrigin*, RefPtr<WebCore::VoidCallback>&&);
#endif
void cancelRequest(WebCore::SecurityOrigin*);
+ bool hasPendingPermissionRequests(WebCore::SecurityOrigin*) const;
WebCore::NotificationClient::Permission permissionLevel(WebCore::SecurityOrigin*);
diff --git a/Source/WebKit2/WebProcess/Notifications/WebNotificationManager.cpp b/Source/WebKit2/WebProcess/Notifications/WebNotificationManager.cpp
index 3e7421a1e..74e35f6b3 100644
--- a/Source/WebKit2/WebProcess/Notifications/WebNotificationManager.cpp
+++ b/Source/WebKit2/WebProcess/Notifications/WebNotificationManager.cpp
@@ -249,7 +249,7 @@ void WebNotificationManager::didClickNotification(uint64_t notificationID)
return;
// Indicate that this event is being dispatched in reaction to a user's interaction with a platform notification.
- UserGestureIndicator indicator(DefinitelyProcessingUserGesture);
+ UserGestureIndicator indicator(ProcessingUserGesture);
notification->dispatchClickEvent();
#else
UNUSED_PARAM(notificationID);
diff --git a/Source/WebKit2/WebProcess/Notifications/WebNotificationManager.h b/Source/WebKit2/WebProcess/Notifications/WebNotificationManager.h
index 3b707128d..171e55fc8 100644
--- a/Source/WebKit2/WebProcess/Notifications/WebNotificationManager.h
+++ b/Source/WebKit2/WebProcess/Notifications/WebNotificationManager.h
@@ -69,11 +69,11 @@ public:
private:
// WebProcessSupplement
- virtual void initialize(const WebProcessCreationParameters&) override;
+ void initialize(const WebProcessCreationParameters&) override;
// IPC::MessageReceiver
// Implemented in generated WebNotificationManagerMessageReceiver.cpp
- virtual void didReceiveMessage(IPC::Connection*, IPC::MessageDecoder&) override;
+ void didReceiveMessage(IPC::Connection&, IPC::Decoder&) override;
void didShowNotification(uint64_t notificationID);
void didClickNotification(uint64_t notificationID);