summaryrefslogtreecommitdiff
path: root/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_loadUrl.qml
blob: 0f8f6a1ffe943476b79fec6eb4e843038693ab0f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
import QtQuick 2.0
import QtTest 1.0
import QtWebKit 3.0
import "../common"

TestWebView {
    id: webView
    property variant lastUrl
    property bool watchProgress: false
    property int numLoadStarted: 0
    property int numLoadSucceeded: 0

    focus: true

    onLoadProgressChanged: {
        if (watchProgress && webView.loadProgress != 100) {
            watchProgress = false
            url = ''
        }
    }

    onLoadingChanged: {
        if (loadRequest.status == WebView.LoadStartedStatus)
            ++numLoadStarted
        if (loadRequest.status == WebView.LoadSucceededStatus)
            ++numLoadSucceeded
    }

    TestCase {
        id: test
        name: "WebViewLoadUrl"
        when: windowShown

        function test_loadIgnoreEmptyUrl() {
            var url = Qt.resolvedUrl("../common/test1.html")

            webView.url = url
            verify(webView.waitForLoadSucceeded())
            compare(numLoadStarted, 1)
            compare(numLoadSucceeded, 1)
            compare(webView.url, url)

            lastUrl = webView.url
            webView.url = ''
            wait(1000)
            compare(numLoadStarted, 1)
            compare(numLoadSucceeded, 1)
            compare(webView.url, lastUrl)

            webView.url = 'about:blank'
            verify(webView.waitForLoadSucceeded())
            compare(numLoadStarted, 2)
            compare(numLoadSucceeded, 2)
            compare(webView.url, 'about:blank')

            // It shouldn't interrupt any ongoing load when an empty url is used.
            watchProgress = true
            webView.url = url
            webView.waitForLoadSucceeded()
            compare(numLoadStarted, 3)
            compare(numLoadSucceeded, 3)
            verify(!watchProgress)
            compare(webView.url, url)
        }

        function test_urlProperty() {
            var url = Qt.resolvedUrl("../common/test1.html")

            webView.url = url
            compare(webView.url, url)
            verify(webView.waitForLoadSucceeded())
            compare(webView.url, url)

            var bogusSite = "http://www.somesitethatdoesnotexist.abc/"
            webView.url = bogusSite
            compare(webView.url, bogusSite)
            verify(webView.waitForLoadFailed())
            compare(webView.url, bogusSite)

            webView.url = "about:blank" // Reset from previous test
            verify(webView.waitForLoadSucceeded())

            var handleLoadFailed = function(loadRequest) {
                if (loadRequest.status == WebView.LoadFailedStatus) {
                    compare(webView.url, bogusSite)
                    compare(loadRequest.url, bogusSite)
                    webView.loadHtml("load failed", bogusSite, bogusSite)
                }
            }
            webView.loadingChanged.connect(handleLoadFailed)
            webView.url = bogusSite
            compare(webView.url, bogusSite)
            verify(webView.waitForLoadSucceeded())
            compare(webView.url, bogusSite)
            webView.loadingChanged.disconnect(handleLoadFailed)

            var dataUrl = "data:text/html,foo"
            webView.url = dataUrl
            compare(webView.url, dataUrl)

            var redirectUrl = Qt.resolvedUrl("../common/redirect.html")
            webView.url = redirectUrl
            compare(webView.url, redirectUrl)
            verify(webView.waitForLoadSucceeded())
            compare(webView.url, redirectUrl)
            verify(webView.waitForLoadSucceeded())
            compare(webView.url, url)

            var linkUrl = Qt.resolvedUrl("../common/link.html")
            webView.url = linkUrl
            compare(webView.url, linkUrl)
            verify(webView.waitForLoadSucceeded())
            compare(webView.url, linkUrl)
            webView.loadingChanged.connect(function(loadRequest) {
                compare(webView.url, loadRequest.url)
                compare(webView.url, url)
            })
            webView.forceActiveFocus()
            keyPress(Qt.Key_Return) // Link is focused
            verify(webView.waitForLoadSucceeded())
            compare(webView.url, url)
        }

        function test_stopStatus() {
            var url = Qt.resolvedUrl("../common/test1.html")

            webView.loadingChanged.connect(function(loadRequest) {
                if (loadRequest.status == WebView.LoadStopStatus) {
                    compare(webView.url, url)
                    compare(loadRequest.url, url)
                }
            })

            webView.url = url
            compare(webView.url, url)
            webView.stop()
            verify(webView.waitForLoadStopped())
            compare(webView.url, url)
        }
    }
}