tor-browser

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

test_change_policy.html (4590B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <head>
      4  <meta charset="utf-8">
      5  <title>Test policies for Bug 1101288</title>
      6  <script src="/tests/SimpleTest/SimpleTest.js"></script>
      7  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
      8 
      9 <!--
     10 This checks if the right policies are applied from a given string when the policy is changed after the document has been loaded.
     11 https://bugzilla.mozilla.org/show_bug.cgi?id=1101288
     12 -->
     13 <script type="application/javascript">
     14 
     15 SimpleTest.waitForExplicitFinish();
     16 var advance = function() { tests.next(); };
     17 
     18 /**
     19 * Listen for notifications from the child.
     20 * These are sent in case of error, or when the loads we await have completed.
     21 */
     22 window.addEventListener("message", function(event) {
     23  if (event.data == "childLoadComplete") {
     24    // all loads happen, continue the test.
     25    advance();
     26  }
     27 });
     28 
     29 /**
     30 * helper to perform an XHR.
     31 */
     32 function doXHR(aUrl, onSuccess, onFail) {
     33  var xhr = new XMLHttpRequest();
     34  xhr.responseType = "json";
     35  xhr.onload = function () {
     36    onSuccess(xhr);
     37  };
     38  xhr.onerror = function () {
     39    onFail(xhr);
     40  };
     41  xhr.open('GET', aUrl, true);
     42  xhr.send(null);
     43 }
     44 
     45 /**
     46 * Grabs the results via XHR and passes to checker.
     47 */
     48 function checkIndividualResults(aTestname, aExpectedReferrer, aName) {
     49  doXHR('/tests/dom/base/test/referrer_change_server.sjs?action=get-test-results',
     50        function(xhr) {
     51          var results = xhr.response;
     52          info(JSON.stringify(xhr.response));
     53 
     54          for (i in aName) {
     55            ok(aName[i] in results.tests, aName[i] + " tests have to be performed.");
     56            is(results.tests[aName[i]].policy, aExpectedReferrer[i], aTestname + ' --- ' + results.tests[aName[i]].policy + ' (' + results.tests[aName[i]].referrer + ')');
     57          }
     58          advance();
     59        },
     60        function(xhr) {
     61          ok(false, "Can't get results from the counter server.");
     62          SimpleTest.finish();
     63        });
     64 }
     65 
     66 function resetState() {
     67  doXHR('/tests/dom/base/test/referrer_change_server.sjs?action=resetState',
     68    advance,
     69    function(xhr) {
     70      ok(false, "error in reset state");
     71      SimpleTest.finish();
     72    });
     73 }
     74 
     75 
     76 /**
     77 * This is the main test routine -- serialized by use of a generator.
     78 * It resets the counter, then performs two tests in sequence using
     79 * the same iframe.
     80 */
     81 var tests = (function*() {
     82  var iframe = document.getElementById("testframe");
     83  var sjs = "/tests/dom/base/test/referrer_change_server.sjs?action=generate-policy-test";
     84 
     85  yield SpecialPowers.pushPrefEnv(
     86    { set: [["network.http.referer.disallowCrossSiteRelaxingDefault", false]] },
     87    advance
     88  );
     89 
     90  yield resetState();
     91  var name = "no-referrer-unsafe-url";
     92  yield iframe.src = sjs + "&policy=" + escape('no-referrer') + "&name=" + name + "&newPolicy=" + escape('unsafe-url');
     93  yield checkIndividualResults("unsafe-url (changed) with no-referrer first", ["full"], [name+'unsafe-url']);
     94 
     95  yield resetState();
     96  var name = "origin-no-referrer";
     97  yield iframe.src = sjs + "&policy=" + escape('origin') + "&name=" + name + "&newPolicy=" + escape('no-referrer');
     98  yield checkIndividualResults("no-referrer (changed) with origin first", ["none"], [name+'no-referrer']);
     99 
    100  yield resetState();
    101  var name = "unsafe-url-no-referrer";
    102  yield iframe.src = sjs + "&policy=" + escape('unsafe-url') + "&name=" + name + "&newPolicy=" + escape('no-referrer');
    103  yield checkIndividualResults("no-referrer (changed) with unsafe-url first", ["none"], [name+'no-referrer']);
    104 
    105  sjs = "/tests/dom/base/test/referrer_change_server.sjs?action=generate-policy-test2";
    106 
    107  yield resetState();
    108  var name = "no-referrer-unsafe-url";
    109  yield iframe.src = sjs + "&policy=" + escape('no-referrer') + "&name=" + name + "&newPolicy=" + escape('unsafe-url');
    110  yield checkIndividualResults("unsafe-url (changed) with no-referrer first", ["full"], [name+'unsafe-url']);
    111 
    112  yield resetState();
    113  var name = "origin-no-referrer";
    114  yield iframe.src = sjs + "&policy=" + escape('origin') + "&name=" + name + "&newPolicy=" + escape('no-referrer');
    115  yield checkIndividualResults("no-referrer (changed) with origin first", ["none"], [name+'no-referrer']);
    116 
    117  yield resetState();
    118  var name = "unsafe-url-no-referrer";
    119  yield iframe.src = sjs + "&policy=" + escape('unsafe-url') + "&name=" + name + "&newPolicy=" + escape('no-referrer');
    120  yield checkIndividualResults("no-referrer (changed) with unsafe-url first", ["none"], [name+'no-referrer']);
    121 
    122  // complete.
    123  SimpleTest.finish();
    124 })();
    125 
    126 </script>
    127 </head>
    128 
    129 <body onload="tests.next();">
    130  <iframe id="testframe"></iframe>
    131 
    132 </body>
    133 </html>