| <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"><!-- webkit-test-runner [ jscOptions=--useShadowRealm=true ] --> |
| <html> |
| <head> |
| <script src="../resources/js-test-pre.js"></script> |
| </head> |
| <body> |
| <script src =../resources/testharness.js></script> |
| <script src =../resources/testharnessreport.js></script> |
| <script> |
| description("Test to ensure correct behaviour of ShadowRealm.prototype.evaluate"); |
| |
| function assert_closed_opener(w, closed, opener) { |
| assert_equals(w.closed, closed); |
| assert_equals(w.opener, opener); |
| } |
| |
| promise_test(async t => { |
| const openee = window.open("", "greatname"); |
| const outerShadowRealm = new ShadowRealm(); |
| |
| // setup realm nested in outerShadowRealm |
| outerShadowRealm.evaluate("var innerRealm = new ShadowRealm();"); |
| outerShadowRealm.evaluate("var callInInner = innerRealm.evaluate(\"(cb) => cb()\");"); |
| |
| const callInNestedRealm = outerShadowRealm.evaluate("(cb) => callInInner(cb)"); |
| |
| // call close window two levels deep |
| assert_closed_opener(openee, false, self); |
| callInNestedRealm(() => openee.close()); |
| // openee.close() |
| assert_closed_opener(openee, true, self); |
| }, "window.close() affects name targeting immediately"); |
| </script> |
| </body> |
| </html> |