tor-browser

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

test_bug1091883.html (2977B)


      1 <!DOCTYPE html>
      2 <html>
      3 <!--
      4 https://bugzilla.mozilla.org/show_bug.cgi?id=1091883
      5 -->
      6 <head>
      7  <meta charset="utf-8">
      8  <meta name="referrer" content="origin-when-cross-origin">
      9  <title>Test for Bug 1091883</title>
     10  <script src="/tests/SimpleTest/SimpleTest.js"></script>
     11  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
     12 </head>
     13 <body>
     14 <p><a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1091883">Mozilla Bug 1091883</a></p>
     15 <h2>Results</h2>
     16 <pre id="results">Running...</pre>
     17 
     18 <script>
     19 SimpleTest.waitForExplicitFinish();
     20 
     21 var origins = [
     22  "http://mochi.test:8888", "http://example.com", "http://example.org"];
     23 var numOrigins = origins.length;
     24 
     25 // For each combination of (frame, subframe, target) origins, this test
     26 // includes a "frame" that includes a "subframe"; and then this test
     27 // navigates this "subframe" to the "target".  Both the referrer and
     28 // the triggering principal are this test, i.e., "http://mochi.test:8888".
     29 // Since the referrer policy is origin-when-cross-origin, we expect to have
     30 // a full referrer if and only if the target is also "http://mochi.test:8888";
     31 // in all other cases, the referrer needs to be the origin alone.
     32 var numTests = numOrigins * numOrigins * numOrigins;
     33 
     34 // Helpers to look up the approriate origins for a given test number.
     35 function getFrameOrigin(i) {
     36  return origins[(i / (numOrigins * numOrigins)) | 0];
     37 }
     38 function getSubframeOrigin(i) {
     39  return origins[((i / numOrigins) | 0) % 3];
     40 }
     41 function getTargetOrigin(i) {
     42  return origins[i % 3];
     43 }
     44 
     45 // Create the frames, and tell them which subframes to load.
     46 for (let i = 0; i < numTests; i++) {
     47  var frame = document.createElement("iframe");
     48  frame.src = getFrameOrigin(i) +
     49              "/tests/dom/base/test/file_bug1091883_frame.html#" +
     50              getSubframeOrigin(i);
     51  document.body.appendChild(frame);
     52 }
     53 
     54 // Navigate all subframes to the target.
     55 window.onload = function() {
     56  for (let i = 0; i < numTests; i++) {
     57    frames[i].frames[0].location = getTargetOrigin(i) +
     58        "/tests/dom/base/test/file_bug1091883_target.html#" + i;
     59  }
     60 };
     61 
     62 // Check referrer messages from the target.
     63 var results = {};
     64 function makeResultsKey(i) {
     65  return i + ": " + getFrameOrigin(i) + " | " + getSubframeOrigin(i) + " -> " +
     66         getTargetOrigin(i);
     67 }
     68 window.addEventListener("message", function(event) {
     69  var out = event.data.split(" ");
     70  var referrer = out[0];
     71  var testRun = +out[1];
     72  results[makeResultsKey(testRun)] = referrer;
     73  if (event.origin == "http://mochi.test:8888") {
     74    is(referrer.split("?")[0],
     75       "http://mochi.test:8888/tests/dom/base/test/test_bug1091883.html",
     76       "must be full referrer");
     77  } else {
     78    is(referrer, "http://mochi.test:8888/", "must be origin referrer");
     79  }
     80  if (Object.keys(results).length == numTests) {
     81    document.getElementById("results").textContent =
     82        JSON.stringify(results, null, 4);
     83    SimpleTest.finish();
     84  }
     85 });
     86 </script>
     87 
     88 </body>
     89 </html>