NotificationPresenterImpl.cpp [plain text]
#include "config.h"
#include "NotificationPresenterImpl.h"
#if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS)
#include "KURL.h"
#include "Notification.h"
#include "ScriptExecutionContext.h"
#include "SecurityOrigin.h"
#include "WebNotification.h"
#include "WebNotificationPermissionCallback.h"
#include "WebNotificationPresenter.h"
#include "platform/WebURL.h"
#include <wtf/PassRefPtr.h>
using namespace WebCore;
namespace WebKit {
class VoidCallbackClient : public WebNotificationPermissionCallback {
public:
VoidCallbackClient(PassRefPtr<VoidCallback> callback)
: m_callback(callback)
{
}
virtual void permissionRequestComplete()
{
if (m_callback)
m_callback->handleEvent();
delete this;
}
private:
virtual ~VoidCallbackClient() { }
RefPtr<VoidCallback> m_callback;
};
void NotificationPresenterImpl::initialize(WebNotificationPresenter* presenter)
{
m_presenter = presenter;
}
bool NotificationPresenterImpl::isInitialized()
{
return !!m_presenter;
}
bool NotificationPresenterImpl::show(Notification* notification)
{
return m_presenter->show(PassRefPtr<Notification>(notification));
}
void NotificationPresenterImpl::cancel(Notification* notification)
{
m_presenter->cancel(PassRefPtr<Notification>(notification));
}
void NotificationPresenterImpl::notificationObjectDestroyed(Notification* notification)
{
m_presenter->objectDestroyed(PassRefPtr<Notification>(notification));
}
void NotificationPresenterImpl::notificationControllerDestroyed()
{
}
NotificationClient::Permission NotificationPresenterImpl::checkPermission(ScriptExecutionContext* context)
{
int result = m_presenter->checkPermission(WebSecurityOrigin(context->securityOrigin()));
return static_cast<NotificationClient::Permission>(result);
}
void NotificationPresenterImpl::requestPermission(ScriptExecutionContext* context, PassRefPtr<VoidCallback> callback)
{
m_presenter->requestPermission(WebSecurityOrigin(context->securityOrigin()), new VoidCallbackClient(callback));
}
}
#endif // ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS)