1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
async_test(t => {
const frame = document.createElement("frame"),
form = document.createElement("form");
t.add_cleanup(() => frame.remove());
form.action = "/common/blank.html";
form.target = "doesnotmattertwobits";
frame.name = "doesnotmattertwobits";
document.body.appendChild(frame);
frame.onload = t.step_func(() => {
if(frame.contentWindow.location.href === "about:blank")
return;
assert_unreached();
});
form.submit();
t.step_timeout(() => {
assert_equals(frame.contentWindow.location.href, "about:blank");
t.done();
}, 500);
}, "<form> not connected to a document cannot navigate");
async_test(t => {
const frame = document.createElement("frame"),
form = document.createElement("form");
t.add_cleanup(() => frame.remove());
form.action = "/common/blank.html";
form.target = "doesnotmattertwoqbits";
form.onsubmit = t.step_func(() => form.remove());
frame.name = "doesnotmattertwoqbits";
document.body.appendChild(frame);
document.body.appendChild(form);
frame.onload = t.step_func(() => {
if(frame.contentWindow.location.href === "about:blank")
return;
assert_unreached();
});
const submit = form.appendChild(document.createElement("input"));
submit.type = "submit"
submit.click();
t.step_timeout(() => {
assert_equals(frame.contentWindow.location.href, "about:blank");
t.done();
}, 500);
}, "<form> not connected to a document after submit event cannot navigate");
async_test(t => {
const frame = document.createElement("frame"),
form = document.createElement("form");
t.add_cleanup(() => frame.remove());
form.action = "/";
document.body.appendChild(frame);
frame.contentDocument.body.appendChild(form);
frame.onload = t.step_func(() => {
if(frame.contentWindow.location.href === "about:blank")
return;
form.submit();
t.step_timeout(() => {
assert_equals(frame.contentWindow.location.pathname, "/common/blank.html");
t.done();
}, 500)
});
frame.src = "/common/blank.html";
}, "<form> in a navigated document cannot navigate");
|