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
|
<!DOCTYPE html>
<html>
<head>
<style>
#content {
width: 7500px;
height: 7500px;
background-color: blue;
}
</style>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="resources/scroll-behavior-test.js"></script>
<script type="text/javascript">
function getEndPosition(testCase, startPosition) {
var endPosition = {};
if (testCase.x)
endPosition.x = testCase.x;
else
endPosition.x = startPosition.x;
if (testCase.y)
endPosition.y = testCase.y;
else
endPosition.y = startPosition.y;
return endPosition;
}
function jsScroll(testCase) {
if (testCase.js) {
var scrollToOptions = {behavior: testCase.js};
if (testCase.x)
scrollToOptions.left = testCase.x;
if (testCase.y)
scrollToOptions.top = testCase.y;
window.scrollTo(scrollToOptions);
} else {
window.scrollTo(testCase.x, testCase.y);
}
}
const testScrolls = [
{js: "instant", css: "auto", x: 1, y: 2},
{js: "instant", css: "smooth", x: 2, y: 3},
{js: "auto", css: "auto", x: 3, y: 4},
{js: "", css: "auto", x: 4, y: 5},
{js: "auto", css: "auto", x: 3},
{js: "auto", css: "auto", y: 4},
{js: "auto", css: "auto"},
{js: "smooth", css: "auto", waitForEnd: true, x: 10, y: 15},
{js: "smooth", css: "smooth", waitForEnd: true, x: 20, y: 25},
{js: "auto", css: "smooth", waitForEnd: true, x: 30, y: 35},
{js: "", css: "smooth", waitForEnd: true, x: 40, y: 45},
{js: "auto", css: "smooth", waitForEnd: true, x: 45},
{js: "auto", css: "smooth", waitForEnd: true, y: 40},
{js: "smooth", css: "auto", waitForEnd: false, x: 4000, y: 4100},
{js: "smooth", css: "smooth", waitForEnd: false, x: 15, y: 20},
{js: "auto", css: "smooth", waitForEnd: false, x: 4100, y: 4000},
{js: "", css: "smooth", waitForEnd: false, x: 10, y: 5},
];
function doTest()
{
var testCases = [];
for (var i = 0; i < testScrolls.length; i++) {
testCases.push(new ScrollBehaviorTestCase(testScrolls[i]));
}
var scrollBehaviorTest = new ScrollBehaviorTest(document.scrollingElement,
document,
testCases,
getEndPosition,
jsScroll);
scrollBehaviorTest.run();
}
window.addEventListener('load', doTest, false);
</script>
</head>
<body>
<p>Test that calling scrollTo on the main frame works with both scroll behaviors</p>
<div id="content"></div>
</body>
</html>
|