<!DOCTYPE html>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src=/resources/testdriver.js></script>
<script src=/resources/testdriver-vendor.js></script>
<script src=/fetch/metadata/resources/helper.js></script>
<body>
<script>
// Forced navigations:
async_test(t => {
let w = window.open("https://{{host}}:{{ports[https][0]}}/fetch/metadata/resources/post-to-owner.py");
t.add_cleanup(_ => w.close());
window.addEventListener('message', t.step_func(e => {
if (e.source != w)
return;
assert_header_equals(e.data, {
"site": "same-origin",
"user": "",
"mode": "navigate",
"dest": "document"
}, "Same-origin window, forced");
t.done();
}));
}, "Same-origin window, forced");
async_test(t => {
let w = window.open("https://{{hosts[][www]}}:{{ports[https][0]}}/fetch/metadata/resources/post-to-owner.py");
t.add_cleanup(_ => w.close());
window.addEventListener('message', t.step_func(e => {
if (e.source != w)
return;
assert_header_equals(e.data, {
"site": "same-site",
"user": "",
"mode": "navigate",
"dest": "document"
}, "Same-site window, forced");
t.done();
}));
}, "Same-site window, forced");
async_test(t => {
let w = window.open("https://{{hosts[alt][www]}}:{{ports[https][0]}}/fetch/metadata/resources/post-to-owner.py");
t.add_cleanup(_ => w.close());
window.addEventListener('message', t.step_func(e => {
if (e.source != w)
return;
assert_header_equals(e.data, {
"site": "cross-site",
"user": "",
"mode": "navigate",
"dest": "document"
}, "Cross-site window, forced");
t.done();
}));
}, "Cross-site window, forced");
async_test(t => {
let w = window.open("https://{{host}}:{{ports[https][0]}}/fetch/metadata/resources/post-to-owner.py");
t.add_cleanup(_ => w.close());
let messages = 0;
window.addEventListener('message', t.step_func(e => {
messages++;
if (e.source != w)
return;
assert_header_equals(e.data, {
"site": "same-origin",
"user": "",
"mode": "navigate",
"dest": "document"
}, "Same-origin window, forced, reloaded");
if (messages == 1) {
w.location.reload();
} else {
t.done();
}
}));
}, "Same-origin window, forced, reloaded");
async_test(t => {
let w = window.open("https://{{hosts[][www]}}:{{ports[https][0]}}/fetch/metadata/resources/post-to-owner.py");
t.add_cleanup(_ => w.close());
let messages = 0;
window.addEventListener('message', t.step_func(e => {
messages++;
if (e.source != w)
return;
assert_header_equals(e.data, {
"site": "same-site",
"user": "",
"mode": "navigate",
"dest": "document"
}, "Same-site window, forced, reloaded");
if (messages == 1) {
w.location.reload();
} else {
t.done();
}
}));
}, "Same-site window, forced, reloaded");
async_test(t => {
let w = window.open("https://{{hosts[alt][www]}}:{{ports[https][0]}}/fetch/metadata/resources/post-to-owner.py");
t.add_cleanup(_ => w.close());
let messages = 0;
window.addEventListener('message', t.step_func(e => {
messages++;
if (e.source != w)
return;
assert_header_equals(e.data, {
"site": "cross-site",
"user": "",
"mode": "navigate",
"dest": "document"
}, "Cross-site window, forced, reloaded");
if (messages == 1) {
w.location.reload();
} else {
t.done();
}
}));
}, "Cross-site window, forced, reloaded");
// User-activated navigations:
async_test(t => {
let b = document.createElement('button');
b.onclick = t.step_func(_ => {
let w = window.open("https://{{host}}:{{ports[https][0]}}/fetch/metadata/resources/post-to-owner.py");
t.add_cleanup(_ => w.close());
window.addEventListener('message', t.step_func(e => {
if (e.source != w)
return;
assert_header_equals(e.data, {
"site": "same-origin",
"user": "?1",
"mode": "navigate",
"dest": "document"
}, "Same-origin window, user-activated");
t.done();
}));
});
document.body.appendChild(b);
test_driver.click(b);
}, "Same-origin window, user-activated");
async_test(t => {
let b = document.createElement('button');
b.onclick = t.step_func(_ => {
let w = window.open("https://{{hosts[][www]}}:{{ports[https][0]}}/fetch/metadata/resources/post-to-owner.py");
t.add_cleanup(_ => w.close());
window.addEventListener('message', t.step_func(e => {
if (e.source != w)
return;
assert_header_equals(e.data, {
"site": "same-site",
"user": "?1",
"mode": "navigate",
"dest": "document"
}, "Same-site window, user-activated");
t.done();
}));
});
document.body.appendChild(b);
test_driver.click(b);
}, "Same-site window, user-activated");
async_test(t => {
let b = document.createElement('button');
b.onclick = t.step_func(_ => {
let w = window.open("https://{{hosts[alt][www]}}:{{ports[https][0]}}/fetch/metadata/resources/post-to-owner.py");
t.add_cleanup(_ => w.close());
window.addEventListener('message', t.step_func(e => {
if (e.source != w)
return;
assert_header_equals(e.data, {
"site": "cross-site",
"user": "?1",
"mode": "navigate",
"dest": "document"
}, "Cross-site window, user-activated");
t.done();
}));
});
document.body.appendChild(b);
test_driver.click(b);
}, "Cross-site window, user-activated");
</script>