Title: [107914] trunk/Source
Revision
107914
Author
hausm...@webkit.org
Date
2012-02-16 02:28:39 -0800 (Thu, 16 Feb 2012)

Log Message

[Qt][WK2] Split QWebPermissionRequest into QWebSecurityOrigin
https://bugs.webkit.org/show_bug.cgi?id=73215

Patch by Adenilson Cavalcanti <cavalcan...@gmail.com> on 2012-02-16
Reviewed by Kenneth Rohde Christiansen.

Source/WebKit/qt:

Adding a class to access security information data
(e.g. port/scheme/etc),
while allowing it to be handled in QML side.

* declarative/plugin.cpp:
(WebKitQmlPlugin::registerTypes):

Source/WebKit2:

Introducing a new class to expose security origin information
(port/scheme/etc), useful for inspecting the origin of permission
requests.

* Target.pri:
* UIProcess/API/qt/qtwebsecurityorigin.cpp: Added.
(QtWebSecurityOrigin::QtWebSecurityOrigin):
(QtWebSecurityOrigin::~QtWebSecurityOrigin):
(QtWebSecurityOrigin::host):
(QtWebSecurityOrigin::scheme):
(QtWebSecurityOrigin::path):
(QtWebSecurityOrigin::port):
(QtWebSecurityOrigin::setHost):
(QtWebSecurityOrigin::setScheme):
(QtWebSecurityOrigin::setPath):
(QtWebSecurityOrigin::setPort):
* UIProcess/API/qt/qtwebsecurityorigin_p.h: Added.
* UIProcess/API/qt/tests/qmltests/WebView/tst_origin.qml: Added.
* UIProcess/API/qt/qwebpermissionrequest.cpp:
(QWebPermissionRequestPrivate::QWebPermissionRequestPrivate):
(QWebPermissionRequest::securityOrigin):
* UIProcess/API/qt/qwebpermissionrequest_p.h:
* UIProcess/API/qt/tests/qmltests/qmltests.pro:

Modified Paths

Added Paths

Diff

Modified: trunk/Source/WebKit/qt/ChangeLog (107913 => 107914)


--- trunk/Source/WebKit/qt/ChangeLog	2012-02-16 10:06:38 UTC (rev 107913)
+++ trunk/Source/WebKit/qt/ChangeLog	2012-02-16 10:28:39 UTC (rev 107914)
@@ -1,3 +1,17 @@
+2012-02-16  Adenilson Cavalcanti  <cavalcan...@gmail.com>
+
+        [Qt][WK2] Split QWebPermissionRequest into QWebSecurityOrigin
+        https://bugs.webkit.org/show_bug.cgi?id=73215
+
+        Reviewed by Kenneth Rohde Christiansen.
+
+        Adding a class to access security information data
+        (e.g. port/scheme/etc),
+        while allowing it to be handled in QML side.
+
+        * declarative/plugin.cpp:
+        (WebKitQmlPlugin::registerTypes):
+
 2012-02-15  Sadrul Habib Chowdhury  <sad...@chromium.org>
 
         Notify ChromeClient when touch-event handlers are installed/removed.

Modified: trunk/Source/WebKit/qt/declarative/plugin.cpp (107913 => 107914)


--- trunk/Source/WebKit/qt/declarative/plugin.cpp	2012-02-16 10:06:38 UTC (rev 107913)
+++ trunk/Source/WebKit/qt/declarative/plugin.cpp	2012-02-16 10:28:39 UTC (rev 107914)
@@ -25,6 +25,7 @@
 #if defined(HAVE_WEBKIT2)
 #include "qquickwebpage_p.h"
 #include "qquickwebview_p.h"
+#include "qtwebsecurityorigin_p.h"
 #include "qwebiconimageprovider_p.h"
 #include "qwebnavigationrequest_p.h"
 #include "qwebpermissionrequest_p.h"
@@ -65,6 +66,8 @@
         qmlRegisterUncreatableType<QNetworkReply>(uri, 3, 0, "NetworkReply", QObject::tr("Cannot create separate instance of NetworkReply"));
         qmlRegisterUncreatableType<QWebPermissionRequest>(uri, 3, 0, "PermissionRequest", QObject::tr("Cannot create separate instance of PermissionRequest"));
         qmlRegisterUncreatableType<QWebNavigationRequest>(uri, 3, 0, "NavigationRequest", QObject::tr("Cannot create separate instance of NavigationRequest"));
