File: pointerevent_pointerrawupdate_flush_pointercapture.https.html

package info (click to toggle)
firefox-esr 140.5.0esr-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 4,538,920 kB
  • sloc: cpp: 7,381,527; javascript: 6,388,905; ansic: 3,710,087; python: 1,393,776; xml: 628,165; asm: 426,916; java: 184,004; sh: 65,744; makefile: 19,302; objc: 13,059; perl: 12,912; yacc: 4,583; cs: 3,846; pascal: 3,352; lex: 1,720; ruby: 1,226; exp: 762; php: 436; lisp: 258; awk: 247; sql: 66; sed: 54; csh: 10
file content (78 lines) | stat: -rw-r--r-- 2,600 bytes parent folder | download | duplicates (15)
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
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale:1">
<title>Pointer capture state should be updated before `pointerrawupdate`</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-actions.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<script>
"use strict";

/**
 * "fire a pointer event" defines:
 * > If the event is not a gotpointercapture, lostpointercapture, click,
 * > auxclick or contextmenu event, run the process pending pointer capture
 * > steps for this PointerEvent.
 *
 * This test checks whether `pointerrawupdate` event dispatcher processes
 * the pending pointer capture state.
 */

addEventListener("DOMContentLoaded", () => {
  promise_test(async () => {
    let events = [];
    function logEvent(event) {
      events.push(`${event.type}@${event.target.id ? event.target.id : event.target.nodeName}`);
    }
    const initialDiv = document.getElementById("init");
    await new test_driver.Actions()
      .pointerMove(0, 0, {origin: initialDiv})
      .send();
    const target = document.getElementById("target");
    const dest = document.getElementById("dest");
    for (const type of ["pointerdown", "pointerup", "pointermove",
                        "pointerrawupdate",
                        "gotpointercapture", "lostpointercapture"]) {
      target.addEventListener(type, logEvent);
      dest.addEventListener(type, logEvent);
    }
    dest.addEventListener("pointerover", logEvent);
    target.addEventListener("pointerdown", event => {
      event.target.setPointerCapture(event.pointerId);
    });
    await new test_driver.Actions()
      .pointerMove(0, 0, {origin: target})
      .pointerDown()
      .pointerMove(0, 0, {origin: dest})
      .pointerUp()
      .send();
    assert_equals(
      events.join(", "),
      [
        "pointerrawupdate@target", "pointermove@target", "pointerdown@target",
        // "gotpointercapture" should be fired before "pointerrawupdate"
        "gotpointercapture@target", "pointerrawupdate@target", "pointermove@target",
        "pointerup@target", "lostpointercapture@target",
        // Finally, "pointerover" should be fired on the destination
        "pointerover@dest",
      ].join(", ")
    );
  });
}, {once: true});
</script>
<style>
div {
  min-height: 64px;
}
</style>
</head>
<body>
  <div id="init"></div>
  <div id="target"></div>
  <div id="dest"></div>
</body>
</html>