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>