antti@apple.com | 0a1c14d | 2019-03-19 11:07:42 +0000 | [diff] [blame] | 1 | |
| 2 | if (window.testRunner) { |
| 3 | testRunner.dumpAsText(); |
| 4 | testRunner.waitUntilDone(); |
| 5 | internals.settings.setAsyncFrameScrollingEnabled(true); |
| 6 | internals.settings.setAsyncOverflowScrollingEnabled(true); |
| 7 | } |
| 8 | |
| 9 | function sleep(delay) |
| 10 | { |
| 11 | return new Promise((resolve) => { setTimeout(resolve, delay); }); |
| 12 | } |
| 13 | |
| 14 | async 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.com | d589aae | 2019-03-21 08:25:18 +0000 | [diff] [blame] | 49 | 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.com | 0a1c14d | 2019-03-19 11:07:42 +0000 | [diff] [blame] | 55 | |
| 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 | |
| 67 | const scrolledElements = new Set(); |
| 68 | |
| 69 | function logScroll(element) { |
| 70 | if (scrolledElements.has(element)) |
| 71 | return; |
| 72 | scrolledElements.add(element); |
| 73 | } |
| 74 | |
| 75 | function 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 | } |