Skip to content

Commit

Permalink
Bug 1534176 [wpt PR 15518] - HTML: opener and discarded auxiliary bro…
Browse files Browse the repository at this point in the history
…wsing context, a=testonly

Automatic update from web-platform-tests
HTML: opener and discarded auxiliary browsing context

For whatwg/html#4379.
--

wpt-commits: 3df07160e80e074edf0579627b7d5689f7bebf7b
wpt-pr: 15518
  • Loading branch information
annevk authored and jgraham committed Apr 1, 2019
1 parent a729e26 commit aa4762b
Showing 1 changed file with 48 additions and 28 deletions.
Original file line number Diff line number Diff line change
@@ -1,10 +1,48 @@
<!doctype html>
<title>opener and "removed" embedded documents</title>
<title>opener and discarded browsing contexts</title>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<div id=log></div>
<iframe name=matchesastring></iframe>
<script>
function testOpener(t, otherW, thisW, discardOtherBC, isDiscardedFromATask) {
assert_equals(otherW.opener, thisW, "opener before removal");

const openerDesc = Object.getOwnPropertyDescriptor(otherW, "opener"),
openerGet = openerDesc.get;

assert_equals(openerGet(), thisW, "opener before removal via directly invoking the getter");
discardOtherBC();
if (isDiscardedFromATask) {
t.step_timeout(() => {
testOpenerRemainder(t, otherW, openerDesc, openerGet);
}, 250);
} else {
testOpenerRemainder(t, otherW, openerDesc, openerGet);
}
}

function testOpenerRemainder(t, otherW, openerDesc, openerGet) {
assert_equals(otherW.opener, null, "opener after removal");
assert_equals(openerGet(), null, "opener after removal via directly invoking the getter");

otherW.opener = null;
assert_equals(openerGet(), null, "opener after setting it null via directly invoking the getter");
const openerDescNull = Object.getOwnPropertyDescriptor(otherW, "opener");
assert_not_equals(openerDescNull, openerDesc);
assert_object_equals(openerDescNull, openerDesc);

otherW.opener = "immaterial";
assert_equals(openerGet(), null, "opener after setting it \"immaterial\" via directly invoking the getter");
const openerDescImmaterial = Object.getOwnPropertyDescriptor(otherW, "opener");
assert_equals(openerDescImmaterial.value, "immaterial");
assert_true(openerDescImmaterial.writable);
assert_true(openerDescImmaterial.enumerable);
assert_true(openerDescImmaterial.configurable);

t.done();
}

async_test(t => {
const frame = document.querySelector("iframe"),
frameW = frame.contentWindow;
Expand All @@ -14,33 +52,15 @@
return;
}

// Test bits
assert_equals(frameW.opener, window, "opener before removal");

const openerDesc = Object.getOwnPropertyDescriptor(frameW, "opener"),
openerGet = openerDesc.get;

assert_equals(openerGet(), window, "opener before removal via directly invoking the getter");
frame.remove();
assert_equals(frameW.opener, null, "opener after removal");
assert_equals(openerGet(), null, "opener after removal via directly invoking the getter");

frameW.opener = null;
assert_equals(openerGet(), null, "opener after setting it null via directly invoking the getter");
const openerDescNull = Object.getOwnPropertyDescriptor(frameW, "opener");
assert_not_equals(openerDescNull, openerDesc);
assert_object_equals(openerDescNull, openerDesc);

frameW.opener = "immaterial";
assert_equals(openerGet(), null, "opener after setting it \"immaterial\" via directly invoking the getter");
const openerDescImmaterial = Object.getOwnPropertyDescriptor(frameW, "opener");
assert_equals(openerDescImmaterial.value, "immaterial");
assert_true(openerDescImmaterial.writable);
assert_true(openerDescImmaterial.enumerable);
assert_true(openerDescImmaterial.configurable);

t.done();
testOpener(t, frameW, window, () => frame.remove(), false);
});
window.open("/common/blank.html", "matchesastring");
});
}, "opener of discarded nested browsing context");

async_test(t => {
const popupW = window.open("/common/blank.html");
popupW.onload = t.step_func(() => {
testOpener(t, popupW, window, () => popupW.close(), true);
});
}, "opener of discarded auxiliary browsing context");
</script>

0 comments on commit aa4762b

Please sign in to comment.