Title: [154724] trunk/Source
Revision
154724
Author
commit-qu...@webkit.org
Date
2013-08-28 00:24:46 -0700 (Wed, 28 Aug 2013)

Log Message

Add a 'isMainFrame' parameter to QWebNavigationRequest.
https://bugs.webkit.org/show_bug.cgi?id=118860

Patch by Alexandre Abreu <alexandre.ab...@canonical.com> on 2013-08-28
Reviewed by Simon Hausmann.

* UIProcess/API/qt/qwebnavigationrequest.cpp:
(QWebNavigationRequestPrivate::QWebNavigationRequestPrivate):
(QWebNavigationRequest::QWebNavigationRequest):
(QWebNavigationRequest::navigationType):
(QWebNavigationRequest::isMainFrame):
* UIProcess/API/qt/qwebnavigationrequest_p.h:
* UIProcess/API/qt/tests/publicapi/tst_publicapi.cpp:
* UIProcess/qt/QtWebPagePolicyClient.cpp:
(WebKit::QtWebPagePolicyClient::decidePolicyForNavigationAction):
* UIProcess/qt/QtWebPagePolicyClient.h:

Modified Paths

Diff

Modified: trunk/Source/WebKit/qt/declarative/plugin.cpp (154723 => 154724)


--- trunk/Source/WebKit/qt/declarative/plugin.cpp	2013-08-28 07:24:26 UTC (rev 154723)
+++ trunk/Source/WebKit/qt/declarative/plugin.cpp	2013-08-28 07:24:46 UTC (rev 154724)
@@ -57,7 +57,7 @@
         qmlRegisterType<QQuickWebView>(uri, 3, 0, "WebView");
         qmlRegisterUncreatableType<QQuickWebPage>(uri, 3, 0, "WebPage", QObject::tr("Cannot create separate instance of WebPage, use WebView"));
         qmlRegisterUncreatableType<QNetworkReply>(uri, 3, 0, "NetworkReply", QObject::tr("Cannot create separate instance of NetworkReply"));
-        qmlRegisterUncreatableType<QWebNavigationRequest>(uri, 3, 0, "NavigationRequest", QObject::tr("Cannot create separate instance of NavigationRequest"));
+        qmlRegisterUncreatableType<QWebNavigationRequest, 1>(uri, 3, 1, "NavigationRequest", QObject::tr("Cannot create separate instance of NavigationRequest"));
         qmlRegisterUncreatableType<QWebLoadRequest>(uri, 3, 0, "WebLoadRequest", QObject::tr("Cannot create separate instance of WebLoadRequest"));
 #endif
     }

Modified: trunk/Source/WebKit2/ChangeLog (154723 => 154724)


--- trunk/Source/WebKit2/ChangeLog	2013-08-28 07:24:26 UTC (rev 154723)
+++ trunk/Source/WebKit2/ChangeLog	2013-08-28 07:24:46 UTC (rev 154724)
@@ -1,3 +1,21 @@
+2013-08-28  Alexandre Abreu  <alexandre.ab...@canonical.com>
+
+        Add a 'isMainFrame' parameter to QWebNavigationRequest.
+        https://bugs.webkit.org/show_bug.cgi?id=118860
+
+        Reviewed by Simon Hausmann.
+
+        * UIProcess/API/qt/qwebnavigationrequest.cpp:
+        (QWebNavigationRequestPrivate::QWebNavigationRequestPrivate):
+        (QWebNavigationRequest::QWebNavigationRequest):
+        (QWebNavigationRequest::navigationType):
+        (QWebNavigationRequest::isMainFrame):
+        * UIProcess/API/qt/qwebnavigationrequest_p.h:
+        * UIProcess/API/qt/tests/publicapi/tst_publicapi.cpp:
+        * UIProcess/qt/QtWebPagePolicyClient.cpp:
+        (WebKit::QtWebPagePolicyClient::decidePolicyForNavigationAction):
+        * UIProcess/qt/QtWebPagePolicyClient.h:
+
 2013-08-27  Luciano Wolf  <luciano.w...@openbossa.org>
 
         100% cpu usage for "transition: opacity" animation

Modified: trunk/Source/WebKit2/UIProcess/API/qt/qwebnavigationrequest.cpp (154723 => 154724)


