summaryrefslogtreecommitdiffstats
path: root/gfx/layers/apz/test/mochitest/helper_bug1719330.html
diff options
context:
space:
mode:
Diffstat (limited to 'gfx/layers/apz/test/mochitest/helper_bug1719330.html')
-rw-r--r--gfx/layers/apz/test/mochitest/helper_bug1719330.html65
1 files changed, 65 insertions, 0 deletions
diff --git a/gfx/layers/apz/test/mochitest/helper_bug1719330.html b/gfx/layers/apz/test/mochitest/helper_bug1719330.html
new file mode 100644
index 0000000000..c99b6e1012
--- /dev/null
+++ b/gfx/layers/apz/test/mochitest/helper_bug1719330.html
@@ -0,0 +1,65 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+ <meta charset="utf-8">
+ <title>Tests that the arrow down key does not scroll by more than 1 element</title>
+ <script src="/tests/SimpleTest/EventUtils.js"></script>
+ <script type="application/javascript" src="apz_test_utils.js"></script>
+ <script type="application/javascript" src="apz_test_native_event_utils.js"></script>
+ <script src="/tests/SimpleTest/paint_listener.js"></script>
+ <style>
+ .time-column {
+ width: 68px;
+ height: 28px;
+
+ overflow-y: scroll;
+ scroll-snap-type: y mandatory;
+
+ border-radius: 4px;
+ border: 1px solid red;
+ }
+
+ .time-item {
+ scroll-snap-align: center;
+ height: 100%;
+ }
+ </style>
+</head>
+<body>
+ <div class="time-column"></div>
+
+ <script type="application/javascript">
+
+ function waitForScrollEvent(target) {
+ return new Promise(resolve => {
+ target.addEventListener("scroll", resolve, { once: true });
+ });
+ }
+
+ async function test() {
+ const timeCol = document.querySelector('.time-column');
+
+ for (let i = 0; i < 60; i++) {
+ let item = document.createElement('div');
+ item.classList.add('time-item');
+ item.textContent = i;
+ timeCol.appendChild(item);
+ }
+
+ is(timeCol.scrollTop, 0, "should begin with no scroll (1)");
+
+ let waitForScroll = waitForScrollEvent(timeCol);
+
+ timeCol.focus();
+ window.synthesizeKey("KEY_ArrowDown");
+
+ await waitForScroll;
+
+ ok(timeCol.scrollTop > 0, "should have scrolled (2)");
+ ok(timeCol.scrollTop < 30, "should have not scrolled too far (3)");
+ }
+
+ waitUntilApzStable().then(test).then(subtestDone, subtestFailed);
+ </script>
+</body>
+</html>