<!doctype html>
<meta charset=utf-8>
<title>requestIdleCallback on removed frame shouldn't call back</title>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script>
  async_test(function (t) {
    assert_false(document.hidden, "document.hidden must exist and be false to run this test properly");

    function start() {
      var frame = document.createElement('iframe');
      frame.addEventListener('load', _ => connect(frame), {once:true});
      frame.src = "about:blank";
      document.body.appendChild(frame);
    }

    function connect(frame) {
      var contentWindow = frame.contentWindow;
      contentWindow.requestIdleCallback(_ => callback0(frame, contentWindow));
      t.step_timeout(function() { t.done(); }, 1000);
    }

    function callback0(f, w) {
      document.body.removeChild(f);
      w.requestIdleCallback(t.unreached_func("requestIdleCallback callback should not trigger the callback"));
    }

    addEventListener('load', start, {once:true});
  }, "calling requestIdleCallback on a contentWindow from a removed iframe should not trigger the callback");
</script>
