tor-browser

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

contextmenu_event.html (1800B)


      1 <!DOCTYPE html>
      2 <html>
      3 <head>
      4  <meta charset="utf-8">
      5  <title>Contextmenu event</title>
      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 </head>
     12 <body>
     13  <h1>Test contextmenu event</h1>
     14  <p>Tests that right-clicking fires a contextmenu event.</p>
     15  <ol id="instructions">
     16    <li>Right-click here.
     17  </ol>
     18  <script>
     19    let event_log = [];
     20 
     21    function cancel_and_log_event(ename) {
     22        return new Promise(resolve => {
     23            document.body.addEventListener(ename, e => {
     24                e.preventDefault();
     25                event_log.push(e.type);
     26                resolve(e);
     27            }, {once: true});
     28        });
     29    }
     30 
     31    promise_test(async () => {
     32        const event_promises = ["mousedown", "mouseup", "contextmenu"]
     33              .map(ename => cancel_and_log_event(ename));
     34 
     35        let target = document.getElementById("instructions");
     36        let actions = new test_driver.Actions();
     37        actions.pointerMove(0, 0, {origin: target})
     38            .pointerDown({button: actions.ButtonType.RIGHT})
     39            .pointerUp({button: actions.ButtonType.RIGHT})
     40            .send();
     41 
     42        await Promise.all(event_promises);
     43 
     44        assert_equals(event_log.length, 3, "Three events are received");
     45        assert_true(event_log.includes("contextmenu"), "contextmenu event is received");
     46        assert_true(event_log.includes("mouseup"), "mouseup event is received");
     47        assert_equals(event_log[0], "mousedown", "mousedown event is the first event received");
     48    }, "Test contextmenu dispatched after mousedown");
     49  </script>
     50 </body>
     51 </html>