diff options
author | Konstantin Tokarev <annulen@yandex.ru> | 2016-08-25 19:20:41 +0300 |
---|---|---|
committer | Konstantin Tokarev <annulen@yandex.ru> | 2017-02-02 12:30:55 +0000 |
commit | 6882a04fb36642862b11efe514251d32070c3d65 (patch) | |
tree | b7959826000b061fd5ccc7512035c7478742f7b0 /Source/WebKit2/WebProcess/Notifications | |
parent | ab6df191029eeeb0b0f16f127d553265659f739e (diff) | |
download | qtwebkit-6882a04fb36642862b11efe514251d32070c3d65.tar.gz |
Imported QtWebKit TP3 (git b57bc6801f1876c3220d5a4bfea33d620d477443)
Change-Id: I3b1d8a2808782c9f34d50240000e20cb38d3680f
Reviewed-by: Konstantin Tokarev <annulen@yandex.ru>
Diffstat (limited to 'Source/WebKit2/WebProcess/Notifications')
5 files changed, 44 insertions, 27 deletions
diff --git a/Source/WebKit2/WebProcess/Notifications/NotificationPermissionRequestManager.cpp b/Source/WebKit2/WebProcess/Notifications/NotificationPermissionRequestManager.cpp index ab19b4e7b..15a5bbaa9 100644 --- a/Source/WebKit2/WebProcess/Notifications/NotificationPermissionRequestManager.cpp +++ b/Source/WebKit2/WebProcess/Notifications/NotificationPermissionRequestManager.cpp @@ -52,18 +52,21 @@ 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) @@ -84,7 +87,7 @@ void NotificationPermissionRequestManager::startRequest(SecurityOrigin* origin, #endif #if ENABLE(LEGACY_NOTIFICATIONS) -void NotificationPermissionRequestManager::startRequest(SecurityOrigin* origin, PassRefPtr<VoidCallback> callback) +void NotificationPermissionRequestManager::startRequest(SecurityOrigin* origin, PassRefPtr<WebCore::VoidCallback> callback) { NotificationClient::Permission permission = permissionLevel(origin); if (permission != NotificationClient::PermissionNotAllowed) { @@ -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()) + 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 153ab2118..70827d60b 100644 --- a/Source/WebKit2/WebProcess/Notifications/NotificationPermissionRequestManager.h +++ b/Source/WebKit2/WebProcess/Notifications/NotificationPermissionRequestManager.h @@ -47,7 +47,7 @@ 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>); @@ -56,6 +56,7 @@ public: void startRequest(WebCore::SecurityOrigin*, PassRefPtr<WebCore::VoidCallback>); #endif void cancelRequest(WebCore::SecurityOrigin*); + bool hasPendingPermissionRequests(WebCore::SecurityOrigin*) const; WebCore::NotificationClient::Permission permissionLevel(WebCore::SecurityOrigin*); @@ -69,13 +70,13 @@ private: NotificationPermissionRequestManager(WebPage*); #if ENABLE(NOTIFICATIONS) - HashMap<uint64_t, RefPtr<WebCore::NotificationPermissionCallback> > m_idToCallbackMap; + HashMap<uint64_t, RefPtr<WebCore::NotificationPermissionCallback>> m_idToCallbackMap; #endif #if ENABLE(LEGACY_NOTIFICATIONS) - HashMap<uint64_t, RefPtr<WebCore::VoidCallback> > m_idToVoidCallbackMap; + HashMap<uint64_t, RefPtr<WebCore::VoidCallback>> m_idToVoidCallbackMap; #endif HashMap<RefPtr<WebCore::SecurityOrigin>, uint64_t> m_originToIDMap; - HashMap<uint64_t, RefPtr<WebCore::SecurityOrigin> > m_idToOriginMap; + HashMap<uint64_t, RefPtr<WebCore::SecurityOrigin>> m_idToOriginMap; #if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS) WebPage* m_page; diff --git a/Source/WebKit2/WebProcess/Notifications/WebNotificationManager.cpp b/Source/WebKit2/WebProcess/Notifications/WebNotificationManager.cpp index 6423ff64a..3e7421a1e 100644 --- a/Source/WebKit2/WebProcess/Notifications/WebNotificationManager.cpp +++ b/Source/WebKit2/WebProcess/Notifications/WebNotificationManager.cpp @@ -64,7 +64,7 @@ WebNotificationManager::WebNotificationManager(WebProcess* process) : m_process(process) { #if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS) - m_process->addMessageReceiver(Messages::WebNotificationManager::messageReceiverName(), this); + m_process->addMessageReceiver(Messages::WebNotificationManager::messageReceiverName(), *this); #endif } @@ -141,7 +141,7 @@ uint64_t WebNotificationManager::notificationIDForTesting(Notification* notifica bool WebNotificationManager::show(Notification* notification, WebPage* page) { #if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS) - if (!notification || !page->corePage()->settings()->notificationsEnabled()) + if (!notification || !page->corePage()->settings().notificationsEnabled()) return false; uint64_t notificationID = generateNotificationID(); @@ -167,7 +167,7 @@ bool WebNotificationManager::show(Notification* notification, WebPage* page) void WebNotificationManager::cancel(Notification* notification, WebPage* page) { #if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS) - if (!notification || !page->corePage()->settings()->notificationsEnabled()) + if (!notification || !page->corePage()->settings().notificationsEnabled()) return; uint64_t notificationID = m_notificationMap.get(notification); diff --git a/Source/WebKit2/WebProcess/Notifications/WebNotificationManager.h b/Source/WebKit2/WebProcess/Notifications/WebNotificationManager.h index bc9eb8c69..807e52ca0 100644 --- a/Source/WebKit2/WebProcess/Notifications/WebNotificationManager.h +++ b/Source/WebKit2/WebProcess/Notifications/WebNotificationManager.h @@ -45,7 +45,7 @@ namespace WebKit { class WebPage; class WebProcess; -class WebNotificationManager : public WebProcessSupplement, public CoreIPC::MessageReceiver { +class WebNotificationManager : public WebProcessSupplement, public IPC::MessageReceiver { WTF_MAKE_NONCOPYABLE(WebNotificationManager); public: explicit WebNotificationManager(WebProcess*); @@ -69,11 +69,11 @@ public: private: // WebProcessSupplement - virtual void initialize(const WebProcessCreationParameters&) OVERRIDE; + virtual void initialize(const WebProcessCreationParameters&) override; - // CoreIPC::MessageReceiver + // IPC::MessageReceiver // Implemented in generated WebNotificationManagerMessageReceiver.cpp - virtual void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageDecoder&) OVERRIDE; + virtual void didReceiveMessage(IPC::Connection&, IPC::MessageDecoder&) override; void didShowNotification(uint64_t notificationID); void didClickNotification(uint64_t notificationID); @@ -90,10 +90,10 @@ private: typedef HashMap<RefPtr<WebCore::Notification>, uint64_t> NotificationMap; NotificationMap m_notificationMap; - typedef HashMap<uint64_t, RefPtr<WebCore::Notification> > NotificationIDMap; + typedef HashMap<uint64_t, RefPtr<WebCore::Notification>> NotificationIDMap; NotificationIDMap m_notificationIDMap; - typedef HashMap<RefPtr<WebCore::ScriptExecutionContext>, Vector<uint64_t> > NotificationContextMap; + typedef HashMap<RefPtr<WebCore::ScriptExecutionContext>, Vector<uint64_t>> NotificationContextMap; NotificationContextMap m_notificationContextMap; HashMap<String, bool> m_permissionsMap; diff --git a/Source/WebKit2/WebProcess/Notifications/WebNotificationManager.messages.in b/Source/WebKit2/WebProcess/Notifications/WebNotificationManager.messages.in index b88f26c9e..a2e623c32 100644 --- a/Source/WebKit2/WebProcess/Notifications/WebNotificationManager.messages.in +++ b/Source/WebKit2/WebProcess/Notifications/WebNotificationManager.messages.in @@ -24,6 +24,6 @@ messages -> WebNotificationManager { DidShowNotification(uint64_t notificationID); DidClickNotification(uint64_t notificationID); DidCloseNotifications(Vector<uint64_t> notificationIDs); - DidUpdateNotificationDecision(WTF::String originString, bool allowed); - DidRemoveNotificationDecisions(Vector<WTF::String> originStrings); + DidUpdateNotificationDecision(String originString, bool allowed); + DidRemoveNotificationDecisions(Vector<String> originStrings); } |