tor-browser

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

test_blocking_image.html (2867B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <head>
      4 <!--
      5 https://bugzilla.mozilla.org/show_bug.cgi?id=1267075
      6 -->
      7  <title>Test for Bug 1267075</title>
      8  <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
      9  <script src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script>
     10  <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/>
     11 </head>
     12 <body onload="onLoad()">
     13 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1267075">Mozilla Bug 1267075</a>
     14 <pre id="test">
     15 <script class="testbody" type="text/javascript">
     16 SimpleTest.waitForExplicitFinish();
     17 
     18 function onLoad() {
     19  var iframe = document.createElement("iframe");
     20  iframe.onload = function () {
     21    info("iframe loaded");
     22    function imgListener(img) {
     23      return new Promise((resolve, reject) => {
     24        img.addEventListener("load", () => reject());
     25        img.addEventListener("error", () => resolve());
     26      });
     27    }
     28 
     29    var doc = iframe.contentDocument;
     30    var img = doc.createElement("img");
     31    var img2 = doc.createElement("img");
     32    var img3 = doc.createElement("img");
     33 
     34    // image from HTTP should be blocked.
     35    img.src = "http://example.com/tests/image/test/mochitest/shaver.png";
     36    doc.body.appendChild(img);
     37 
     38    imgListener(img).then(() => {
     39      ok(true, "img shouldn't be loaded");
     40 
     41      // `iframe` is a content iframe, and thus not in the same docgroup with
     42      // us, which are a chrome-privileged test.
     43      //
     44      // Ensure the frame is laid out so that this cross-origin
     45      // getComputedStyle call is guaranteed to work after bug 1440537.
     46      iframe.getBoundingClientRect();
     47 
     48      img2.src = "https://test.invalid";
     49      doc.body.appendChild(img2);
     50      return imgListener(img2);
     51    }).then(() => {
     52      ok(true, "img2 shouldn't be loaded");
     53 
     54      // Now prepare for the next test, deny image.
     55      return new Promise(resolve => {
     56          SpecialPowers.pushPrefEnv({"set": [["permissions.default.image", 2]]}, resolve)
     57      });
     58    }).then(() => {
     59      // Now image is denied, loading image will be rejected with REJECT_TYPE.
     60      img3.src = "https://example.com/tests/image/test/mochitest/shaver.png";
     61      doc.body.appendChild(img3);
     62      return imgListener(img3);
     63    }).then(() => {
     64      ok(true, "img3 shouldn't be loaded");
     65      SimpleTest.finish();
     66    }).catch((e) => {
     67      // Expected early return
     68      if(e === true) {
     69        SimpleTest.finish();
     70        return;
     71      }
     72      ok(false, "throwing " + e);
     73    });
     74  };
     75 
     76  // file_blocking_image.html contains meta tag for CSP, which will block images from
     77  // http.
     78  iframe.src = "http://mochi.test:8888/chrome/dom/base/test/file_blocking_image.html";
     79  document.getElementById("content").appendChild(iframe);
     80 }
     81 </script>
     82 </pre>
     83 <p id="display"></p>
     84 <div id="content">
     85 </div>
     86 
     87 </body> </html>