diff options
Diffstat (limited to 'Source/WebKit2/WebProcess/Notifications/NotificationPermissionRequestManager.cpp')
-rw-r--r-- | Source/WebKit2/WebProcess/Notifications/NotificationPermissionRequestManager.cpp | 44 |
1 files changed, 30 insertions, 14 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; |