WebNotificationManagerProxy.h [plain text]
#ifndef WebNotificationManagerProxy_h
#define WebNotificationManagerProxy_h
#include "APIObject.h"
#include "MessageReceiver.h"
#include "WebContextSupplement.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 WebKit {
class ImmutableArray;
class WebContext;
class WebPageProxy;
class WebSecurityOrigin;
class WebNotificationManagerProxy : public TypedAPIObject<APIObject::TypeNotificationManager>, public WebContextSupplement {
public:
static const char* supplementName();
static PassRefPtr<WebNotificationManagerProxy> create(WebContext*);
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& lang, const String& dir, const String& originString, uint64_t pageNotificationID);
void cancel(WebPageProxy*, uint64_t pageNotificationID);
void clearNotifications(WebPageProxy*);
void clearNotifications(WebPageProxy*, const Vector<uint64_t>& pageNotificationIDs);
void didDestroyNotification(WebPageProxy*, uint64_t pageNotificationID);
void providerDidShowNotification(uint64_t notificationID);
void providerDidClickNotification(uint64_t notificationID);
void providerDidCloseNotifications(ImmutableArray* notificationIDs);
void providerDidUpdateNotificationPolicy(const WebSecurityOrigin*, bool allowed);
void providerDidRemoveNotificationPolicies(ImmutableArray* origins);
using APIObject::ref;
using APIObject::deref;
private:
explicit WebNotificationManagerProxy(WebContext*);
typedef bool (*NotificationFilterFunction)(uint64_t pageID, uint64_t pageNotificationID, uint64_t desiredPageID, const Vector<uint64_t>& desiredPageNotificationIDs);
void clearNotifications(WebPageProxy*, const Vector<uint64_t>& pageNotificationIDs, NotificationFilterFunction);
virtual void contextDestroyed() OVERRIDE;
virtual void refWebContextSupplement() OVERRIDE;
virtual void derefWebContextSupplement() OVERRIDE;
WebNotificationProvider m_provider;
HashMap<uint64_t, pair<uint64_t, uint64_t>> m_globalNotificationMap;
HashMap<pair<uint64_t, uint64_t>, pair<uint64_t, RefPtr<WebNotification>>> m_notifications;
};
}
#endif // WebNotificationManagerProxy_h