tor-browser

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

test_re_enable_apz_on_blur.html (2638B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <head>
      4  <meta charset="utf-8">
      5  <script src="/tests/SimpleTest/SimpleTest.js"></script>
      6  <script src="/tests/SimpleTest/EventUtils.js"></script>
      7  <script src="/tests/SimpleTest/paint_listener.js"></script>
      8  <link rel="stylesheet" href="/tests/SimpleTest/test.css"/>
      9  <style>
     10  iframe {
     11    width: 100vw;
     12    height: 100vh;
     13    border: none;
     14  }
     15  </style>
     16 </head>
     17 <body>
     18 <p id="display"></p>
     19 <div id="content" style="display: none"></div>
     20 <pre id="test"></pre>
     21 <iframe></iframe>
     22 </body>
     23 <script>
     24 // Open a new document in an iframe with enabling accessible-carets.
     25 add_setup(async () => {
     26  await SpecialPowers.pushPrefEnv({
     27    set: [
     28      ["layout.accessiblecaret.enabled", true],
     29      ["layout.accessiblecaret.enabled_on_touch", true],
     30    ],
     31  });
     32  await SpecialPowers.spawnChrome([], async () => {
     33    browsingContext.touchEventsOverride = "enabled";
     34  });
     35 
     36  const iframe = document.querySelector("iframe");
     37  const loadPromise = new Promise(resolve => {
     38    iframe.addEventListener("load", () => resolve());
     39  });
     40  iframe.src = "helper_re_enable_apz_on_blur.html";
     41  await loadPromise;
     42 });
     43 
     44 add_task(async () => {
     45  const iframe = document.querySelector("iframe");
     46 
     47  // Setup a selectionchange event listner in the iframe.
     48  const selectionchangePromise = SpecialPowers.spawn(iframe, [], () => {
     49    return new Promise(resolve => {
     50      content.document.querySelector("textarea").
     51        addEventListener("selectionchange", () => resolve());
     52    });
     53  });
     54  // To make sure the listener has been setup in the iframe context.
     55  await SpecialPowers.spawn(iframe, [], async () => {
     56    await new Promise(resolve => resolve());
     57  });
     58 
     59  async function isApzDisabled() {
     60    return SpecialPowers.spawn(iframe, [], () => {
     61      return SpecialPowers.DOMWindowUtils.isApzDisabledForElement(
     62        content.document.querySelector("textarea"));
     63    });
     64  }
     65 
     66  ok(!await isApzDisabled(), "APZ is not disabled on the textarea");
     67 
     68  // Tap on the text area in the iframe.
     69  synthesizeTouch(iframe, 10, 10, { type: "touchstart" });
     70  synthesizeTouch(iframe, 10, 10, { type: "touchend" });
     71 
     72  await selectionchangePromise;
     73 
     74  ok(await isApzDisabled(), "Now APZ is disabled on the textarea");
     75 
     76  // Now blur the focus from the textarea.
     77  await SpecialPowers.spawn(iframe, [], async () => {
     78    const target = content.document.querySelector("textarea");
     79    const blurPromise = new Promise(resolve => {
     80      target.addEventListener("blur", () => resolve());
     81    });
     82    target.blur();
     83    await blurPromise;
     84  });
     85 
     86  ok(!await isApzDisabled(), "Now APZ is re-enabled on the textarea");
     87 });
     88 </script>
     89 </html>