| import QtQuick 2.0 |
| import QtTest 1.0 |
| import QtWebKit 3.0 |
| import QtWebKit.experimental 1.0 |
| import "../common" |
| |
| Item { |
| property int expectedLength: 0 |
| property int totalBytes: 0 |
| property bool shouldDownload: false |
| property url beginUrl: Qt.resolvedUrl("../common/test2.html") |
| property url endUrl: Qt.resolvedUrl("../common/test1.html") |
| |
| TestWebView { |
| id: webView |
| width: 200 |
| height: 200 |
| |
| signal downloadFinished() |
| |
| onNavigationRequested: { |
| if (shouldDownload) |
| request.action = WebViewExperimental.DownloadRequest |
| else if (request.mouseButton == Qt.MiddleButton && request.keyboardModifiers & Qt.ControlModifier) { |
| otherWebView.url = request.url |
| request.action = WebView.IgnoreRequest |
| } |
| } |
| |
| experimental.onDownloadRequested: { |
| download.target = downloadItem |
| expectedLength = downloadItem.expectedContentLength |
| downloadItem.destinationPath = downloadItem.suggestedFilename |
| downloadItem.start() |
| } |
| |
| Connections { |
| id: download |
| ignoreUnknownSignals: true |
| onSucceeded: { |
| totalBytes = download.target.totalBytesReceived |
| webView.downloadFinished() |
| } |
| } |
| } |
| |
| TestWebView { |
| id: otherWebView |
| } |
| |
| SignalSpy { |
| id: downloadSpy |
| target: webView.experimental |
| signalName: "downloadRequested" |
| } |
| |
| SignalSpy { |
| id: downloadFinishedSpy |
| target: webView |
| signalName: "downloadFinished" |
| } |
| |
| TestCase { |
| name: "DesktopWebViewNavigationRequested" |
| |
| // 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() { |
| downloadSpy.clear() |
| downloadFinishedSpy.clear() |
| shouldDownload = false |
| } |
| |
| function test_usePolicy() { |
| webView.url = beginUrl |
| verify(webView.waitForLoadSucceeded()) |
| mouseClick(webView, 100, 100, Qt.LeftButton) |
| verify(webView.waitForLoadSucceeded()) |
| compare(webView.title, "Test page 1") |
| compare(webView.url, endUrl) |
| } |
| |
| function test_ignorePolicy() { |
| webView.url = beginUrl |
| verify(webView.waitForLoadSucceeded()) |
| mouseClick(webView, 100, 100, Qt.MiddleButton, Qt.ControlModifier) |
| verify(otherWebView.waitForLoadSucceeded()) |
| verify(webView.loadStatus == null) |
| compare(webView.url, beginUrl) |
| compare(otherWebView.title, "Test page 1") |
| compare(otherWebView.url, endUrl) |
| } |
| |
| function test_downloadPolicy() { |
| webView.url = beginUrl |
| verify(webView.waitForLoadSucceeded()) |
| downloadSpy.clear() |
| downloadFinishedSpy.clear() |
| expectedLength = 0 |
| shouldDownload = true |
| mouseClick(webView, 100, 100, Qt.LeftButton) |
| downloadSpy.wait() |
| compare(downloadSpy.count, 1) |
| downloadFinishedSpy.wait() |
| compare(downloadFinishedSpy.count, 1) |
| compare(totalBytes, expectedLength) |
| } |
| } |
| } |