+        qmlRegisterUncreatableType<QtWebSecurityOrigin>(uri, 3, 0, "SecurityOrigin", QObject::tr("Cannot create separate instance of SecurityOrigin"));
+
 #endif
     }
 };

Modified: trunk/Source/WebKit2/ChangeLog (107913 => 107914)


--- trunk/Source/WebKit2/ChangeLog	2012-02-16 10:06:38 UTC (rev 107913)
+++ trunk/Source/WebKit2/ChangeLog	2012-02-16 10:28:39 UTC (rev 107914)
@@ -1,3 +1,34 @@
+2012-02-16  Adenilson Cavalcanti  <cavalcan...@gmail.com>
+
+        [Qt][WK2] Split QWebPermissionRequest into QWebSecurityOrigin
+        https://bugs.webkit.org/show_bug.cgi?id=73215
+
+        Reviewed by Kenneth Rohde Christiansen.
+
+        Introducing a new class to expose security origin information
+        (port/scheme/etc), useful for inspecting the origin of permission
+        requests.
+
+        * Target.pri:
+        * UIProcess/API/qt/qtwebsecurityorigin.cpp: Added.
+        (QtWebSecurityOrigin::QtWebSecurityOrigin):
+        (QtWebSecurityOrigin::~QtWebSecurityOrigin):
+        (QtWebSecurityOrigin::host):
+        (QtWebSecurityOrigin::scheme):
+        (QtWebSecurityOrigin::path):
+        (QtWebSecurityOrigin::port):
+        (QtWebSecurityOrigin::setHost):
+        (QtWebSecurityOrigin::setScheme):
+        (QtWebSecurityOrigin::setPath):
+        (QtWebSecurityOrigin::setPort):
+        * UIProcess/API/qt/qtwebsecurityorigin_p.h: Added.
+        * UIProcess/API/qt/tests/qmltests/WebView/tst_origin.qml: Added.
+        * UIProcess/API/qt/qwebpermissionrequest.cpp:
+        (QWebPermissionRequestPrivate::QWebPermissionRequestPrivate):
+        (QWebPermissionRequest::securityOrigin):
+        * UIProcess/API/qt/qwebpermissionrequest_p.h:
+        * UIProcess/API/qt/tests/qmltests/qmltests.pro:
+
 2012-02-16  Patrick Gansterer  <par...@webkit.org>
 
         [CMake] Add missing include directories.

Modified: trunk/Source/WebKit2/Target.pri (107913 => 107914)


--- trunk/Source/WebKit2/Target.pri	2012-02-16 10:06:38 UTC (rev 107913)
+++ trunk/Source/WebKit2/Target.pri	2012-02-16 10:28:39 UTC (rev 107914)
@@ -173,6 +173,7 @@
     UIProcess/API/qt/qwebdownloaditem_p.h \
     UIProcess/API/qt/qwebdownloaditem_p_p.h \
     UIProcess/API/qt/qwebpermissionrequest_p.h \
+    UIProcess/API/qt/qtwebsecurityorigin_p.h \
     UIProcess/API/qt/qwebnavigationrequest_p.h \
     UIProcess/API/qt/qquickwebpage_p.h \
     UIProcess/API/qt/qquickwebpage_p_p.h \
@@ -501,6 +502,7 @@
     UIProcess/API/cpp/qt/WKURLQt.cpp \
     UIProcess/API/qt/qwebdownloaditem.cpp \
     UIProcess/API/qt/qwebpermissionrequest.cpp \
+    UIProcess/API/qt/qtwebsecurityorigin.cpp \
     UIProcess/API/qt/qwebnavigationrequest.cpp \
     UIProcess/API/qt/qquickwebpage.cpp \
     UIProcess/API/qt/qwebnavigationhistory.cpp \

Added: trunk/Source/WebKit2/UIProcess/API/qt/qtwebsecurityorigin.cpp (0 => 107914)