--- trunk/Source/WebKit2/UIProcess/API/qt/qwebnavigationrequest.cpp	2013-08-28 07:24:26 UTC (rev 154723)
+++ trunk/Source/WebKit2/UIProcess/API/qt/qwebnavigationrequest.cpp	2013-08-28 07:24:46 UTC (rev 154724)
@@ -25,12 +25,13 @@
 
 class QWebNavigationRequestPrivate {
 public:
-    QWebNavigationRequestPrivate(const QUrl& url, Qt::MouseButton mouseButton, Qt::KeyboardModifiers keyboardModifiers, QQuickWebView::NavigationType navigationType)
+    QWebNavigationRequestPrivate(const QUrl& url, Qt::MouseButton mouseButton, Qt::KeyboardModifiers keyboardModifiers, QQuickWebView::NavigationType navigationType, bool isMainFrame)
         : url(url)
         , mouseButton(mouseButton)
         , keyboardModifiers(keyboardModifiers)
         , action(QQuickWebView::AcceptRequest)
         , navigationType(navigationType)
+        , isMainFrame(isMainFrame)
     {
     }
 
@@ -43,11 +44,12 @@
     Qt::KeyboardModifiers keyboardModifiers;
     QQuickWebView::NavigationRequestAction action;
     QQuickWebView::NavigationType navigationType;
+    bool isMainFrame;
 };
 
-QWebNavigationRequest::QWebNavigationRequest(const QUrl& url, Qt::MouseButton mouseButton, Qt::KeyboardModifiers keyboardModifiers, QQuickWebView::NavigationType navigationType, QObject* parent)
+QWebNavigationRequest::QWebNavigationRequest(const QUrl& url, Qt::MouseButton mouseButton, Qt::KeyboardModifiers keyboardModifiers, QQuickWebView::NavigationType navigationType, bool isMainFrame, QObject* parent)
     : QObject(parent)
-    , d(new QWebNavigationRequestPrivate(url, mouseButton, keyboardModifiers, navigationType))
+    , d(new QWebNavigationRequestPrivate(url, mouseButton, keyboardModifiers, navigationType, isMainFrame))
 {
 }
 
@@ -89,3 +91,8 @@
 {
     return d->navigationType;
 }
+
+bool QWebNavigationRequest::isMainFrame() const
+{
+    return d->isMainFrame;
+}

Modified: trunk/Source/WebKit2/UIProcess/API/qt/qwebnavigationrequest_p.h (154723 => 154724)


--- trunk/Source/WebKit2/UIProcess/API/qt/qwebnavigationrequest_p.h	2013-08-28 07:24:26 UTC (rev 154723)
+++ trunk/Source/WebKit2/UIProcess/API/qt/qwebnavigationrequest_p.h	2013-08-28 07:24:46 UTC (rev 154724)
@@ -35,9 +35,10 @@
     Q_PROPERTY(int keyboardModifiers READ keyboardModifiers CONSTANT FINAL)
     Q_PROPERTY(QQuickWebView::NavigationRequestAction action READ action WRITE setAction NOTIFY actionChanged FINAL)
     Q_PROPERTY(QQuickWebView::NavigationType navigationType READ navigationType CONSTANT FINAL)
+    Q_PROPERTY(bool isMainFrame READ isMainFrame CONSTANT FINAL REVISION 1)
 
 public:
-    QWebNavigationRequest(const QUrl& url, Qt::MouseButton mouseButton, Qt::KeyboardModifiers keyboardModifiers, QQuickWebView::NavigationType navigationType, QObject* parent = 0);
+    QWebNavigationRequest(const QUrl& url, Qt::MouseButton mouseButton, Qt::KeyboardModifiers keyboardModifiers, QQuickWebView::NavigationType navigationType, bool isMainFrame, QObject* parent = 0);
     ~QWebNavigationRequest();
 
     QUrl url() const;
@@ -48,6 +49,8 @@
     void setAction(QQuickWebView::NavigationRequestAction action);
     QQuickWebView::NavigationType navigationType() const;
 
+    bool isMainFrame() const;
+
 Q_SIGNALS:
     void actionChanged();
 

Modified: trunk/Source/WebKit2/UIProcess/API/qt/tests/publicapi/tst_publicapi.cpp (154723 => 154724)


--- trunk/Source/WebKit2/UIProcess/API/qt/tests/publicapi/tst_publicapi.cpp	2013-08-28 07:24:26 UTC (rev 154723)
+++ trunk/Source/WebKit2/UIProcess/API/qt/tests/publicapi/tst_publicapi.cpp	2013-08-28 07:24:46 UTC (rev 154724)
@@ -90,6 +90,7 @@
     << "QWebNavigationRequest.keyboardModifiers --> int"
     << "QWebNavigationRequest.action --> QQuickWebView::NavigationRequestAction"
     << "QWebNavigationRequest.navigationType --> QQuickWebView::NavigationType"
+    << "QWebNavigationRequest.isMainFrame --> bool"
     << "QWebNavigationRequest.actionChanged() --> void"
     ;
 

Modified: trunk/Source/WebKit2/UIProcess/qt/QtWebPagePolicyClient.cpp (154723 => 154724)


