tor-browser

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

browser_test_mousemove_optimization.js (2268B)


      1 /* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
      2 /* vim: set sts=2 sw=2 et tw=80: */
      3 "use strict";
      4 
      5 Services.scriptloader.loadSubScript(
      6  "chrome://mochitests/content/browser/gfx/layers/apz/test/mochitest/apz_test_utils.js",
      7  this
      8 );
      9 
     10 Services.scriptloader.loadSubScript(
     11  "chrome://mochitests/content/browser/gfx/layers/apz/test/mochitest/apz_test_native_event_utils.js",
     12  this
     13 );
     14 
     15 add_task(async function () {
     16  await SpecialPowers.pushPrefEnv({
     17    set: [["apz.mousemove_hittest_optimization.enabled", true]],
     18  });
     19 
     20  const tab = await BrowserTestUtils.openNewForegroundTab(
     21    gBrowser,
     22    "data:text/html,hello"
     23  );
     24 
     25  const mousemoveEventPromise = new Promise(resolve => {
     26    window.addEventListener(
     27      "mousemove",
     28      event => {
     29        resolve({
     30          type: event.type,
     31          clientX: event.clientX,
     32          clientY: event.clientY,
     33        });
     34      },
     35      { once: true }
     36    );
     37  });
     38 
     39  // Send a mousemove event on this document.
     40  await synthesizeNativeMouseEventWithAPZ({
     41    type: "mousemove",
     42    target: document.documentElement,
     43    offsetX: 100,
     44    offsetY: 50,
     45  });
     46  let result = await mousemoveEventPromise;
     47  SimpleTest.isDeeply(result, { type: "mousemove", clientX: 100, clientY: 50 });
     48 
     49  const mousemoveEventPromiseOnContent = SpecialPowers.spawn(
     50    tab.linkedBrowser,
     51    [],
     52    () => {
     53      return new Promise(resolve => {
     54        content.window.addEventListener(
     55          "mousemove",
     56          event => {
     57            resolve({
     58              type: event.type,
     59              clientX: event.clientX,
     60              clientY: event.clientY,
     61            });
     62          },
     63          { once: true }
     64        );
     65      });
     66    }
     67  );
     68 
     69  // Await a new SpecialPowers.spawn to flush the above queued task to the content process.
     70  await SpecialPowers.spawn(tab.linkedBrowser, [], async () => {
     71    await new Promise(resolve => resolve());
     72  });
     73 
     74  // Send a mousemove event on the iframe document.
     75  await synthesizeNativeMouseEventWithAPZ({
     76    type: "mousemove",
     77    target: tab.linkedBrowser,
     78    offsetX: 100,
     79    offsetY: 50,
     80  });
     81  result = await mousemoveEventPromiseOnContent;
     82  SimpleTest.isDeeply(result, { type: "mousemove", clientX: 100, clientY: 50 });
     83 
     84  BrowserTestUtils.removeTab(tab);
     85 });