--- trunk/Source/WebKit2/UIProcess/API/qt/qtwebsecurityorigin.cpp	                        (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/qt/qtwebsecurityorigin.cpp	2012-02-16 10:28:39 UTC (rev 107914)
@@ -0,0 +1,60 @@
+/*
+    Copyright (C) 2012 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 "qtwebsecurityorigin_p.h"
+
+#include <QtCore/QFileInfo>
+#include <QtCore/QStringList>
+#include <SchemeRegistry.h>
+#include <SecurityOrigin.h>
+#include <WebKit2/WKBase.h>
+#include <WebKit2/WKRetainPtr.h>
+#include <WebKit2/WKSecurityOrigin.h>
+
+using namespace WebCore;
+
+QtWebSecurityOrigin::QtWebSecurityOrigin(QObject* parent)
+    : QObject(parent)
+{
+}
+
+QtWebSecurityOrigin::~QtWebSecurityOrigin()
+{
+}
+
+QString QtWebSecurityOrigin::host() const
+{
+    return m_url.host();
+}
+
+QString QtWebSecurityOrigin::scheme() const
+{
+    return m_url.scheme();
+}
+
+QString QtWebSecurityOrigin::path() const
+{
+    return m_url.path();
+}
+
+int QtWebSecurityOrigin::port() const
+{
+    return m_url.port();
+}

Added: trunk/Source/WebKit2/UIProcess/API/qt/qtwebsecurityorigin_p.h (0 => 107914)


--- trunk/Source/WebKit2/UIProcess/API/qt/qtwebsecurityorigin_p.h	                        (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/qt/qtwebsecurityorigin_p.h	2012-02-16 10:28:39 UTC (rev 107914)
@@ -0,0 +1,57 @@
+/*
+    Copyright (C) 2012 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.
+*/
+#ifndef qtwebsecurityorigin_p_h
+#define qtwebsecurityorigin_p_h
+
+#include "qwebkitglobal.h"
+
+#include <QtCore/QDataStream>
+#include <QtCore/QObject>
+#include <QtCore/QString>
+#include <QtCore/QUrl>
+#include <QtCore/qshareddata.h>
+
+class QWEBKIT_EXPORT QtWebSecurityOrigin : public QObject {
+    Q_OBJECT
+    Q_PROPERTY(QString scheme READ scheme CONSTANT)
+    Q_PROPERTY(QString host READ host CONSTANT)
+    Q_PROPERTY(int port READ port CONSTANT)
+    Q_PROPERTY(QString path READ path CONSTANT)
+
+public:
+    QtWebSecurityOrigin(QObject* parent = 0);
+    virtual ~QtWebSecurityOrigin();
+
+    QString scheme() const;
+    QString host() const;
+    int port() const;
+    QString path() const;
+
+    // Used to set security information in a permission request event (e.g.
+    // geolocation permission)
+    void setScheme(const QString& scheme) { m_url.setScheme(scheme); }
+    void setHost(const QString& host) { m_url.setHost(host); }
+    void setPath(const QString& path) { m_url.setPath(path); }
+    void setPort(int port) { m_url.setPort(port); }
+
+private:
+    QUrl m_url;
+};
+
+#endif // qtwebsecurityorigin_p_h

Modified: trunk/Source/WebKit2/UIProcess/API/qt/qwebpermissionrequest.cpp (107913 => 107914)


--- trunk/Source/WebKit2/UIProcess/API/qt/qwebpermissionrequest.cpp	2012-02-16 10:06:38 UTC (rev 107913)
+++ trunk/Source/WebKit2/UIProcess/API/qt/qwebpermissionrequest.cpp	2012-02-16 10:28:39 UTC (rev 107914)
@@ -34,7 +34,15 @@
         , request(permissionRequest)
         , allow(false)
     {
+        WKRetainPtr<WKStringRef> url = ""
+        securityInfo.setScheme(WKStringCopyQString(url.get()));
+
+        WKRetainPtr<WKStringRef> host = adoptWK(WKSecurityOriginCopyHost(origin.get()));
+        securityInfo.setHost(WKStringCopyQString(host.get()));
+
+        securityInfo.setPort(static_cast<int>(WKSecurityOriginGetPort(origin.get())));
     }
+
     ~QWebPermissionRequestPrivate()
     {
     }
@@ -42,6 +50,7 @@
     WKRetainPtr<WKSecurityOriginRef> origin;
     QWebPermissionRequest::RequestType type;
     WKRetainPtr<WKGeolocationPermissionRequestRef> request;
+    QtWebSecurityOrigin securityInfo;
     bool allow;
 };
 