--- trunk/Source/WebKit2/UIProcess/qt/QtWebPagePolicyClient.cpp	2013-08-28 07:24:26 UTC (rev 154723)
+++ trunk/Source/WebKit2/UIProcess/qt/QtWebPagePolicyClient.cpp	2013-08-28 07:24:46 UTC (rev 154724)
@@ -44,11 +44,11 @@
     WKPageSetPagePolicyClient(pageRef, &policyClient);
 }
 
-void QtWebPagePolicyClient::decidePolicyForNavigationAction(const QUrl& url, Qt::MouseButton mouseButton, Qt::KeyboardModifiers keyboardModifiers, QQuickWebView::NavigationType navigationType, WKFramePolicyListenerRef listener)
+void QtWebPagePolicyClient::decidePolicyForNavigationAction(const QUrl& url, Qt::MouseButton mouseButton, Qt::KeyboardModifiers keyboardModifiers, QQuickWebView::NavigationType navigationType, bool isMainFrame, WKFramePolicyListenerRef listener)
 {
     // NOTE: even though the C API (and the WebKit2 IPC) supports an asynchronous answer, this is not currently working.
     // We are expected to call the listener immediately. See the patch for https://bugs.webkit.org/show_bug.cgi?id=53785.
-    QWebNavigationRequest navigationRequest(url, mouseButton, keyboardModifiers, navigationType);
+    QWebNavigationRequest navigationRequest(url, mouseButton, keyboardModifiers, navigationType, isMainFrame);
     emit m_webView->navigationRequested(&navigationRequest);
 
     switch (navigationRequest.action()) {
@@ -121,12 +121,13 @@
     return QQuickWebView::OtherNavigation;
 }
 
-void QtWebPagePolicyClient::decidePolicyForNavigationAction(WKPageRef, WKFrameRef frame, WKFrameNavigationType navigationType, WKEventModifiers modifiers, WKEventMouseButton mouseButton, WKURLRequestRef request, WKFramePolicyListenerRef listener, WKTypeRef, const void* clientInfo)
+void QtWebPagePolicyClient::decidePolicyForNavigationAction(WKPageRef page, WKFrameRef frame, WKFrameNavigationType navigationType, WKEventModifiers modifiers, WKEventMouseButton mouseButton, WKURLRequestRef request, WKFramePolicyListenerRef listener, WKTypeRef, const void* clientInfo)
 {
     WKRetainPtr<WKURLRef> frameURL(AdoptWK, WKFrameCopyURL(frame));
     WKRetainPtr<WKURLRef> requestURL(AdoptWK, WKURLRequestCopyURL(request));
     QUrl qUrl = WKURLCopyQUrl(requestURL.get());
-    toQtWebPagePolicyClient(clientInfo)->decidePolicyForNavigationAction(qUrl, toQtMouseButton(mouseButton), toQtKeyboardModifiers(modifiers), toQuickWebViewNavigationType(navigationType), listener);
+    bool isMainFrame = (WKPageGetMainFrame(page) == frame);
+    toQtWebPagePolicyClient(clientInfo)->decidePolicyForNavigationAction(qUrl, toQtMouseButton(mouseButton), toQtKeyboardModifiers(modifiers), toQuickWebViewNavigationType(navigationType), isMainFrame, listener);
 }
 
 void QtWebPagePolicyClient::decidePolicyForResponse(WKPageRef page, WKFrameRef frame, WKURLResponseRef response, WKURLRequestRef, WKFramePolicyListenerRef listener, WKTypeRef, const void*)

Modified: trunk/Source/WebKit2/UIProcess/qt/QtWebPagePolicyClient.h (154723 => 154724)


--- trunk/Source/WebKit2/UIProcess/qt/QtWebPagePolicyClient.h	2013-08-28 07:24:26 UTC (rev 154723)
+++ trunk/Source/WebKit2/UIProcess/qt/QtWebPagePolicyClient.h	2013-08-28 07:24:46 UTC (rev 154724)
@@ -36,7 +36,7 @@
     QtWebPagePolicyClient(WKPageRef, QQuickWebView*);
 
 private:
-    void decidePolicyForNavigationAction(const QUrl&, Qt::MouseButton, Qt::KeyboardModifiers, QQuickWebView::NavigationType, WKFramePolicyListenerRef);
+    void decidePolicyForNavigationAction(const QUrl&, Qt::MouseButton, Qt::KeyboardModifiers, QQuickWebView::NavigationType, bool isMainFrame, WKFramePolicyListenerRef);
 
     // WKPagePolicyClient callbacks.
     static void decidePolicyForNavigationAction(WKPageRef, WKFrameRef, WKFrameNavigationType, WKEventModifiers, WKEventMouseButton, WKURLRequestRef, WKFramePolicyListenerRef, WKTypeRef userData, const void* clientInfo);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to