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/PassRefPtr.h>
#include <wtf/text/StringHash.h>
namespace API {
class Array;
}
namespace WebKit {
class WebContext;
class WebPageProxy;
class WebSecurityOrigin;
class WebNotificationManagerProxy : public API::ObjectImpl<API::Object::Type::NotificationManager>, public WebContextSupplement {
public:
static const char* supplementName();
static PassRefPtr<WebNotificationManagerProxy> create(WebContext*);
void initializeProvider(const WKNotificationProviderBase*);
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(API::Array* notificationIDs);
void providerDidUpdateNotificationPolicy(const WebSecurityOrigin*, bool allowed);
void providerDidRemoveNotificationPolicies(API::Array* origins);
using API::Object::ref;
using API::Object::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, std::pair<uint64_t, uint64_t>> m_globalNotificationMap;
HashMap<std::pair<uint64_t, uint64_t>, std::pair<uint64_t, RefPtr<WebNotification>>> m_notifications;
};
}
#endif // WebNotificationManagerProxy_h