зеркало из https://github.com/mozilla/gecko-dev.git
102 строки
2.2 KiB
HTML
102 строки
2.2 KiB
HTML
<!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>
|