import QtQuick 2.0 import QtTest 1.0 import QtWebKit 3.0 import QtWebKit.experimental 1.0 import "../common" Item { TestWebView { id: webView width: 400 height: 300 } TestWebView { id: webViewWithConditionalUserScripts width: 400 height: 300 onNavigationRequested: { var urlString = request.url.toString(); if (urlString.indexOf("test1.html") !== -1) experimental.userScripts = [Qt.resolvedUrl("../common/change-document-title.js")]; else if (urlString.indexOf("test2.html") !== -1) experimental.userScripts = [Qt.resolvedUrl("../common/append-document-title.js")]; else experimental.userScripts = []; } } TestCase { name: "WebViewUserScripts" function init() { webView.url = ""; webView.experimental.userScripts = []; } function test_oneScript() { webView.url = Qt.resolvedUrl("../common/test1.html"); webView.waitForLoadSucceeded(); compare(webView.title, "Test page 1"); webView.experimental.userScripts = [Qt.resolvedUrl("../common/change-document-title.js")]; compare(webView.title, "Test page 1"); webView.reload(); webView.waitForLoadSucceeded(); compare(webView.title, "New title"); webView.url = Qt.resolvedUrl("../common/test2.html"); webView.waitForLoadSucceeded(); compare(webView.title, "New title"); webView.experimental.userScripts = []; compare(webView.title, "New title"); webView.reload(); webView.waitForLoadSucceeded(); compare(webView.title, "Test page with huge link area"); } function test_twoScripts() { webView.url = Qt.resolvedUrl("../common/test1.html"); webView.waitForLoadSucceeded(); compare(webView.title, "Test page 1"); webView.experimental.userScripts = [Qt.resolvedUrl("../common/change-document-title.js"), Qt.resolvedUrl("../common/append-document-title.js")]; webView.reload(); webView.waitForLoadSucceeded(); compare(webView.title, "New title with appendix"); // Make sure we can remove scripts from the preload list. webView.experimental.userScripts = [Qt.resolvedUrl("../common/append-document-title.js")]; webView.reload(); webView.waitForLoadSucceeded(); compare(webView.title, "Test page 1 with appendix"); // Make sure the scripts are loaded in order. webView.experimental.userScripts = [Qt.resolvedUrl("../common/append-document-title.js"), Qt.resolvedUrl("../common/change-document-title.js")]; webView.reload(); webView.waitForLoadSucceeded(); compare(webView.title, "New title"); } function test_setUserScriptsConditionally() { webViewWithConditionalUserScripts.url = Qt.resolvedUrl("../common/test1.html"); webViewWithConditionalUserScripts.waitForLoadSucceeded(); compare(webViewWithConditionalUserScripts.title, "New title"); webViewWithConditionalUserScripts.url = Qt.resolvedUrl("../common/test2.html"); webViewWithConditionalUserScripts.waitForLoadSucceeded(); compare(webViewWithConditionalUserScripts.title, "Test page with huge link area with appendix"); webViewWithConditionalUserScripts.url = Qt.resolvedUrl("../common/test3.html"); webViewWithConditionalUserScripts.waitForLoadSucceeded(); compare(webViewWithConditionalUserScripts.title, "Test page 3"); } function test_bigScript() { webView.experimental.userScripts = [Qt.resolvedUrl("../common/big-user-script.js")]; webView.url = Qt.resolvedUrl("../common/test1.html"); webView.waitForLoadSucceeded(); compare(webView.title, "Big user script changed title"); } function test_fromResourceFile() { webView.experimental.userScripts = ["qrc:///common/change-document-title.js"]; webView.url = Qt.resolvedUrl("../common/test1.html"); webView.waitForLoadSucceeded(); compare(webView.title, "New title"); } } }