blob: 1740979c7c712613b0b63bba71d1110989b97c5e [file] [log] [blame]
antti@apple.com0a1c14d2019-03-19 11:07:42 +00001
2if (window.testRunner) {
3 testRunner.dumpAsText();
4 testRunner.waitUntilDone();
5 internals.settings.setAsyncFrameScrollingEnabled(true);
6 internals.settings.setAsyncOverflowScrollingEnabled(true);
7}
8
9function sleep(delay)
10{
11 return new Promise((resolve) => { setTimeout(resolve, delay); });
12}
13
14async function runTest() {
15 for (const scrollable of document.querySelectorAll('.overflowscroll')) {
16 scrollable.addEventListener('scroll', function(e) {
17 logScroll(e.target);
18 });
19 }
20
21 {
22 let i = 0;
23 for (const scrollcontent of document.querySelectorAll('.scrollcontent'))
24 scrollcontent.innerText = "Scrollable " + ++i;
25 }
26 {
27 let i = 0;
28 for (const overlapping of document.querySelectorAll('.overlapping'))
29 overlapping.insertBefore(document.createTextNode("Overlapping " + ++i), overlapping.firstChild);
30 }
31
32
33 if (!window.testRunner || !testRunner.runUIScript)
34 return;
35
36 for (const testcase of document.querySelectorAll('.case'))
37 testcase.style.display = 'none';
38
39 {
40 let i = 0;
41 for (const testcase of document.querySelectorAll('.case')) {
42 ++i;
43 testcase.style.display = 'inline-block';
44
45 const target = testcase.querySelector('.target');
46 const rect = target.getBoundingClientRect();
47 const centerX = (rect.left + rect.right) / 2;
48 const centerY = (rect.top + rect.bottom) / 2;
antti@apple.comd589aae2019-03-21 08:25:18 +000049 await UIHelper.immediateScrollElementAtContentPointToOffset(centerX, centerY, 0, 30);
50
51 // Restore the main scroll view to the original position in case it moved.
52 await UIHelper.immediateScrollElementAtContentPointToOffset(5, 5, 0, 0);
53
54 await UIHelper.ensurePresentationUpdate();
antti@apple.com0a1c14d2019-03-19 11:07:42 +000055
56 testcase.style.display = 'none';
57 outputCase(i);
58 }
59 }
60
61 for (const testcase of document.querySelectorAll('.case'))
62 testcase.style.display = 'none';
63
64 testRunner.notifyDone();
65}
66
67const scrolledElements = new Set();
68
69function logScroll(element) {
70 if (scrolledElements.has(element))
71 return;
72 scrolledElements.add(element);
73}
74
75function outputCase(i) {
76 log.innerText += "case " + i + ": ";
77 for (const scrolled of scrolledElements)
78 log.innerText += scrolled.getElementsByClassName("scrollcontent")[0].innerText + " ";
79 log.innerText += "\n";
80 scrolledElements.clear();
81}