From cd44dc59cdfc39534aef4d417e9f3c412e3be139 Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Fri, 3 Feb 2012 09:55:33 +0100 Subject: Imported WebKit commit fce473cb4d55aa9fe9d0b0322a2fffecb731b961 (http://svn.webkit.org/repository/webkit/trunk@106560) --- .../Notifications/WebNotificationManagerProxy.cpp | 55 ++++++++++++++++------ 1 file changed, 40 insertions(+), 15 deletions(-) (limited to 'Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.cpp') diff --git a/Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.cpp b/Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.cpp index 7d7c045db..e74ad07b7 100644 --- a/Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.cpp +++ b/Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.cpp @@ -27,6 +27,7 @@ #include "WebNotificationManagerProxy.h" #include "ImmutableArray.h" +#include "ImmutableDictionary.h" #include "WebContext.h" #include "WebNotification.h" #include "WebNotificationManagerMessages.h" @@ -57,26 +58,31 @@ void WebNotificationManagerProxy::invalidate() void WebNotificationManagerProxy::initializeProvider(const WKNotificationProvider *provider) { m_provider.initialize(provider); + m_provider.addNotificationManager(this); } -void WebNotificationManagerProxy::didReceiveMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments) +void WebNotificationManagerProxy::populateCopyOfNotificationPermissions(HashMap& permissions) { - didReceiveWebNotificationManagerProxyMessage(connection, messageID, arguments); + RefPtr knownPermissions = m_provider.notificationPermissions(); + permissions.clear(); + RefPtr knownOrigins = knownPermissions->keys(); + for (size_t i = 0; i < knownOrigins->size(); ++i) { + WebString* origin = knownOrigins->at(i); + permissions.set(origin->string(), knownPermissions->get(origin->string())->value()); + } } -void WebNotificationManagerProxy::didReceiveSyncMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments, OwnPtr& reply) +void WebNotificationManagerProxy::didReceiveMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments) { - didReceiveSyncWebNotificationManagerProxyMessage(connection, messageID, arguments, reply); + didReceiveWebNotificationManagerProxyMessage(connection, messageID, arguments); } -void WebNotificationManagerProxy::show(WebPageProxy* page, const String& title, const String& body, const String& originIdentifier, uint64_t notificationID) +void WebNotificationManagerProxy::show(WebPageProxy* page, const String& title, const String& body, const String& originString, uint64_t notificationID) { if (!isNotificationIDValid(notificationID)) return; - m_provider.addNotificationManager(this); - - RefPtr notification = WebNotification::create(title, body, originIdentifier, notificationID); + RefPtr notification = WebNotification::create(title, body, originString, notificationID); m_notifications.set(notificationID, notification); m_provider.show(page, notification.get()); } @@ -90,7 +96,6 @@ void WebNotificationManagerProxy::cancel(uint64_t notificationID) if (!notification) return; - m_provider.addNotificationManager(this); m_provider.cancel(notification.get()); } @@ -106,12 +111,6 @@ void WebNotificationManagerProxy::didDestroyNotification(uint64_t notificationID m_provider.didDestroyNotification(notification.get()); } -void WebNotificationManagerProxy::notificationPermissionLevel(const String& originIdentifier, uint64_t& permissionLevel) -{ - RefPtr origin = WebSecurityOrigin::create(originIdentifier); - permissionLevel = m_provider.policyForNotificationPermissionAtOrigin(origin.get()); -} - void WebNotificationManagerProxy::providerDidShowNotification(uint64_t notificationID) { if (!m_context) @@ -148,4 +147,30 @@ void WebNotificationManagerProxy::providerDidCloseNotifications(ImmutableArray* m_context->sendToAllProcesses(Messages::WebNotificationManager::DidCloseNotifications(vectorNotificationIDs)); } +void WebNotificationManagerProxy::providerDidUpdateNotificationPolicy(const WebSecurityOrigin* origin, bool allowed) +{ + if (!m_context) + return; + + m_context->sendToAllProcesses(Messages::WebNotificationManager::DidUpdateNotificationDecision(origin->toString(), allowed)); +} + +void WebNotificationManagerProxy::providerDidRemoveNotificationPolicies(ImmutableArray* origins) +{ + if (!m_context) + return; + + size_t size = origins->size(); + if (!size) + return; + + Vector originStrings; + originStrings.reserveInitialCapacity(size); + + for (size_t i = 0; i < size; ++i) + originStrings.append(origins->at(i)->toString()); + + m_context->sendToAllProcesses(Messages::WebNotificationManager::DidRemoveNotificationDecisions(originStrings)); +} + } // namespace WebKit -- cgit v1.2.1