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 int expectedLength: 0 property int totalBytes: 0 signal downloadFinished() SignalSpy { id: spy target: experimental signalName: "downloadRequested" } SignalSpy { id: downloadFinishedSpy target: webView signalName: "downloadFinished" } 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() } } TestCase { name: "WebViewDownload" // 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() downloadFinishedSpy.clear() expectedLength = 0 } function test_downloadRequest() { compare(spy.count, 0) webView.url = Qt.resolvedUrl("../common/download.zip") spy.wait() compare(spy.count, 1) } function test_expectedLength() { compare(spy.count, 0) webView.url = Qt.resolvedUrl("../common/download.zip") spy.wait() compare(spy.count, 1) compare(expectedLength, 325) } function test_succeeded() { compare(spy.count, 0) webView.url = Qt.resolvedUrl("../common/download.zip") spy.wait() compare(spy.count, 1) downloadFinishedSpy.wait() compare(totalBytes, expectedLength) } } }