NotificationManager.h [plain text]
#ifndef NotificationManager_h
#define NotificationManager_h
#if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS)
#include "Notification.h"
#include "NotificationClient.h"
#include "NotificationPermissionCallback.h"
#include "ScriptExecutionContext.h"
#include "SecurityOrigin.h"
#include "VoidCallback.h"
#include <wtf/HashMap.h>
#include <wtf/RefPtr.h>
#include <wtf/Vector.h>
namespace BlackBerry {
namespace WebKit {
class WebPagePrivate;
class NotificationManager {
public:
NotificationManager(WebPagePrivate*);
~NotificationManager();
bool show(WebCore::Notification*);
void cancel(WebCore::Notification*);
void clearNotifications(WebCore::ScriptExecutionContext*);
void notificationObjectDestroyed(WebCore::Notification*);
#if ENABLE(LEGACY_NOTIFICATIONS)
void requestPermission(WebCore::ScriptExecutionContext*, PassRefPtr<WebCore::VoidCallback>);
#endif
#if ENABLE(NOTIFICATIONS)
void requestPermission(WebCore::ScriptExecutionContext*, PassRefPtr<WebCore::NotificationPermissionCallback>);
#endif
void cancelRequestsForPermission(WebCore::ScriptExecutionContext*);
WebCore::NotificationClient::Permission checkPermission(WebCore::ScriptExecutionContext*);
void updatePermission(const String& requestID, bool allowed);
void notificationClicked(const String& notificationID);
void notificationClosed(const String& notificationID);
void notificationError(const String& notificationID);
void notificationShown(const String& notificationID);
private:
void removeNotificationFromContextMap(const String& notificationID, WebCore::Notification*);
WebPagePrivate* m_webPagePrivate;
typedef HashMap<RefPtr<WebCore::Notification>, String> NotificationMap;
NotificationMap m_notificationMap;
typedef HashMap<String, RefPtr<WebCore::Notification> > NotificationIdMap;
NotificationIdMap m_notificationIDMap;
typedef HashMap<RefPtr<WebCore::ScriptExecutionContext>, Vector<String> > NotificationContextMap;
NotificationContextMap m_notificationContextMap;
#if ENABLE(NOTIFICATIONS)
typedef HashMap<String, RefPtr<WebCore::NotificationPermissionCallback> > PermissionCallbackMap;
PermissionCallbackMap m_idToCallbackMap;
#endif
#if ENABLE(LEGACY_NOTIFICATIONS)
typedef HashMap<String, RefPtr<WebCore::VoidCallback> > VoidCallbackMap;
VoidCallbackMap m_idToVoidCallbackMap;
#endif
typedef HashMap<RefPtr<WebCore::SecurityOrigin>, String> OriginMap;
OriginMap m_originToIDMap;
typedef HashMap<String, RefPtr<WebCore::SecurityOrigin> > OriginIdMap;
OriginIdMap m_idToOriginMap;
};
}
}
#endif // ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS)
#endif // NotificationManager_h