<!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>
