tor-browser

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

test_setting_document.domain_idn.html (4482B)


      1 <!DOCTYPE html>
      2 <html>
      3 <head>
      4  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
      5  <title>Setting document.domain and IDN</title>
      6  <script src="/tests/SimpleTest/SimpleTest.js"></script>
      7  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
      8 </head>
      9 <body>
     10 <p id="display"></p>
     11 <div id="content" style="display: none">
     12 
     13 </div>
     14 
     15 <!--
     16 
     17 This test checks that the value of document.domain is always punycode,
     18 no matter if the TLD is whitelisted or not.
     19 Prior to bug 945240 that was not true.
     20 
     21 -->
     22 
     23 <div>
     24 <h2>Whitelisted</h2>
     25 <iframe name="idnKidWhitelist" src="http://sub1.παράδειγμα.δοκιμή/tests/dom/tests/mochitest/dom-level0/idn_child.html?idn-whitelist"></iframe>
     26 <iframe name="punycodeKidWhitelist" src="http://sub1.παράδειγμα.δοκιμή/tests/dom/tests/mochitest/dom-level0/idn_child.html?punycode-whitelist"></iframe>
     27 </div>
     28 
     29 <div>
     30 <h2>Not whitelisted</h2>
     31 <iframe name="idnKidNoWhitelist" src="http://sub1.exaмple.test/tests/dom/tests/mochitest/dom-level0/idn_child.html?idn-nowhitelist"></iframe>
     32 <iframe name="punycodeKidNoWhitelist" src="http://sub1.exaмple.test/tests/dom/tests/mochitest/dom-level0/idn_child.html?punycode-nowhitelist"></iframe>
     33 </div>
     34 
     35 <pre id="test">
     36 <script class="testbody" type="application/javascript">
     37 
     38 SimpleTest.waitForExplicitFinish();
     39 
     40 var gotIDNNoWhitelist = false;
     41 var gotPunycodeNoWhitelist = false;
     42 var gotIDNWhitelist = false;
     43 var gotPunycodeWhitelist = false;
     44 
     45 var whitelistRegex =
     46  new RegExp("^http://sub1\\.παράδειγμα\\.δοκιμή/tests/dom/tests/" +
     47             "mochitest/dom-level0/idn_child\\.html\\?(.+)$");
     48 
     49 var noWhitelistRegex =
     50  new RegExp("^http://sub1\\.exaмple\\.test/tests/dom/tests/" +
     51             "mochitest/dom-level0/idn_child\\.html\\?(.+)$");
     52 
     53 var state = 0;
     54 
     55 var messages =
     56  [
     57   "idn-whitelist",
     58   "punycode-whitelist",
     59   "idn-nowhitelist",
     60   "punycode-nowhitelist",
     61  ];
     62 
     63 
     64 function receiveMessage(evt)
     65 {
     66  var origin = evt.origin;
     67  var match;
     68  if (/test$/.test(origin))
     69  {
     70    is(evt.origin, "http://sub1.xn--exaple-kqf.test", "wrong sender");
     71  }
     72  else
     73  {
     74    is(evt.origin, "http://sub1.xn--hxajbheg2az3al.xn--jxalpdlp", "wrong sender");
     75  }
     76 
     77  is(messages[state] + "-response", evt.data.split(" ")[0],
     78     "unexpected data: " + evt.data);
     79 
     80  switch (messages[state])
     81  {
     82    case "idn-whitelist":
     83      gotIDNWhitelist = true;
     84      ok(evt.source === window.frames.idnKidWhitelist, "wrong source");
     85      is(evt.data, "idn-whitelist-response", "wrong response for IDN");
     86      break;
     87 
     88    case "punycode-whitelist":
     89      gotPunycodeWhitelist = true;
     90      ok(evt.source === window.frames.punycodeKidWhitelist, "wrong source");
     91      is(evt.data, "punycode-whitelist-response", "wrong response for punycode");
     92      break;
     93 
     94    case "idn-nowhitelist":
     95      gotIDNNoWhitelist = true;
     96      ok(evt.source === window.frames.idnKidNoWhitelist, "wrong source");
     97      is(evt.data, "idn-nowhitelist-response", "wrong response for IDN");
     98      break;
     99 
    100    case "punycode-nowhitelist":
    101      gotPunycodeNoWhitelist = true;
    102      ok(evt.source === window.frames.punycodeKidNoWhitelist, "wrong source");
    103      is(evt.data, "punycode-nowhitelist-response", "wrong response for punycode");
    104      break;
    105 
    106    default:
    107      ok(false, "unreached");
    108      break;
    109  }
    110 
    111  state++;
    112 }
    113 
    114 function* rungen() {
    115  var target = window.frames.idnKidWhitelist;
    116  target.postMessage("idn-whitelist", "http://sub1.παράδειγμα.δοκιμή");
    117  receiveMessage(yield);
    118 
    119  ok(gotIDNWhitelist, "IDN whitelist message not received");
    120 
    121  var target = window.frames.punycodeKidWhitelist;
    122  target.postMessage("punycode-whitelist", "http://sub1.παράδειγμα.δοκιμή");
    123 
    124  receiveMessage(yield);
    125 
    126  ok(gotPunycodeWhitelist, "punycode whitelist message not received");
    127 
    128  var target = window.frames.idnKidNoWhitelist;
    129  target.postMessage("idn-nowhitelist", "http://sub1.exaмple.test");
    130 
    131  receiveMessage(yield);
    132 
    133  ok(gotIDNNoWhitelist, "IDN no-whitelist message not received");
    134 
    135  var target = window.frames.punycodeKidNoWhitelist;
    136  target.postMessage("punycode-nowhitelist",
    137                     "http://sub1.exaмple.test");
    138 
    139  receiveMessage(yield);
    140 
    141  ok(gotPunycodeNoWhitelist,
    142     "punycode no-whitelist message not received");
    143 
    144  SimpleTest.finish();
    145 }
    146 
    147 var gen = rungen();
    148 window.addEventListener("message", (m) => gen.next(m));
    149 window.addEventListener("load", () => gen.next());
    150 </script>
    151 </pre>
    152 </body>
    153 </html>