<!DOCTYPE html>
<meta charset="utf-8">
<title>[[SetPrototypeOf]] on a WindowProxy object should not allow changing its value: cross-origin via document.domain after initially getting the object</title>
<link rel="help" href="http://html.spec.whatwg.org/multipage/#windowproxy-setprototypeof">
<link rel="author" title="Domenic Denicola" href="mailto:d@domenic.me">

<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/test-setting-immutable-prototype.js"></script>

<iframe src="/common/blank.html"></iframe>

<script>
"use strict";
setup({ explicit_done: true });

window.onload = () => {
  const target = frames[0];
  const origProto = Object.getPrototypeOf(target);

  test(() => {
    assert_not_equals(origProto, null);
  }, "Same-origin (for now): the prototype is accessible");

  document.domain = "{{host}}";

  test(() => {
    assert_equals(Object.getPrototypeOf(target), null);
  }, "Became cross-origin via document.domain: the prototype is now null");

  testSettingImmutablePrototype("Became cross-origin via document.domain", target, null, { isSameOriginDomain: false });

  testSettingImmutablePrototypeToNewValueOnly(
    "Became cross-origin via document.domain", target, origProto,
    "the original value from before going cross-origin", { isSameOriginDomain: false });

  done();
};
</script>
