<!DOCTYPE html>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script src="../fast/dom/custom/testutils.js"></script>
<body>
<script>
'use strict';

// TODO(dominicc): Port fork() etc. to work with testharness, then
// remove these.
function debug() {}
function finishJSTest() {}

(() => {

if (fork()) {
  // The controlling parent frame.
  let t = async_test('retrieving the prototype destroys the context');
  let watcher = new EventWatcher(t, window, 'message');
  watcher.wait_for('message').then(t.step_func((event) => {
    assert_equals(event.data, 'PASS destroyed context');
    return watcher.wait_for('message');
  })).then(t.step_func((event) => {
    assert_equals(event.data, 'PASS child done');
    t.done();
  }));
} else {
  // The child frame.
  let BadConstructor = (function () {}).bind({});
  Object.defineProperty(BadConstructor, 'prototype', {
    get() {
      destroyContext();
      return new Object();
    }
  });

  window.customElements.define('x-x', BadConstructor);
  done();
}

})();
</script>
