tor-browser

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

file_autoplay_policy_eventdown_activation.html (2667B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 
      4 <head>
      5  <title>Autoplay policy window</title>
      6  <style>
      7    video {
      8      width: 50%;
      9      height: 50%;
     10    }
     11  </style>
     12  <script src="/tests/SimpleTest/SimpleTest.js"></script>
     13  <script src="/tests/SimpleTest/EventUtils.js"></script>
     14  <script type="text/javascript" src="manifest.js"></script>
     15  <script type="text/javascript" src="AutoplayTestUtils.js"></script>
     16 </head>
     17 
     18 <body>
     19  <pre id="test">
     20      <script>
     21 
     22        window.ok = window.opener.ok;
     23        window.is = window.opener.is;
     24        window.info = window.opener.info;
     25 
     26        async function testEventDownActivates(eventNames, activator) {
     27          let element = document.createElement("video");
     28          element.preload = "auto";
     29          element.src = "short.mp4";
     30          document.body.appendChild(element);
     31 
     32          await once(element, "loadedmetadata");
     33 
     34          let played = await element.play().then(() => true, () => false);
     35          ok(!played, "Document should start out not activated, with playback blocked.");
     36 
     37          let x = eventNames.map(
     38            (eventName) => {
     39              return new Promise(function (resolve) {
     40                window.addEventListener(eventName, async function () {
     41                  let p = await element.play().then(() => true, () => false);
     42                  ok(p, "Expect to be activated already in " + eventName);
     43                  resolve();
     44                });
     45              });
     46            });
     47 
     48          activator();
     49 
     50          await Promise.all(x);
     51 
     52          removeNodeAndSource(element);
     53        }
     54 
     55        nextWindowMessage().then(
     56          async (event) => {
     57            try {
     58              if (event.data == "run keydown test") {
     59                await testEventDownActivates(["keydown", "keypress", "keyup"], () => {
     60                  document.body.focus();
     61                  synthesizeKey(" ");
     62                });
     63              } else if (event.data == "run mousedown test") {
     64                let events = ["mousedown", "mouseup", "click"];
     65                if (getAndroidVersion() < 0) {
     66                  // Non-Android, also listen on pointer events.
     67                  events.push("pointerdown", "pointerup");
     68                }
     69                await testEventDownActivates(events, () => {
     70                  synthesizeMouseAtCenter(document.body, {});
     71                });
     72              } else {
     73                ok(false, "unexpected message");
     74              }
     75            } catch (e) {
     76              ok(false, "Caught exception " + e + " " + e.message + " " + e.stackTrace);
     77            }
     78            event.source.postMessage("done", "*");
     79          });
     80 
     81      </script>
     82    </pre>
     83 </body>
     84 
     85 </html>