@@ -88,19 +97,8 @@
     return d->allow;
 }
 
-QString QWebPermissionRequest::scheme() const
+QtWebSecurityOrigin* QWebPermissionRequest::securityOrigin()
 {
-    WKRetainPtr<WKStringRef> url = ""
-    return WKStringCopyQString(url.get());
+    return &(d->securityInfo);
 }
 
-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()));
-}

Modified: trunk/Source/WebKit2/UIProcess/API/qt/qwebpermissionrequest_p.h (107913 => 107914)


--- trunk/Source/WebKit2/UIProcess/API/qt/qwebpermissionrequest_p.h	2012-02-16 10:06:38 UTC (rev 107913)
+++ trunk/Source/WebKit2/UIProcess/API/qt/qwebpermissionrequest_p.h	2012-02-16 10:28:39 UTC (rev 107914)
@@ -20,6 +20,7 @@
 #ifndef qwebpermissionrequest_p_h
 #define qwebpermissionrequest_p_h
 
+#include "qtwebsecurityorigin_p.h"
 #include "qwebkitglobal.h"
 
 #include <QtCore/QObject>
@@ -32,10 +33,8 @@
 class QWEBKIT_EXPORT QWebPermissionRequest : public QObject {
     Q_OBJECT
     Q_PROPERTY(bool allow READ allow WRITE setAllow)
-    Q_PROPERTY(RequestType type READ type)
-    Q_PROPERTY(QString scheme READ scheme)
-    Q_PROPERTY(QString host READ host)
-    Q_PROPERTY(int port READ port)
+    Q_PROPERTY(RequestType type READ type CONSTANT)
+    Q_PROPERTY(QtWebSecurityOrigin* origin READ securityOrigin)
     Q_ENUMS(RequestType)
 
 public:
@@ -48,12 +47,10 @@
 
     RequestType type() const;
     bool allow() const;
-    QString scheme() const;
-    QString host() const;
-    int port() const;
 
 public Q_SLOTS:
     void setAllow(bool);
+    QtWebSecurityOrigin* securityOrigin();
 
 private:
     friend class QWebPermissionRequestPrivate;

Added: trunk/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_origin.qml (0 => 107914)


--- trunk/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_origin.qml	                        (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_origin.qml	2012-02-16 10:28:39 UTC (rev 107914)
@@ -0,0 +1,57 @@
+import QtQuick 2.0
+import QtTest 1.0
+import QtWebKit 3.0
+import QtWebKit.experimental 1.0
+
+WebView {
+    id: webView
+    width: 200
+    height: 200
+
+    property bool success: true
+    property int port: 0
+    property string scheme: "file"
+
+    SignalSpy {
+        id: spy
+        target: experimental
+        signalName: "permissionRequested"
+    }
+
+    experimental.onPermissionRequested: {
+        if (permission.origin.port != webView.port) {
+            console.log("Expected port value should be zero.")
+            webView.success = false
+        }
+
+        if (permission.origin.scheme != webView.scheme) {
+            console.log("Expected scheme should be \"file\".")
+            webView.success = false
+        }
+    }
+
+    TestCase {
+        name: "WebViewSecurityOrigin"
+
+        // Delayed windowShown to workaround problems with Qt5 in debug mode.
+        when: false
+        Timer {
+            running: parent.windowShown
+            repeat: false
+            interval: 1
+            onTriggered: parent.when = true
+        }
+
+        function init() {
+            spy.clear()
+        }
+
+        function test_permissionRequest() {
+            compare(spy.count, 0)
+            webView.load(Qt.resolvedUrl("../common/geolocation.html"))
+            spy.wait()
+            compare(spy.count, 1)
+            compare(webView.success, true)
+        }
+    }
+}

Modified: trunk/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView.pro (107913 => 107914)


--- trunk/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView.pro	2012-02-16 10:06:38 UTC (rev 107913)
+++ trunk/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView.pro	2012-02-16 10:28:39 UTC (rev 107914)
@@ -27,4 +27,5 @@
     WebView/tst_preferences.qml \
     WebView/tst_properties.qml \
     WebView/tst_titleChanged.qml \
-    WebView/tst_applicationScheme.qml
+    WebView/tst_applicationScheme.qml \
+    WebView/tst_origin.qml
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to