blob: c43d3bd3bfbc73160ce7bdaac39d47bb04036b97 [file] [log] [blame]
<!doctype html>
<html>
<head>
<title>Auxiliary Browsing Contexts: window.opener</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/PrefixedLocalStorage.js"></script>
</head>
<body>
<div id="log"></div>
<script>
var prefixedLocalStorage;
setup (() => {
window.name = 'topWindow';
prefixedLocalStorage = new PrefixedLocalStorageTest();
});
function cleanup () {
prefixedLocalStorage.setItem('closeAll', 'true');
prefixedLocalStorage.clear();
}
function testOpener (t, target) {
t.add_cleanup(cleanup);
window.addEventListener('message', t.step_func(e => {
if (e.data.name === target) {
// The opener IDL attribute...must return the WindowProxy object of the
// browsing context from which the current browsing context was created
assert_equals(e.data.openerName, 'topWindow');
// Auxiliary browsing contexts are always top-level browsing contexts
assert_equals(e.data.isTop, true);
t.done();
}
}));
}
async_test(t => {
var target = 'windowOpenerA';
var a = document.createElement('a');
a.href = prefixedLocalStorage.url('resources/message-window-opener.html');
a.target = target;
document.body.appendChild(a);
testOpener(t, target);
a.click();
}, 'Newly-created auxiliary browsing context should report `window.opener`');
async_test(t => {
var target = 'windowOpenerB';
testOpener(t, target);
window.open(prefixedLocalStorage.url('resources/message-window-opener.html'),
target);
}, 'Browsing context created with `window.open` should report `window.opener`');
</script>
</body>
</html>