File: mouse-wheel.html

package info (click to toggle)
firefox 145.0.1-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 4,653,528 kB
  • sloc: cpp: 7,594,999; javascript: 6,459,658; ansic: 3,752,909; python: 1,403,455; xml: 629,809; asm: 438,679; java: 186,421; sh: 67,287; makefile: 19,169; objc: 13,086; perl: 12,982; yacc: 4,583; cs: 3,846; pascal: 3,448; lex: 1,720; ruby: 1,003; exp: 762; php: 436; lisp: 258; awk: 247; sql: 66; sed: 54; csh: 10
file content (66 lines) | stat: -rw-r--r-- 2,287 bytes parent folder | download | duplicates (4)
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
<!DOCTYPE html>
<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#scroll-snap-type" />
<title>Mouse-wheel scroll snapping speed</title>
<meta name="assert"
      content="Test passes if mousewheel snaps without pausing">
<style>
  #scroller {
    scroll-snap-type: block mandatory;
    overflow: scroll;
    height:  400px;
    width: 400px
  }
  #space {
    width: 200px;
    height: 4000px;
  }
  .box {
    scroll-snap-align: start;
    background: blue;
    margin-bottom:  10px;
    width: 100px;
    height: 100px;
  }
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<script src="/resources/testdriver-actions.js"></script>
<script src="/dom/events/scrolling/scroll_support.js"></script>
<script src="../support/common.js"></script>

<div id="scroller">
  <div class="box"></div>
  <div id="target" class="box"></div>
  <div id="space"></div>
</div>
<script>
promise_test(async t => {
  await waitForCompositorReady();
  const scroller = document.getElementById("scroller");
  scroller.scrollTo(0, 0);
  assert_equals(scroller.scrollTop, 0, "verify test pre-condition");
  const scrollTop = () => {
    return scroller.scrollTop;
  };
  const scrollPromise = waitForScrollEvent(scroller);
  const wheelPromise = waitForWheelEvent(scroller);
  const targetBounds =
      document.getElementById('target').getBoundingClientRect();
  const dy = targetBounds.top / 2 + 1;
  const actions = new test_driver.Actions()
       .scroll(50, 50, 0, dy, {origin: scroller, duration: 100});
  await actions.send();
  await wheelPromise;
  await scrollPromise;
  // Detect first pause in scrolling. As expected to snap right at the end of
  // the scroll, there should be no appreciable pause before the snap takes
  // place. Once the scrolling settles, we are expected to be at the snap
  // position.
  const scrollStabilizedPromise = waitForAnimationEnd(scrollTop);
  await scrollStabilizedPromise;
  assert_approx_equals(scroller.scrollTop, 110, 0.5,
                'Failed to advance to next snap target');
}, "Wheel-scroll triggers snap to target position without intermediate pause.");
</script>