tor-browser

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

test_getCoalescedEvents_touch.html (4709B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <!--
      4 https://bugzilla.mozilla.org/show_bug.cgi?id=1511231
      5 -->
      6 <head>
      7  <meta charset="utf-8">
      8  <title>Test for Bug 1511231</title>
      9  <script src="/tests/SimpleTest/EventUtils.js"></script>
     10  <script src="/tests/SimpleTest/SimpleTest.js"></script>
     11  <script src="/tests/gfx/layers/apz/test/mochitest/apz_test_native_event_utils.js"></script>
     12  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
     13 </head>
     14 <body>
     15 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1303957">Mozilla Bug 1511231</a>
     16 <p id="display"></p>
     17 <div id="target0" style="margin: 50px; width: 50px; height: 50px; background: green"></div>
     18 <script type="text/javascript">
     19 /** Test for Bug 1511231 */
     20 SimpleTest.waitForExplicitFinish();
     21 
     22 if (!window.opener) {
     23  // the utils function in apz can't not be used in remote iframe, so run the
     24  // test in a new tab.
     25  info("run tests in a new tab");
     26  window.open("test_getCoalescedEvents_touch.html");
     27 } else {
     28  function runTests() {
     29    let target0 = window.document.getElementById("target0");
     30    let utils = SpecialPowers.getDOMWindowUtils(window);
     31    utils.advanceTimeAndRefresh(0);
     32 
     33    SimpleTest.executeSoon(async () => {
     34      // Flush all pending touch events before synthesizing events.
     35 
     36      let eventCount = 0;
     37      target0.addEventListener("pointermove", function handler(ev) {
     38        eventCount++;
     39        if (eventCount == 1) {
     40          // Ignore the first pointermove event since the first touch event won't
     41          // be coalesced.
     42          is(ev.getCoalescedEvents().length, 1,
     43             "Coalesced events should be 1 for the first touchmove event");
     44          return;
     45        }
     46 
     47        let length = ev.getCoalescedEvents().length;
     48        ok(length >= 1, "Coalesced events should >= 1, got " + length);
     49 
     50        let rect = target0.getBoundingClientRect();
     51        let prevOffsetX = 0;
     52        let prevOffsetY = 0;
     53 
     54        for (let i = 0; i < length; ++i) {
     55          let coalescedEvent = ev.getCoalescedEvents()[i];
     56          opener.isnot(coalescedEvent.timeStamp, 0, "getCoalescedEvents()[" + i + "].timeStamp");
     57          opener.is(coalescedEvent.type, "pointermove", "getCoalescedEvents()[" + i + "].type");
     58          opener.is(coalescedEvent.pointerId, ev.pointerId, "getCoalescedEvents()[" + i + "].pointerId");
     59          opener.is(coalescedEvent.pointerType, ev.pointerType, "getCoalescedEvents()[" + i + "].pointerType");
     60          opener.is(coalescedEvent.isPrimary, ev.isPrimary, "getCoalescedEvents()[" + i + "].isPrimary");
     61          opener.is(coalescedEvent.target, ev.target, "getCoalescedEvents()[" + i + "].target");
     62          opener.is(coalescedEvent.currentTarget, null, "getCoalescedEvents()[" + i + "].currentTarget");
     63          opener.is(coalescedEvent.eventPhase, Event.NONE, "getCoalescedEvents()[" + i + "].eventPhase");
     64          opener.is(coalescedEvent.cancelable, false, "getCoalescedEvents()[" + i + "].cancelable");
     65          opener.is(coalescedEvent.bubbles, false, "getCoalescedEvents()[" + i + "].bubbles");
     66 
     67          opener.ok(coalescedEvent.offsetX >= prevOffsetX, "getCoalescedEvents()[" + i + "].offsetX = " + coalescedEvent.offsetX);
     68          opener.ok(coalescedEvent.offsetX >= 10 && coalescedEvent.offsetX <= 40, "expected offsetX");
     69 
     70          opener.ok(coalescedEvent.offsetY >= prevOffsetY, "getCoalescedEvents()[" + i + "].offsetY = " + coalescedEvent.offsetY);
     71          opener.ok(coalescedEvent.offsetY >= 10 && coalescedEvent.offsetY <= 40, "expected offsetY");
     72 
     73          prevOffsetX = coalescedEvent.offsetX;
     74          prevOffsetY = coalescedEvent.offsetY;
     75 
     76          let x = rect.left + prevOffsetX;
     77          let y = rect.top + prevOffsetY;
     78          // coordinates may change slightly due to rounding
     79          opener.ok((coalescedEvent.clientX <= x+2) && (coalescedEvent.clientX >= x-2), "getCoalescedEvents()[" + i + "].clientX");
     80          opener.ok((coalescedEvent.clientY <= y+2) && (coalescedEvent.clientY >= y-2), "getCoalescedEvents()[" + i + "].clientY");
     81        }
     82 
     83        target0.removeEventListener("pointermove", handler);
     84      });
     85 
     86      target0.addEventListener("pointerup", (ev) => {
     87        utils.restoreNormalRefresh();
     88        opener.SimpleTest.finish();
     89        window.close();
     90      }, { once: true });
     91 
     92      let positions = [];
     93      for (let i = 10; i <= 40; i+=5) {
     94        positions.push([{ x: i, y: i }]);
     95      }
     96 
     97      await synthesizeNativeTouchSequences(target0, positions);
     98    });
     99  }
    100 
    101  SimpleTest.waitForFocus(() => {
    102    SpecialPowers.pushPrefEnv({"set": [
    103      ["dom.events.coalesce.touchmove", true],
    104      ["dom.events.compress.touchmove", false],
    105    ]}, runTests);
    106  });
    107 }
    108 
    109 </script>
    110 </body>
    111 </html>