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>
|