NotificationPermissionRequestManager.h [plain text]
#ifndef NotificationPermissionRequestManager_h
#define NotificationPermissionRequestManager_h
#include <WebCore/NotificationClient.h>
#include <WebCore/NotificationPermissionCallback.h>
#include <WebCore/VoidCallback.h>
#include <wtf/HashMap.h>
#include <wtf/RefCounted.h>
#include <wtf/RefPtr.h>
namespace WebCore {
class Notification;
class SecurityOrigin;
}
namespace WebKit {
class WebPage;
class NotificationPermissionRequestManager : public RefCounted<NotificationPermissionRequestManager> {
public:
static PassRefPtr<NotificationPermissionRequestManager> create(WebPage*);
#if ENABLE(NOTIFICATIONS)
void startRequest(WebCore::SecurityOrigin*, PassRefPtr<WebCore::NotificationPermissionCallback>);
#endif
#if ENABLE(LEGACY_NOTIFICATIONS)
void startRequest(WebCore::SecurityOrigin*, PassRefPtr<WebCore::VoidCallback>);
#endif
void cancelRequest(WebCore::SecurityOrigin*);
WebCore::NotificationClient::Permission permissionLevel(WebCore::SecurityOrigin*);
void didReceiveNotificationPermissionDecision(uint64_t notificationID, bool allowed);
private:
NotificationPermissionRequestManager(WebPage*);
#if ENABLE(NOTIFICATIONS)
HashMap<uint64_t, RefPtr<WebCore::NotificationPermissionCallback> > m_idToCallbackMap;
#endif
#if ENABLE(LEGACY_NOTIFICATIONS)
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;
WebPage* m_page;
};
inline bool isRequestIDValid(uint64_t id)
{
return id && id != static_cast<uint64_t>(-1);
}
}
#endif // NotificationPermissionRequestManager_h