WebNotificationManagerProxy.h [plain text]
#ifndef WebNotificationManagerProxy_h
#define WebNotificationManagerProxy_h
#include "APIObject.h"
#include "MessageID.h"
#include "WebNotificationProvider.h"
#include <WebCore/NotificationClient.h>
#include <wtf/HashMap.h>
#include <wtf/OwnPtr.h>
#include <wtf/PassRefPtr.h>
#include <wtf/text/StringHash.h>
namespace CoreIPC {
class ArgumentDecoder;
class ArgumentEncoder;
class Connection;
}
namespace WebKit {
class ImmutableArray;
class WebContext;
class WebPageProxy;
class WebSecurityOrigin;
class WebNotificationManagerProxy : public APIObject {
public:
static const Type APIType = TypeNotificationManager;
static PassRefPtr<WebNotificationManagerProxy> create(WebContext*);
void invalidate();
void clearContext() { m_context = 0; }
void initializeProvider(const WKNotificationProvider*);
void populateCopyOfNotificationPermissions(HashMap<String, bool>&);
void show(WebPageProxy*, const String& title, const String& body, const String& iconURL, const String& tag, const String& originString, uint64_t notificationID);
void providerDidShowNotification(uint64_t notificationID);
void providerDidClickNotification(uint64_t notificationID);
void providerDidCloseNotifications(ImmutableArray* notificationIDs);
void providerDidUpdateNotificationPolicy(const WebSecurityOrigin*, bool allowed);
void providerDidRemoveNotificationPolicies(ImmutableArray* origins);
void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*);
private:
explicit WebNotificationManagerProxy(WebContext*);
virtual Type type() const { return APIType; }
void didReceiveWebNotificationManagerProxyMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*);
void cancel(uint64_t notificationID);
void didDestroyNotification(uint64_t notificationID);
void clearNotifications(const Vector<uint64_t>& notificationIDs);
typedef HashMap<uint64_t, RefPtr<WebNotification> > WebNotificationMap;
WebContext* m_context;
WebNotificationProvider m_provider;
WebNotificationMap m_notifications;
};
}
#endif // WebNotificationManagerProxy_h