blob: 2aefce53730812dd87b67629c8e392638d1b75b4 [file] [log] [blame]
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)
}
}
}