tor-browser

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

mousemove_prevent_default_action.html (3011B)


      1 <!doctype html>
      2 <meta charset=utf-8>
      3 <title>mousemove event: preventDefault()</title>
      4 <link rel="author" title="Mirko Brodesser" href="mailto:mbrodesser@mozilla.com">
      5 <link rel="help" href="https://github.com/w3c/uievents/issues/278">
      6 <script src=/resources/testharness.js></script>
      7 <script src=/resources/testharnessreport.js></script>
      8 <script src=/resources/testdriver.js></script>
      9 <script src=/resources/testdriver-actions.js></script>
     10 <script src=/resources/testdriver-vendor.js></script>
     11 <script src=resources/utils.js></script>
     12 
     13 <body>
     14  <div id="a">div a</div>
     15  <div id="b">div b</div>
     16  <div id="c" draggable="true">div c</div>
     17 </body>
     18 
     19 <script>
     20  'use strict';
     21 
     22  let event_log = [];
     23 
     24  function logEvents(e) {
     25    event_log.push(e.type);
     26  }
     27 
     28  function initialize(test) {
     29    // Deliberately avoiding mouseup here because the last selectionchange
     30    // may be fired before or after the mouseup.
     31    addTestScopedListener(document, "mousedown", logEvents, test);
     32    addTestScopedListener(document, "mousemove", e => e.preventDefault(), test);
     33    event_log = [];
     34  }
     35 
     36  promise_test(async test => {
     37    initialize(test);
     38    addTestScopedListener(document, "selectionchange", logEvents, test);
     39 
     40    const a = document.getElementById("a");
     41    const b = document.getElementById("b");
     42 
     43    let mouseup_promise = getEvent("mouseup", document);
     44 
     45    await new test_driver.Actions()
     46        .pointerMove(0, 0, {origin: a})
     47        .pointerDown()
     48        .addTick()
     49        .addTick()
     50        .pointerMove(0, 0, {origin: b})
     51        .addTick()
     52        .addTick()
     53        .pointerUp()
     54        .send();
     55 
     56    await mouseup_promise;
     57 
     58    const expected_events = ["mousedown", "selectionchange", "selectionchange"];
     59 
     60    assert_equals(event_log.toString(), expected_events.toString(),
     61        "received events");
     62  }, "selectionchange event firing when mousemove event is prevented");
     63 
     64  promise_test(async test => {
     65    initialize(test);
     66    addTestScopedListener(document, 'dragstart', (event) => {
     67      // For this test, it is enough to see the dragstart event. The event is
     68      // cancelled here to suppress the actual drag operation because Blink's
     69      // implementation of test_driver doesn't seem to be able to dispatch any
     70      // event once the dragging is active.
     71      event.preventDefault();
     72      logEvents(event);
     73    }, test);
     74 
     75    const b = document.getElementById("b");
     76    const c = document.getElementById("c");
     77 
     78    const mouseup_promise = getEvent('mouseup', document);
     79 
     80    await new test_driver.Actions()
     81        .pointerMove(0, 0, {origin: c})
     82        .pointerDown()
     83        .addTick()
     84        .addTick()
     85        .pointerMove(0, 0, {origin: b})
     86        .addTick()
     87        .addTick()
     88        .pointerUp()
     89        .send();
     90 
     91    await mouseup_promise;
     92 
     93    const expected_events = ["mousedown", "dragstart"];
     94 
     95    assert_equals(event_log.toString(), expected_events.toString(),
     96        "received events");
     97  }, "dragstart event firing when mousemove event is prevented");
     98 </script>