tor-browser

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

file_fullscreen-featurePolicy.html (2532B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <head>
      4  <title>Test for FeaturePolicy + fullscreen</title>
      5  <script src="/tests/SimpleTest/SimpleTest.js"></script>
      6  <script src="/tests/SimpleTest/EventUtils.js"></script>
      7  <script type="application/javascript" src="file_fullscreen-utils.js"></script>
      8  <style>
      9  body {
     10    background-color: black;
     11  }
     12  </style>
     13 </head>
     14 <body>
     15 
     16 <script type="application/javascript">
     17 function ok(condition, msg) {
     18  opener.ok(condition, "[featurePolicy] " + msg);
     19 }
     20 
     21 function is(a, b, msg) {
     22  opener.is(a, b, "[featurePolicy] " + msg);
     23 }
     24 
     25 const INNER_FILE = "file_fullscreen-featurePolicy-inner.html";
     26 
     27 function begin() {
     28  nextTest();
     29 }
     30 
     31 var tests = [
     32  ["fullscreen 'none'", "fullscreenerror"],
     33  ["fullscreen", "fullscreenchange"],
     34  ["fullscreen 'src'", "fullscreenchange"],
     35  ["fullscreen 'self'", "fullscreenchange"],
     36  ["fullscreen *", "fullscreenchange"],
     37  ["fullscreen http://random.net", "fullscreenerror"],
     38  [null, "fullscreenchange"],
     39 ];
     40 
     41 async function nextTest() {
     42  if (!tests.length) {
     43    opener.nextTest();
     44    return;
     45  }
     46 
     47  let [value, expectedEvent] = tests.shift();
     48 
     49  for (const isChrome of [false, true]) {
     50    opener.info(`Running ${value} ${isChrome ? "w/" : "wo/"} chrome privileges`);
     51 
     52    // Create an iframe with an allowfullscreen and with an allow attribute.
     53    // The request should be denied or allowed, based on the current test.
     54    const iframe = document.createElement("iframe");
     55    iframe.setAttribute("allowfullscreen", "true");
     56    if (value) {
     57      iframe.setAttribute("allow", value);
     58    }
     59    iframe.src = INNER_FILE + (isChrome ? "?chrome" : "");
     60 
     61    const setupForInnerTest = targetName => {
     62      window.testTargetName = targetName;
     63      return new Promise(resolve => {
     64        window.continueTest = (event, enabled) => {
     65          delete window.testTargetName;
     66          delete window.continueTest;
     67          resolve({ event, enabled });
     68        };
     69        document.body.appendChild(iframe);
     70      });
     71    };
     72 
     73    const { event, enabled } = await setupForInnerTest(
     74      `an iframe+allowfullscreen+allow:${value}+isChrome:${isChrome}`
     75    );
     76 
     77    if (isChrome) {
     78      is(event, "fullscreenchange", "Expected a fullscreenchange event");
     79      ok(enabled, "Should be enabled in chrome");
     80    } else {
     81      is(event, expectedEvent, "Expected a " + expectedEvent + " event");
     82      is(enabled, expectedEvent == "fullscreenchange", "Should be appropriately enabled");
     83    }
     84    iframe.remove();
     85  }
     86  SimpleTest.executeSoon(nextTest);
     87 }
     88 </script>
     89 </body>
     90 </html>