<!doctype html>
<title>Replacement of document prototype object after document.open</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<iframe src="004-1.html"></iframe>
<script>
var t = async_test();
var iframe;
onload = t.step_func(function() {
  var iframe = document.getElementsByTagName("iframe")[0];
  var handle = Object.getPrototypeOf(iframe.contentDocument);
  handle.test_state = 1;
  iframe.contentDocument.open();
  var new_handle = Object.getPrototypeOf(iframe.contentDocument);
  assert_equals(new_handle.test_state, undefined);
  assert_not_equals(new_handle, handle);
  t.done();
});
</script>
