WebNotificationClient.h [plain text]
#if ENABLE(NOTIFICATIONS)
#import <WebCore/Notification.h>
#import <WebCore/NotificationClient.h>
#import <wtf/HashMap.h>
#import <wtf/RefPtr.h>
#import <wtf/RetainPtr.h>
@class WebNotification;
@class WebNotificationPolicyListener;
@class WebView;
class WebNotificationClient : public WebCore::NotificationClient {
public:
WebNotificationClient(WebView *);
WebView *webView() { return m_webView; }
uint64_t notificationIDForTesting(WebCore::Notification*);
private:
bool show(WebCore::Notification*) override;
void cancel(WebCore::Notification*) override;
void clearNotifications(WebCore::ScriptExecutionContext*) override;
void notificationObjectDestroyed(WebCore::Notification*) override;
void notificationControllerDestroyed() override;
void requestPermission(WebCore::ScriptExecutionContext*, RefPtr<WebCore::NotificationPermissionCallback>&&) override;
void cancelRequestsForPermission(WebCore::ScriptExecutionContext*) override { }
bool hasPendingPermissionRequests(WebCore::ScriptExecutionContext*) const override;
WebCore::NotificationClient::Permission checkPermission(WebCore::ScriptExecutionContext*) override;
void requestPermission(WebCore::ScriptExecutionContext*, WebNotificationPolicyListener *);
WebView *m_webView;
HashMap<RefPtr<WebCore::Notification>, RetainPtr<WebNotification>> m_notificationMap;
typedef HashMap<RefPtr<WebCore::ScriptExecutionContext>, Vector<RetainPtr<WebNotification>>> NotificationContextMap;
NotificationContextMap m_notificationContextMap;
bool m_everRequestedPermission { false };
};
#endif