Changeset 103330 in webkit
- Timestamp:
- Dec 20, 2011 7:35:52 AM (12 years ago)
- Location:
- trunk/Source
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/qt/ChangeLog
r103320 r103330 1 2011-12-20 Rafael Brandao <rafael.lobo@openbossa.org> 2 3 [Qt] Extend QQuickWebview::navigationRequested API 4 https://bugs.webkit.org/show_bug.cgi?id=73818 5 6 Reviewed by Simon Hausmann. 7 8 * declarative/experimental/plugin.cpp: 9 1 10 2011-12-20 Jarred Nicholls <jarred@sencha.com> 2 11 -
trunk/Source/WebKit/qt/declarative/experimental/plugin.cpp
r102922 r103330 49 49 qmlRegisterUncreatableType<QWebNavigationHistory>(uri, 3, 0, "NavigationHistory", QObject::tr("Cannot create separate instance of NavigationHistory")); 50 50 qmlRegisterExtendedType<QQuickWebView, QQuickWebViewExperimentalExtension>(uri, 3, 0, "WebView"); 51 qmlRegisterUncreatableType<QQuickWebViewExperimental>(uri, 3, 0, " QQuickWebViewExperimental",52 QObject::tr("Cannot create separate instance of QQuickWebViewExperimental"));51 qmlRegisterUncreatableType<QQuickWebViewExperimental>(uri, 3, 0, "WebViewExperimental", 52 QObject::tr("Cannot create separate instance of WebViewExperimental")); 53 53 qmlRegisterUncreatableType<QWebViewportInfo>(uri, 3, 0, "QWebViewportInfo", 54 54 QObject::tr("Cannot create separate instance of QWebViewportInfo")); -
trunk/Source/WebKit2/ChangeLog
r103329 r103330 1 2011-12-20 Rafael Brandao <rafael.lobo@openbossa.org> 2 3 [Qt] Extend QQuickWebview::navigationRequested API 4 https://bugs.webkit.org/show_bug.cgi?id=73818 5 6 Reviewed by Simon Hausmann. 7 8 Added url of the originating frame on QWebNavigationRequest, 9 accessible via 'request.originatingUrl' on QML. Download action 10 was moved to experimental, so in order to use it you should set 11 'request.action = WebViewExperimental.DownloadRequest' on QML. 12 13 * UIProcess/API/qt/qquickwebview_p.h: 14 * UIProcess/API/qt/qwebnavigationrequest.cpp: 15 (QWebNavigationRequestPrivate::QWebNavigationRequestPrivate): 16 (QWebNavigationRequest::QWebNavigationRequest): 17 (QWebNavigationRequest::originatingUrl): 18 * UIProcess/API/qt/qwebnavigationrequest_p.h: 19 * UIProcess/API/qt/tests/qmltests/DesktopBehavior/tst_navigationRequested.qml: 20 Tests were modified a bit to reuse urls and also added a test case to check 21 originating url once a request is done. 22 * UIProcess/qt/QtWebPagePolicyClient.cpp: 23 (QtWebPagePolicyClient::decidePolicyForNavigationAction): 24 * UIProcess/qt/QtWebPagePolicyClient.h: 25 1 26 2011-12-20 Balazs Kelemen <kbalazs@webkit.org> 2 27 -
trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h
r103316 r103330 66 66 enum NavigationRequestAction { 67 67 AcceptRequest, 68 IgnoreRequest, 69 DownloadRequest 68 IgnoreRequest 70 69 }; 71 70 … … 179 178 Q_PROPERTY(bool useTraditionalDesktopBehaviour READ useTraditionalDesktopBehaviour WRITE setUseTraditionalDesktopBehaviour) 180 179 Q_PROPERTY(QWebViewportInfo* viewportInfo READ viewportInfo CONSTANT FINAL) 180 Q_ENUMS(NavigationRequestAction) 181 181 182 182 public: 183 enum NavigationRequestAction { 184 DownloadRequest = 2 185 }; 186 183 187 QQuickWebViewExperimental(QQuickWebView* webView); 184 188 virtual ~QQuickWebViewExperimental(); -
trunk/Source/WebKit2/UIProcess/API/qt/qwebnavigationrequest.cpp
r102502 r103330 26 26 class QWebNavigationRequestPrivate { 27 27 public: 28 QWebNavigationRequestPrivate(const QUrl& url, Qt::MouseButton button, Qt::KeyboardModifiers modifiers)28 QWebNavigationRequestPrivate(const QUrl& url, const QUrl& originatingUrl, Qt::MouseButton button, Qt::KeyboardModifiers modifiers) 29 29 : url(url) 30 , originatingUrl(originatingUrl) 30 31 , button(button) 31 32 , modifiers(modifiers) … … 39 40 40 41 QUrl url; 42 QUrl originatingUrl; 41 43 Qt::MouseButton button; 42 44 Qt::KeyboardModifiers modifiers; … … 44 46 }; 45 47 46 QWebNavigationRequest::QWebNavigationRequest(const QUrl& url, Qt::MouseButton button, Qt::KeyboardModifiers modifiers, QObject* parent)48 QWebNavigationRequest::QWebNavigationRequest(const QUrl& url, const QUrl& originatingUrl, Qt::MouseButton button, Qt::KeyboardModifiers modifiers, QObject* parent) 47 49 : QObject(parent) 48 , d(new QWebNavigationRequestPrivate(url, button, modifiers))50 , d(new QWebNavigationRequestPrivate(url, originatingUrl, button, modifiers)) 49 51 { 50 52 } … … 69 71 } 70 72 73 QUrl QWebNavigationRequest::originatingUrl() const 74 { 75 return d->originatingUrl; 76 } 77 71 78 int QWebNavigationRequest::button() const 72 79 { -
trunk/Source/WebKit2/UIProcess/API/qt/qwebnavigationrequest_p.h
r102502 r103330 31 31 Q_OBJECT 32 32 Q_PROPERTY(QUrl url READ url CONSTANT FINAL) 33 Q_PROPERTY(QUrl originatingUrl READ originatingUrl CONSTANT FINAL) 33 34 Q_PROPERTY(int button READ button CONSTANT FINAL) 34 35 Q_PROPERTY(int modifiers READ modifiers CONSTANT FINAL) … … 36 37 37 38 public: 38 QWebNavigationRequest(const QUrl& url, Qt::MouseButton button, Qt::KeyboardModifiers modifiers, QObject* parent = 0);39 QWebNavigationRequest(const QUrl& url, const QUrl& originatingUrl, Qt::MouseButton button, Qt::KeyboardModifiers modifiers, QObject* parent = 0); 39 40 ~QWebNavigationRequest(); 40 41 41 42 QUrl url() const; 43 QUrl originatingUrl() const; 42 44 int button() const; 43 45 int modifiers() const; -
trunk/Source/WebKit2/UIProcess/API/qt/tests/qmltests/DesktopBehavior/tst_navigationRequested.qml
r102959 r103330 2 2 import QtTest 1.0 3 3 import QtWebKit 3.0 4 import QtWebKit.experimental 3.0 4 5 5 6 Item { … … 7 8 property int totalBytes: 0 8 9 property bool shouldDownload: false 10 property string originatingUrl: "" 11 property url beginUrl: Qt.resolvedUrl("../common/test2.html") 12 property url endUrl: Qt.resolvedUrl("../common/test1.html") 9 13 10 14 DesktopWebView { … … 17 21 onNavigationRequested: { 18 22 if (shouldDownload) 19 request.action = WebView .DownloadRequest23 request.action = WebViewExperimental.DownloadRequest 20 24 else if (request.button == Qt.MiddleButton && request.modifiers & Qt.ControlModifier) { 21 25 otherWebView.load(request.url) 22 26 request.action = WebView.IgnoreRequest 23 27 } 28 originatingUrl = request.originatingUrl 24 29 } 25 30 … … 87 92 downloadFinishedSpy.clear() 88 93 shouldDownload = false 94 originatingUrl = "" 89 95 } 90 96 91 97 function test_usePolicy() { 92 webView.load( Qt.resolvedUrl("../common/test2.html"))98 webView.load(beginUrl) 93 99 spy.wait() 94 100 spy.clear() … … 97 103 compare(spy.count, 1) 98 104 compare(webView.title, "Test page 1") 105 compare(webView.url, endUrl) 99 106 } 100 107 101 108 function test_ignorePolicy() { 102 webView.load( Qt.resolvedUrl("../common/test2.html"))109 webView.load(beginUrl) 103 110 spy.wait() 104 111 spy.clear() … … 109 116 compare(spy.count, 0) 110 117 compare(otherSpy.count, 1) 118 compare(webView.url, beginUrl) 111 119 compare(otherWebView.title, "Test page 1") 120 compare(otherWebView.url, endUrl) 112 121 } 113 122 114 123 function test_downloadPolicy() { 115 webView.load( Qt.resolvedUrl("../common/test2.html"))124 webView.load(beginUrl) 116 125 spy.wait() 117 126 spy.clear() … … 128 137 compare(totalBytes, expectedLength) 129 138 } 139 140 function test_originatingUrl() { 141 webView.load(beginUrl) 142 spy.wait() 143 spy.clear() 144 mouseClick(webView, 100, 100, Qt.LeftButton) 145 spy.wait() 146 compare(webView.title, "Test page 1") 147 compare(webView.url, endUrl) 148 compare(originatingUrl, beginUrl) 149 } 130 150 } 131 151 } -
trunk/Source/WebKit2/UIProcess/qt/QtWebPagePolicyClient.cpp
r102502 r103330 22 22 #include "QtWebPagePolicyClient.h" 23 23 24 #include "WKFrame.h" 24 25 #include "WKURLQt.h" 25 26 #include "qquickwebview_p.h" … … 42 43 } 43 44 44 void QtWebPagePolicyClient::decidePolicyForNavigationAction(const QUrl& url, Qt::MouseButton mouseButton, Qt::KeyboardModifiers keyboardModifiers, WKFramePolicyListenerRef listener)45 void QtWebPagePolicyClient::decidePolicyForNavigationAction(const QUrl& url, const QUrl& originatingUrl, Qt::MouseButton mouseButton, Qt::KeyboardModifiers keyboardModifiers, WKFramePolicyListenerRef listener) 45 46 { 46 47 // NOTE: even though the C API (and the WebKit2 IPC) supports an asynchronous answer, this is not currently working. 47 48 // We are expected to call the listener immediately. See the patch for https://bugs.webkit.org/show_bug.cgi?id=53785. 48 QWebNavigationRequest navigationRequest(url, mouseButton, keyboardModifiers);49 QWebNavigationRequest navigationRequest(url, originatingUrl, mouseButton, keyboardModifiers); 49 50 emit m_webView->navigationRequested(&navigationRequest); 50 51 … … 53 54 WKFramePolicyListenerIgnore(listener); 54 55 return; 55 case QQuickWebView ::DownloadRequest:56 case QQuickWebViewExperimental::DownloadRequest: 56 57 WKFramePolicyListenerDownload(listener); 57 58 return; … … 99 100 } 100 101 101 void QtWebPagePolicyClient::decidePolicyForNavigationAction(WKPageRef, WKFrameRef , WKFrameNavigationType, WKEventModifiers modifiers, WKEventMouseButton mouseButton, WKURLRequestRef request, WKFramePolicyListenerRef listener, WKTypeRef, const void* clientInfo)102 void QtWebPagePolicyClient::decidePolicyForNavigationAction(WKPageRef, WKFrameRef frame, WKFrameNavigationType, WKEventModifiers modifiers, WKEventMouseButton mouseButton, WKURLRequestRef request, WKFramePolicyListenerRef listener, WKTypeRef, const void* clientInfo) 102 103 { 103 WKURLRef requestURL = WKURLRequestCopyURL(request); 104 QUrl qUrl = WKURLCopyQUrl(requestURL); 105 WKRelease(requestURL); 106 toQtWebPagePolicyClient(clientInfo)->decidePolicyForNavigationAction(qUrl, toQtMouseButton(mouseButton), toQtKeyboardModifiers(modifiers), listener); 104 WKRetainPtr<WKURLRef> frameURL(AdoptWK, WKFrameCopyURL(frame)); 105 WKRetainPtr<WKURLRef> requestURL(AdoptWK, WKURLRequestCopyURL(request)); 106 QUrl qUrlFrame = WKURLCopyQUrl(frameURL.get()); 107 QUrl qUrl = WKURLCopyQUrl(requestURL.get()); 108 toQtWebPagePolicyClient(clientInfo)->decidePolicyForNavigationAction(qUrl, qUrlFrame, toQtMouseButton(mouseButton), toQtKeyboardModifiers(modifiers), listener); 107 109 } 108 110 -
trunk/Source/WebKit2/UIProcess/qt/QtWebPagePolicyClient.h
r101086 r103330 32 32 33 33 private: 34 void decidePolicyForNavigationAction(const QUrl&, Qt::MouseButton, Qt::KeyboardModifiers, WKFramePolicyListenerRef);34 void decidePolicyForNavigationAction(const QUrl&, const QUrl&, Qt::MouseButton, Qt::KeyboardModifiers, WKFramePolicyListenerRef); 35 35 36 36 // WKPagePolicyClient callbacks.
Note: See TracChangeset
for help on using the changeset viewer.