tor-browser

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

layer-coords-transform.html (2186B)


      1 <!doctype html>
      2 <meta charset="utf-8">
      3 <link rel="help" href="https://github.com/w3c/uievents/issues/398">
      4 <link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1975653">
      5 <link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
      6 <link rel="author" title="Mozilla" href="https://mozilla.com">
      7 <script src="/resources/testharness.js"></script>
      8 <script src="/resources/testharnessreport.js"></script>
      9 <script src="/resources/testdriver.js"></script>
     10 <script src="/resources/testdriver-actions.js"></script>
     11 <script src="/resources/testdriver-vendor.js"></script>
     12 <style>
     13  div { width: 100px; height: 100px; transform-origin: 0 0; }
     14 </style>
     15 <div style="height: 200vh"></div>
     16 <div style="transform: scale(2); padding: 10px">
     17  <div id="target" style="transform: scale(2);" >
     18    <div id="inner" style="background-color: lightblue"></div>
     19  </div>
     20 </div>
     21 <div style="height: 200vh"></div>
     22 <script>
     23  target.scrollIntoView({ block: "start" });
     24 
     25  let innerClientRect = inner.getBoundingClientRect();
     26 
     27  function promiseEventCoords(click) {
     28    return new Promise(resolve => {
     29      document.addEventListener("click", e => {
     30        resolve({
     31          pageX: e.pageX,
     32          pageY: e.pageY,
     33          layerX: e.layerX,
     34          layerY: e.layerY,
     35        });
     36      }, { once: true });
     37      click();
     38    });
     39  }
     40 
     41  promise_test(async function inside() {
     42    let { layerX, layerY } = await promiseEventCoords(() => {
     43      return new test_driver.Actions()
     44        .pointerMove(innerClientRect.x + 200, innerClientRect.y + 200, { origin: "viewport" })
     45        .pointerDown()
     46        .pointerUp()
     47        .send();
     48    });
     49    assert_equals(layerX, 200, "layerX");
     50    assert_equals(layerY, 200, "layerY");
     51  });
     52 
     53  promise_test(async function outside() {
     54    let { layerX, layerY, pageX, pageY } = await promiseEventCoords(() => {
     55      // 200 + 8 of body margin.
     56      return new test_driver.Actions()
     57        .pointerMove(innerClientRect.right + 10, 200, { origin: "viewport" })
     58        .pointerDown()
     59        .pointerUp()
     60        .send();
     61    });
     62    assert_equals(layerX, pageX, "layerX");
     63    assert_equals(layerY, pageY, "layerY");
     64  });
     65 </script>