summaryrefslogtreecommitdiffstats
path: root/third_party/WebKit/LayoutTests/fast/scroll-behavior/smooth-scroll/keyboard-scroll.html
blob: 310b4e22d327b02c9d33c914901e071919a222ee (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
<!DOCTYPE html>
<script src="../../../resources/js-test.js"></script>
<script>
    window.jsTestIsAsync = true;
    var pageHeight = 1200;
    var pageWidth = 1000;

    var testScrolls = [
        {key: 'downArrow', expectedX: 0, expectedY: pageHeight - window.innerHeight},
        {key: 'upArrow', expectedX: 0, expectedY: 0},
        {key: 'rightArrow', expectedX: pageWidth - window.innerWidth, expectedY: 0},
        {key: 'leftArrow', expectedX: 0, expectedY: 0},
        {key: 'end', expectedX: 0, expectedY: pageHeight - window.innerHeight},
        {key: 'home', expectedX: 0, expectedY: 0},
        {key: 'pageDown', expectedX: 0, expectedY: pageHeight - window.innerHeight},
        {key: 'pageUp', expectedX: 0, expectedY: 0},
        {key: ' ', expectedX: 0, expectedY: pageHeight - window.innerHeight},
    ];
    var currentTest = -1;

    description("Test keyboard smooth scroll. The main purpose of this\
        test is to ensure that smooth scrolling on the compositor\
        works as intended (tested via virtual suite virtual/threaded/).");

    function runTestCase(testCase) {
        window.eventSender.keyDown(testCase.key);
        if (window.scrollX == testCase.expectedX && window.scrollY == testCase.expectedY) {
            testPassed(testCase.key + ' reached target');
            startNextTestCase();
        } else {
            requestAnimationFrame(function() {
                runTestCase(testCase);
            });
        }
    }

    function startNextTestCase() {
        currentTest++;
        if (currentTest >= testScrolls.length) {
            finishJSTest();
            return;
        }
        runTestCase(testScrolls[currentTest]);
    }

    function runTest() {
        if (!window.eventSender || !window.internals) {
            finishJSTest();
            return;
        }
        // Turn on smooth scrolling.
        internals.settings.setScrollAnimatorEnabled(true);

        startNextTestCase();
    }
    addEventListener('load', runTest);
</script>

<style>
    ::-webkit-scrollbar {
        width: 0px;
        height: 0px;
    }

    div {
        width: 200px;
        height: 20px;
        background-color: red;
    }

    html{
        padding: 0px;
        margin: 0px;
        width: 1000px;
        height: 1200px;
    }

    .top {
        position: absolute;
        top: 0px;
        left: 300px;
    }

    .middle{
        position: absolute;
        top: 575px;
        left: 300px;
    }

    .bottom {
        position: absolute;
        top: 1180px;
        left: 300px;
    }

    .left {
        position: absolute;
        top: 275px;
        left: 0px;
    }

    .right {
        position: absolute;
        top: 275px;
        left: 800px;
    }
</style>
<p id="description" style="width: 800px"></p>
<p id="console" style="width: 800px"></p>
<div class="top">Top of page</div>
<div class="bottom">Bottom of page</div>
<div class="left">Left of page</div>
<div class="right">Right of page</div>
<div class="middle">Middle of page</div>