diff options
Diffstat (limited to 'dom/tests/mochitest/dom-level0/idn_child.html')
-rw-r--r-- | dom/tests/mochitest/dom-level0/idn_child.html | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/dom/tests/mochitest/dom-level0/idn_child.html b/dom/tests/mochitest/dom-level0/idn_child.html new file mode 100644 index 000000000..61243b322 --- /dev/null +++ b/dom/tests/mochitest/dom-level0/idn_child.html @@ -0,0 +1,101 @@ +<!DOCTYPE html> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> + <title>Child window on a site whose "base" domain contains IDN</title> + <script type="application/javascript"> +function run() +{ + var target = document.getElementById("location"); + target.textContent = location.hostname + ":" + (location.port || 80); +} + +function receiveMessage(evt) +{ + if (evt.origin !== "http://mochi.test:8888") + return; + + var message = evt.data + "-response"; + + var domain = document.domain; + if (/test$/.test(domain)) + { + // XXX should really be IDN (bug 414090) + //if (domain !== "sub1.exaмple.test") + // message += " wrong-initial-domain(" + domain + ")"; + // for now expect the punycode value + if (domain !== "sub1.xn--exaple-kqf.test") + message += " wrong-initial-domain(" + domain + ")"; + } + else + { + if (domain !== "sub1.παράδειγμα.δοκιμή") + message += " wrong-initial-domain(" + domain + ")"; + } + + switch (location.search) + { + case "?idn-whitelist": + message += idnTest("παράδειγμα.δοκιμή"); + break; + + case "?punycode-whitelist": + message += punycodeTest("xn--hxajbheg2az3al.xn--jxalpdlp"); + break; + + case "?idn-nowhitelist": + message += idnTest("exaмple.test"); + break; + + case "?punycode-nowhitelist": + message += punycodeTest("xn--exaple-kqf.test"); + break; + + default: + message += " unexpected-query(" + location.search + ")"; + break; + } + + evt.source.postMessage(message, evt.origin); +} + +function idnTest(newDomain) +{ + var errors = ""; + + try + { + document.domain = newDomain; + } + catch (e) + { + errors += " error-thrown-setting-to-idn(" + String(e).split("").join(",") + ")"; + } + + return errors; +} + +function punycodeTest(newDomain) +{ + var errors = ""; + + try + { + document.domain = newDomain; + } + catch (e) + { + errors += " error-thrown-setting-to-punycode(" + String(e).split("").join(",") + ")"; + } + + return errors; +} + +window.addEventListener("message", receiveMessage, false); +window.addEventListener("load", run, false); + </script> +</head> +<body> +<h1 id="location">Somewhere!</h1> +</body> +</html> |