tor-browser

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

helper_fission_touch.html (2429B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <head>
      4  <meta charset="utf-8">
      5  <meta name="viewport" content="width=device-width,initial-scale=1">
      6  <title>Test to ensure touch events for OOP iframes</title>
      7  <script src="/tests/SimpleTest/SimpleTest.js"></script>
      8  <script src="/tests/SimpleTest/paint_listener.js"></script>
      9  <script src="helper_fission_utils.js"></script>
     10  <script src="apz_test_utils.js"></script>
     11  <script src="apz_test_native_event_utils.js"></script>
     12  <script>
     13 
     14    function waitForTouchEvent(aType) {
     15      return promiseOneEvent(window, "message", function (e) {
     16        return e.data === aType;
     17      });
     18    }
     19 
     20    async function test() {
     21      const iframe = document.querySelector("iframe");
     22      await setupCrossOriginIFrame(iframe, "helper_fission_plain.html");
     23 
     24      let readyPromise = new Promise(resolve => {
     25        window.addEventListener("message", event => {
     26          if (event.data === "listenerready") {
     27            resolve();
     28          }
     29        });
     30      });
     31 
     32      let result = await SpecialPowers.spawn(iframe, [], async () => {
     33        let listener = function (e) {
     34          content.window.parent.postMessage(e.type, "*");
     35        }
     36 
     37        content.document.addEventListener("touchstart", listener, { once: true });
     38        content.document.addEventListener("touchmove", listener, { once: true });
     39        content.document.addEventListener("touchend", listener, { once: true });
     40 
     41        content.window.parent.postMessage("listenerready", "*");
     42 
     43        return true;
     44      });
     45      ok(result, "Successfully installed event listeners in OOP iframe");
     46 
     47      await readyPromise;
     48 
     49      let touchPromises = Promise.all(
     50        [waitForTouchEvent("touchstart"),
     51        waitForTouchEvent("touchmove"),
     52        waitForTouchEvent("touchend")]
     53      );
     54 
     55      await synthesizeNativeTouchSequences(document.body,
     56        [[{ x: 100, y: 100 }], [{ x: 150, y: 150 }], [{ x: 150, y: 150 }]], function () {
     57          dump("Finished synthesizing touch tap, waiting for OOPIF message...\n");
     58        });
     59 
     60      await touchPromises;
     61    }
     62 
     63    waitUntilApzStable()
     64      .then(test)
     65      .then(subtestDone, subtestFailed);
     66 
     67  </script>
     68  <style>
     69    body,
     70    html {
     71      margin: 0;
     72    }
     73 
     74    div {
     75      width: 500px;
     76    }
     77 
     78    iframe {
     79      width: 400px;
     80      height: 300px;
     81      border: solid 1px black;
     82    }
     83  </style>
     84 </head>
     85 <body>
     86  <div><iframe id="testframe"></iframe></div>
     87 </body>
     88 </html>