summaryrefslogtreecommitdiffstats
path: root/tests/auto/quick/qmltests/data/tst_fullScreenRequest.qml
blob: c7996a11e1f76b66f4d16d31b7adc640c301dd4f (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
import QtQuick
import QtTest
import QtWebEngine

TestWebEngineView {
    id: view
    width: 320
    height: 320

    property bool acceptRequest: false

    onFullScreenRequested: function(request) {
        view.acceptRequest ? request.accept() : request.reject()
    }

    SignalSpy {
        id: spyRequest
        target: view
        signalName: 'fullScreenRequested'
    }

    TestCase {
        name: 'FullScreenRequest'
        when: windowShown

        function init() {
            spyRequest.clear()
        }

        function test_request_data() {
            return [
                { tag: 'accept', accept: true },
                { tag: 'reject', accept: false },
            ]
        }

        function test_request(data) {
            view.acceptRequest = data.accept
            view.settings.fullscreenSupportEnabled = true

            // full screen request is only allowed by user gesture, so emulate key press
            view.loadHtml(
                '<html><body onkeypress="onKeyPress()"><a id="a">WRYYYY</a><script>' +
                'function onKeyPress() {' +
                ' document.webkitIsFullScreen'+
                '  ? document.webkitExitFullscreen()' +
                '  : document.documentElement.webkitRequestFullScreen()' +
                '} </script></body></html>')
            view.waitForLoadSucceeded()
            verify(!view.isFullScreen)

            let result = null
            view.runJavaScript('document.webkitFullscreenEnabled', function(r) { result = r })
            tryVerify(function() { return result === true })

            result = null
            view.runJavaScript('document.webkitIsFullScreen', function(r) { result = r })
            tryVerify(function() { return result === false })

            // will trigger full screen request through key press
            keyClick(Qt.Key_Space)
            spyRequest.wait()
            compare(spyRequest.count, 1)
            verify(spyRequest.signalArguments[0][0].toggleOn)
            compare(data.accept, view.isFullScreen)

            view.runJavaScript('document.webkitIsFullScreen', function(r) { result = r })
            tryVerify(function() { return result === data.accept })

            if (data.accept) {
                // expected to toggle from current state
                keyClick(Qt.Key_Space)
                spyRequest.wait()
                compare(spyRequest.count, 2)
                verify(!spyRequest.signalArguments[1][0].toggleOn)
                view.runJavaScript('document.webkitIsFullScreen', function(r) { result = r })
                tryVerify(function() { return result === false })
                verify(!view.isFullScreen)
            }
        }
    }
}