diff options
author | Simon Hausmann <simon.hausmann@nokia.com> | 2012-02-24 16:36:50 +0100 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2012-02-24 16:36:50 +0100 |
commit | ad0d549d4cc13433f77c1ac8f0ab379c83d93f28 (patch) | |
tree | b34b0daceb7c8e7fdde4b4ec43650ab7caadb0a9 /Source/WebKit2/UIProcess/qt/QtWebPagePolicyClient.cpp | |
parent | 03e12282df9aa1e1fb05a8b90f1cfc2e08764cec (diff) | |
download | qtwebkit-ad0d549d4cc13433f77c1ac8f0ab379c83d93f28.tar.gz |
Imported WebKit commit bb52bf3c0119e8a128cd93afe5572413a8617de9 (http://svn.webkit.org/repository/webkit/trunk@108790)
Diffstat (limited to 'Source/WebKit2/UIProcess/qt/QtWebPagePolicyClient.cpp')
-rw-r--r-- | Source/WebKit2/UIProcess/qt/QtWebPagePolicyClient.cpp | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/Source/WebKit2/UIProcess/qt/QtWebPagePolicyClient.cpp b/Source/WebKit2/UIProcess/qt/QtWebPagePolicyClient.cpp index e77fb1463..ad8ced73f 100644 --- a/Source/WebKit2/UIProcess/qt/QtWebPagePolicyClient.cpp +++ b/Source/WebKit2/UIProcess/qt/QtWebPagePolicyClient.cpp @@ -23,7 +23,6 @@ #include "WKFrame.h" #include "WKURLQt.h" -#include "qquickwebview_p.h" #include "qquickwebview_p_p.h" #include "qwebnavigationrequest_p.h" #include <QtCore/QObject> @@ -42,11 +41,12 @@ QtWebPagePolicyClient::QtWebPagePolicyClient(WKPageRef pageRef, QQuickWebView* w WKPageSetPagePolicyClient(pageRef, &policyClient); } -void QtWebPagePolicyClient::decidePolicyForNavigationAction(const QUrl& url, const QUrl& originatingUrl, Qt::MouseButton mouseButton, Qt::KeyboardModifiers keyboardModifiers, WKFramePolicyListenerRef listener) +void QtWebPagePolicyClient::decidePolicyForNavigationAction(const QUrl& url, const QUrl& originatingUrl, Qt::MouseButton mouseButton, + Qt::KeyboardModifiers keyboardModifiers, QQuickWebView::NavigationType navigationType, 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, originatingUrl, mouseButton, keyboardModifiers); + QWebNavigationRequest navigationRequest(url, originatingUrl, mouseButton, keyboardModifiers, navigationType); emit m_webView->navigationRequested(&navigationRequest); switch (navigationRequest.action()) { @@ -99,13 +99,33 @@ static Qt::KeyboardModifiers toQtKeyboardModifiers(WKEventModifiers modifiers) return qtModifiers; } -void QtWebPagePolicyClient::decidePolicyForNavigationAction(WKPageRef, WKFrameRef frame, WKFrameNavigationType, WKEventModifiers modifiers, WKEventMouseButton mouseButton, WKURLRequestRef request, WKFramePolicyListenerRef listener, WKTypeRef, const void* clientInfo) +static QQuickWebView::NavigationType toQuickWebViewNavigationType(WKFrameNavigationType navigationType) +{ + switch (navigationType) { + case kWKFrameNavigationTypeLinkClicked: + return QQuickWebView::LinkClickedNavigation; + case kWKFrameNavigationTypeFormSubmitted: + return QQuickWebView::FormSubmittedNavigation; + case kWKFrameNavigationTypeBackForward: + return QQuickWebView::BackForwardNavigation; + case kWKFrameNavigationTypeReload: + return QQuickWebView::ReloadNavigation; + case kWKFrameNavigationTypeFormResubmitted: + return QQuickWebView::FormResubmittedNavigation; + case kWKFrameNavigationTypeOther: + return QQuickWebView::OtherNavigation; + } + ASSERT_NOT_REACHED(); + return QQuickWebView::OtherNavigation; +} + +void QtWebPagePolicyClient::decidePolicyForNavigationAction(WKPageRef, 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 qUrlFrame = WKURLCopyQUrl(frameURL.get()); QUrl qUrl = WKURLCopyQUrl(requestURL.get()); - toQtWebPagePolicyClient(clientInfo)->decidePolicyForNavigationAction(qUrl, qUrlFrame, toQtMouseButton(mouseButton), toQtKeyboardModifiers(modifiers), listener); + toQtWebPagePolicyClient(clientInfo)->decidePolicyForNavigationAction(qUrl, qUrlFrame, toQtMouseButton(mouseButton), toQtKeyboardModifiers(modifiers), toQuickWebViewNavigationType(navigationType), listener); } void QtWebPagePolicyClient::decidePolicyForResponse(WKPageRef page, WKFrameRef frame, WKURLResponseRef response, WKURLRequestRef, WKFramePolicyListenerRef listener, WKTypeRef, const void*) |