|
1 <!DOCTYPE html> |
|
2 <html> |
|
3 <head> |
|
4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> |
|
5 <title>Child window on a site whose "base" domain contains IDN</title> |
|
6 <script type="application/javascript"> |
|
7 function run() |
|
8 { |
|
9 var target = document.getElementById("location"); |
|
10 target.textContent = location.hostname + ":" + (location.port || 80); |
|
11 } |
|
12 |
|
13 function receiveMessage(evt) |
|
14 { |
|
15 if (evt.origin !== "http://mochi.test:8888") |
|
16 return; |
|
17 |
|
18 var message = evt.data + "-response"; |
|
19 |
|
20 var domain = document.domain; |
|
21 if (/test$/.test(domain)) |
|
22 { |
|
23 // XXX should really be IDN (bug 414090) |
|
24 //if (domain !== "sub1.exaмple.test") |
|
25 // message += " wrong-initial-domain(" + domain + ")"; |
|
26 // for now expect the punycode value |
|
27 if (domain !== "sub1.xn--exaple-kqf.test") |
|
28 message += " wrong-initial-domain(" + domain + ")"; |
|
29 } |
|
30 else |
|
31 { |
|
32 if (domain !== "sub1.παράδειγμα.δοκιμή") |
|
33 message += " wrong-initial-domain(" + domain + ")"; |
|
34 } |
|
35 |
|
36 switch (location.search) |
|
37 { |
|
38 case "?idn-whitelist": |
|
39 message += idnTest("παράδειγμα.δοκιμή"); |
|
40 break; |
|
41 |
|
42 case "?punycode-whitelist": |
|
43 message += punycodeTest("xn--hxajbheg2az3al.xn--jxalpdlp"); |
|
44 break; |
|
45 |
|
46 case "?idn-nowhitelist": |
|
47 message += idnTest("exaмple.test"); |
|
48 break; |
|
49 |
|
50 case "?punycode-nowhitelist": |
|
51 message += punycodeTest("xn--exaple-kqf.test"); |
|
52 break; |
|
53 |
|
54 default: |
|
55 message += " unexpected-query(" + location.search + ")"; |
|
56 break; |
|
57 } |
|
58 |
|
59 evt.source.postMessage(message, evt.origin); |
|
60 } |
|
61 |
|
62 function idnTest(newDomain) |
|
63 { |
|
64 var errors = ""; |
|
65 |
|
66 try |
|
67 { |
|
68 document.domain = newDomain; |
|
69 } |
|
70 catch (e) |
|
71 { |
|
72 errors += " error-thrown-setting-to-idn(" + String(e).split("").join(",") + ")"; |
|
73 } |
|
74 |
|
75 return errors; |
|
76 } |
|
77 |
|
78 function punycodeTest(newDomain) |
|
79 { |
|
80 var errors = ""; |
|
81 |
|
82 try |
|
83 { |
|
84 document.domain = newDomain; |
|
85 } |
|
86 catch (e) |
|
87 { |
|
88 errors += " error-thrown-setting-to-punycode(" + String(e).split("").join(",") + ")"; |
|
89 } |
|
90 |
|
91 return errors; |
|
92 } |
|
93 |
|
94 window.addEventListener("message", receiveMessage, false); |
|
95 window.addEventListener("load", run, false); |
|
96 </script> |
|
97 </head> |
|
98 <body> |
|
99 <h1 id="location">Somewhere!</h1> |
|
100 </body> |
|
101 </html> |