зеркало из https://github.com/mozilla/gecko-dev.git
103 строки
3.2 KiB
HTML
103 строки
3.2 KiB
HTML
|
<!DOCTYPE html>
|
||
|
<html>
|
||
|
<head>
|
||
|
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
||
|
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
|
||
|
</head>
|
||
|
<body>
|
||
|
|
||
|
<script type="text/javascript">
|
||
|
|
||
|
SimpleTest.waitForExplicitFinish();
|
||
|
|
||
|
const SAME_ORIGIN_URI = "http://mochi.test:8888/tests/docshell/test/dummy_page.html";
|
||
|
const CROSS_ORIGIN_URI = "http://example.com/tests/docshell/test/dummy_page.html";
|
||
|
const NUMBER_OF_TESTS = 3;
|
||
|
let testCounter = 0;
|
||
|
|
||
|
function checkFinish() {
|
||
|
testCounter++;
|
||
|
if (testCounter < NUMBER_OF_TESTS) {
|
||
|
return;
|
||
|
}
|
||
|
SimpleTest.finish();
|
||
|
}
|
||
|
|
||
|
// ---- test 1 ----
|
||
|
|
||
|
let myFrame1 = document.createElement("iframe");
|
||
|
myFrame1.src = SAME_ORIGIN_URI;
|
||
|
myFrame1.addEventListener("load", checkLoadFrame1);
|
||
|
document.documentElement.appendChild(myFrame1);
|
||
|
|
||
|
function checkLoadFrame1() {
|
||
|
myFrame1.removeEventListener('load', checkLoadFrame1, false);
|
||
|
// window.location.href is no longer cross-origin accessible in gecko.
|
||
|
is(SpecialPowers.wrap(myFrame1.contentWindow).location.href, SAME_ORIGIN_URI,
|
||
|
"initial same origin dummy loaded into frame1");
|
||
|
|
||
|
SpecialPowers.wrap(myFrame1.contentWindow).location.hash = "#bar";
|
||
|
is(SpecialPowers.wrap(myFrame1.contentWindow).location.href, SAME_ORIGIN_URI + "#bar",
|
||
|
"initial same origin dummy#bar loaded into iframe1");
|
||
|
|
||
|
myFrame1.addEventListener("load", checkNavFrame1);
|
||
|
myFrame1.src = CROSS_ORIGIN_URI;
|
||
|
}
|
||
|
|
||
|
function checkNavFrame1() {
|
||
|
myFrame1.removeEventListener('load', checkNavFrame1, false);
|
||
|
is(SpecialPowers.wrap(myFrame1.contentWindow).location.href, CROSS_ORIGIN_URI,
|
||
|
"cross origin dummy loaded into frame1");
|
||
|
|
||
|
myFrame1.addEventListener("load", checkBackNavFrame1);
|
||
|
myFrame1.src = SAME_ORIGIN_URI + "#bar";
|
||
|
}
|
||
|
|
||
|
function checkBackNavFrame1() {
|
||
|
myFrame1.removeEventListener('load', checkBackNavFrame1, false);
|
||
|
is(SpecialPowers.wrap(myFrame1.contentWindow).location.href, SAME_ORIGIN_URI + "#bar",
|
||
|
"navagiating back to same origin dummy for frame1");
|
||
|
checkFinish();
|
||
|
}
|
||
|
|
||
|
// ---- test 2 ----
|
||
|
|
||
|
let myFrame2 = document.createElement("iframe");
|
||
|
myFrame2.src = "about:blank";
|
||
|
myFrame2.addEventListener("load", checkLoadFrame2);
|
||
|
document.documentElement.appendChild(myFrame2);
|
||
|
|
||
|
function checkLoadFrame2() {
|
||
|
myFrame2.removeEventListener('load', checkLoadFrame2, false);
|
||
|
is(SpecialPowers.wrap(myFrame2.contentWindow).location.href, "about:blank",
|
||
|
"initial about:blank frame loaded");
|
||
|
|
||
|
myFrame2.contentWindow.location.hash = "#foo";
|
||
|
is(SpecialPowers.wrap(myFrame2.contentWindow).location.href, "about:blank#foo",
|
||
|
"about:blank#foo frame loaded");
|
||
|
|
||
|
myFrame2.addEventListener('load', checkHistoryFrame2);
|
||
|
myFrame2.src = "about:blank";
|
||
|
}
|
||
|
|
||
|
function checkHistoryFrame2() {
|
||
|
myFrame2.removeEventListener('load', checkHistoryFrame2, false);
|
||
|
is(SpecialPowers.wrap(myFrame2.contentWindow).location.href, "about:blank",
|
||
|
"about:blank frame loaded again");
|
||
|
checkFinish();
|
||
|
}
|
||
|
|
||
|
// ---- test 3 ----
|
||
|
|
||
|
let myFrame3 = document.createElement("frame");
|
||
|
document.documentElement.appendChild(myFrame3);
|
||
|
myFrame3.contentWindow.location.hash = "#foo";
|
||
|
|
||
|
is(myFrame3.contentWindow.location.href, "about:blank#foo",
|
||
|
"created history entry with about:blank#foo");
|
||
|
checkFinish();
|
||
|
|
||
|
</script>
|
||
|
</body>
|
||
|
</html>
|