summaryrefslogtreecommitdiff
path: root/tests/webkitqml/qmltests/WebView/tst_fitToView.qml
diff options
context:
space:
mode:
Diffstat (limited to 'tests/webkitqml/qmltests/WebView/tst_fitToView.qml')
-rw-r--r--tests/webkitqml/qmltests/WebView/tst_fitToView.qml133
1 files changed, 133 insertions, 0 deletions
diff --git a/tests/webkitqml/qmltests/WebView/tst_fitToView.qml b/tests/webkitqml/qmltests/WebView/tst_fitToView.qml
new file mode 100644
index 000000000..73db99cd5
--- /dev/null
+++ b/tests/webkitqml/qmltests/WebView/tst_fitToView.qml
@@ -0,0 +1,133 @@
+import QtQuick 2.0
+import QtTest 1.0
+import QtWebKit 3.0
+import QtWebKit.experimental 1.0
+import Test 1.0
+import "../common"
+
+Item {
+ TestWebView {
+ id: webView
+ width: 480
+ height: 720
+
+ property variant result
+
+ property variant content: "data:text/html," +
+ "<head>" +
+ " <meta name='viewport' content='width=device-width'>" +
+ "</head>" +
+ "<body style='margin: 0px'>" +
+ " <div id='target' style='display:none; width:960px; height:1440px;'></div>" +
+ "</body>"
+
+ signal resultReceived
+ }
+
+ SignalSpy {
+ id: resultSpy
+ target: webView
+ signalName: "resultReceived"
+ }
+
+ SignalSpy {
+ id: scaleSpy
+ target: webView.experimental.test
+ signalName: "contentsScaleCommitted"
+ }
+
+ TestCase {
+ name: "FitToView"
+ when: windowShown
+
+ property variant test: webView.experimental.test
+
+ function init() {
+ resultSpy.clear()
+ scaleSpy.clear()
+ }
+
+ function run(signalSpy, script) {
+ signalSpy.clear();
+ var result;
+ webView.experimental.evaluateJavaScript(
+ script, function(value) { webView.resultReceived(); result = value });
+ signalSpy.wait();
+ return result;
+ }
+
+ function documentSize() {
+ return run(resultSpy, "document.width + 'x' + document.height");
+ }
+
+ function setDisplay(id, value) {
+ // When changing to/from 'none' to 'block', this will result in a
+ // contentsScaleCommitted scale, even if it results in the same
+ // scale, making it possible to check whether user interaction
+ // blocks fit-to-view or not.
+ run(scaleSpy, "document.getElementById('" + id + "').style.display = '" + value + "';");
+ }
+
+ function test_basic() {
+ webView.url = webView.content
+ verify(webView.waitForViewportReady())
+
+ skip("https://github.com/qtwebkit/qtwebkit/issues/951")
+ compare(documentSize(), "480x720")
+ compare(test.contentsScale, 1.0)
+
+ setDisplay("target", "block")
+ compare(documentSize(), "960x1440")
+ compare(test.contentsScale, 0.5)
+
+ // Add user interaction.
+ test.touchTap(webView, 10, 10)
+
+ // We are no longer within valid bounds after this change
+ // so we have to change our scale back to 1.0.
+ setDisplay("target", "none")
+ compare(documentSize(), "480x720")
+ compare(test.contentsScale, 1.0)
+
+ // We had user interaction, size should change but not scale.
+ setDisplay("target", "block")
+ compare(documentSize(), "960x1440")
+ compare(test.contentsScale, 1.0)
+ }
+
+ function test_localPageDeviceWidth() {
+ webView.url = "about:blank"
+ verify(webView.waitForLoadSucceeded())
+
+ webView.url = "../common/test5.html"
+ verify(webView.waitForLoadSucceeded())
+ skip("https://github.com/qtwebkit/qtwebkit/issues/951")
+ compare(test.contentsScale, 0.5)
+
+ // Add user interaction.
+ test.touchTap(webView, 10, 10)
+
+ webView.reload()
+ verify(webView.waitForLoadSucceeded())
+ // The page should still fit to view after a reload
+ compare(test.contentsScale, 0.5)
+ }
+
+ function test_localPageInitialScale() {
+ webView.url = "about:blank"
+ verify(webView.waitForLoadSucceeded())
+
+ webView.url = "../common/test4.html"
+ verify(webView.waitForLoadSucceeded())
+ skip("https://github.com/qtwebkit/qtwebkit/issues/951")
+ compare(test.contentsScale, 2.0)
+
+ // Add user interaction.
+ test.touchTap(webView, 10, 10)
+
+ webView.reload()
+ verify(webView.waitForLoadSucceeded())
+ compare(test.contentsScale, 2.0)
+ }
+ }
+}