tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

pointerevent_suppress_compat_events_on_click.html (4222B)


      1 <!doctype html>
      2 <html>
      3  <head>
      4    <title>Pointer Event: Suppress compatibility mouse events on click</title>
      5    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
      6    <link rel="author" title="Google" href="http://www.google.com "/>
      7    <meta name="assert" content="When a pointerdown is canceled, a click/tap shouldn't fire any compatibility mouse events."/>
      8    <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
      9    <script src="/resources/testharness.js"></script>
     10    <script src="/resources/testharnessreport.js"></script>
     11    <script src="/resources/testdriver.js"></script>
     12    <script src="/resources/testdriver-actions.js"></script>
     13    <script src="/resources/testdriver-vendor.js"></script>
     14    <script type="text/javascript" src="pointerevent_support.js"></script>
     15    <script type="text/javascript">
     16      var test_pointerEvent = async_test("Suppress compat mouse events on click");
     17      add_completion_callback(end_of_test);
     18      var actions_promise;
     19 
     20      var detected_pointertypes = {};
     21      var event_log = [];
     22 
     23      function end_of_test() {
     24          showLoggedEvents();
     25          showPointerTypes();
     26      }
     27 
     28      function end_of_interaction() {
     29          test(function () {
     30              assert_equals(event_log.join(", "),
     31                  "click@target0, mousedown@target1, mouseup@target1, click@target1");
     32          }, "Event log");
     33 
     34          // Make sure the test finishes after all the input actions are completed.
     35          actions_promise.then( () => {
     36              test_pointerEvent.done();
     37          });
     38      }
     39 
     40      function run() {
     41          var targetDone = document.getElementById('done');
     42          on_event(targetDone, "click", end_of_interaction);
     43 
     44          var target_list = ["target0", "target1"];
     45          var pointer_event_list = ["pointerdown"];
     46          var mouse_event_list = ["mousedown", "mouseup", "click"];
     47 
     48          target_list.forEach(function(targetId) {
     49              var target = document.getElementById(targetId);
     50 
     51              pointer_event_list.forEach(function(eventName) {
     52                  on_event(target, eventName, function (event) {
     53                      detected_pointertypes[event.pointerType] = true;
     54                      var label = event.type + "@" + targetId;
     55 
     56                      test(function () {
     57                          assert_true(event.isPrimary);
     58                      }, "primary pointer " + label);
     59 
     60                      if (label === "pointerdown@target0")
     61                          event.preventDefault();
     62                  });
     63              });
     64 
     65              mouse_event_list.forEach(function(eventName) {
     66                  on_event(target, eventName, function (event) {
     67                      event_log.push(event.type + "@" + targetId);
     68                  });
     69              });
     70          });
     71 
     72          // Inject mouse inputs.
     73          actions_promise = new test_driver.Actions()
     74              .pointerMove(0, 0, {origin: target0})
     75              .pointerDown()
     76              .pointerUp()
     77              .pointerMove(0, 0, {origin: target1})
     78              .pointerDown()
     79              .pointerUp()
     80              .pointerMove(0, 0, {origin: targetDone})
     81              .pointerDown()
     82              .pointerUp()
     83              .send();
     84      }
     85    </script>
     86    <style>
     87      #target0, #target1 {
     88        margin: 20px;
     89      }
     90 
     91      #done {
     92        margin: 20px;
     93        border: 2px solid black;
     94      }
     95    </style>
     96  </head>
     97  <body onload="run()">
     98    <h1>Pointer Event: Suppress compatibility mouse events on click</h1>
     99    <h4>
    100      When a pointerdown is canceled, a click/tap shouldn't fire any compatibility mouse events except click event.
    101    </h4>
    102    <ol>
    103      <li> Click or tap on Target0.</li>
    104      <li> Click or tap on Target1.</li>
    105      <li> Click Done.</li>
    106    </ol>
    107    <div id="target0">
    108      Target0
    109    </div>
    110    <div id="target1">
    111      Target1
    112    </div>
    113    <div id="done">
    114      Done
    115    </div>
    116    <div id="complete-notice">
    117      <p>The following pointer types were detected: <span id="pointertype-log"></span>.</p>
    118      <p>The following events were logged: <span id="event-log"></span>.</p>
    119    </div>
    120    <div id="log"></div>
    121  </body>
    122 </html>