summaryrefslogtreecommitdiff
path: root/Source/WebKit2/UIProcess/API/qt/qwebpermissionrequest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit2/UIProcess/API/qt/qwebpermissionrequest.cpp')
-rw-r--r--Source/WebKit2/UIProcess/API/qt/qwebpermissionrequest.cpp106
1 files changed, 106 insertions, 0 deletions
diff --git a/Source/WebKit2/UIProcess/API/qt/qwebpermissionrequest.cpp b/Source/WebKit2/UIProcess/API/qt/qwebpermissionrequest.cpp
new file mode 100644
index 000000000..16a438560
--- /dev/null
+++ b/Source/WebKit2/UIProcess/API/qt/qwebpermissionrequest.cpp
@@ -0,0 +1,106 @@
+/*
+ Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#include "config.h"
+
+#include "qwebpermissionrequest_p.h"
+
+#include "WKStringQt.h"
+#include <WebKit2/WKBase.h>
+#include <WebKit2/WKRetainPtr.h>
+
+
+class QWebPermissionRequestPrivate : public QSharedData {
+public:
+ QWebPermissionRequestPrivate(WKSecurityOriginRef securityOrigin, WKGeolocationPermissionRequestRef permissionRequest)
+ : origin(securityOrigin)
+ , type(QWebPermissionRequest::Geolocation)
+ , request(permissionRequest)
+ , allow(false)
+ {
+ }
+ ~QWebPermissionRequestPrivate()
+ {
+ }
+
+ WKRetainPtr<WKSecurityOriginRef> origin;
+ QWebPermissionRequest::RequestType type;
+ WKRetainPtr<WKGeolocationPermissionRequestRef> request;
+ bool allow;
+};
+
+QWebPermissionRequest* QWebPermissionRequest::create(WKSecurityOriginRef origin, WKGeolocationPermissionRequestRef request)
+{
+ return new QWebPermissionRequest(origin, request);
+}
+
+QWebPermissionRequest::QWebPermissionRequest(WKSecurityOriginRef securityOrigin, WKGeolocationPermissionRequestRef permissionRequest, QObject* parent)
+ : QObject(parent)
+ , d(new QWebPermissionRequestPrivate(securityOrigin, permissionRequest))
+{
+}
+
+QWebPermissionRequest::~QWebPermissionRequest()
+{
+}
+
+QWebPermissionRequest::RequestType QWebPermissionRequest::type() const
+{
+ return d->type;
+}
+
+void QWebPermissionRequest::setAllow(bool accepted)
+{
+ d->allow = accepted;
+ switch (type()) {
+ case Geolocation: {
+ if (accepted)
+ WKGeolocationPermissionRequestAllow(d->request.get());
+ else
+ WKGeolocationPermissionRequestDeny(d->request.get());
+ break;
+ }
+ default:
+ ASSERT_NOT_REACHED();
+ }
+
+ deleteLater();
+}
+
+bool QWebPermissionRequest::allow() const
+{
+ return d->allow;
+}
+
+QString QWebPermissionRequest::scheme() const
+{
+ WKRetainPtr<WKStringRef> url = adoptWK(WKSecurityOriginCopyProtocol(d->origin.get()));
+ return WKStringCopyQString(url.get());
+}
+
+QString QWebPermissionRequest::host() const
+{
+ WKRetainPtr<WKStringRef> origin = adoptWK(WKSecurityOriginCopyHost(d->origin.get()));
+ return WKStringCopyQString(origin.get());
+}
+
+int QWebPermissionRequest::port() const
+{
+ return static_cast<int>(WKSecurityOriginGetPort(d->origin.get()));
+}