GeolocationPermissionClientQt.cpp [plain text]
#include "config.h"
#include "GeolocationPermissionClientQt.h"
#include "Geolocation.h"
#include "qwebframe.h"
#include "qwebkitglobal.h"
#include "qwebpage.h"
namespace WebCore {
#if ENABLE(GEOLOCATION)
static GeolocationPermissionClientQt* s_geolocationPermission;
GeolocationPermissionClientQt* GeolocationPermissionClientQt::geolocationPermissionClient()
{
if (s_geolocationPermission)
return s_geolocationPermission;
s_geolocationPermission = new GeolocationPermissionClientQt();
return s_geolocationPermission;
}
GeolocationPermissionClientQt::GeolocationPermissionClientQt()
{
}
GeolocationPermissionClientQt::~GeolocationPermissionClientQt()
{
}
void GeolocationPermissionClientQt::requestGeolocationPermissionForFrame(QWebFrame* webFrame, Geolocation* listener)
{
m_pendingPermissionRequests.insert(webFrame, listener);
QWebPage* page = webFrame->page();
emit page->featurePermissionRequested(webFrame, QWebPage::Geolocation);
}
void GeolocationPermissionClientQt::cancelGeolocationPermissionRequestForFrame(QWebFrame* webFrame, Geolocation* listener)
{
m_pendingPermissionRequests.remove(webFrame);
QWebPage* page = webFrame->page();
emit page->featurePermissionRequestCanceled(webFrame, QWebPage::Geolocation);
}
void GeolocationPermissionClientQt::setPermission(QWebFrame* webFrame, QWebPage::PermissionPolicy permission)
{
if (!m_pendingPermissionRequests.contains(webFrame))
return;
Geolocation* listener = m_pendingPermissionRequests.value(webFrame);
if (permission == QWebPage::PermissionGrantedByUser)
listener->setIsAllowed(true);
else if (permission == QWebPage::PermissionDeniedByUser)
listener->setIsAllowed(false);
else
return;
m_pendingPermissionRequests.remove(webFrame);
}
#endif // ENABLE(GEOLOCATION)
}