<!doctype html><!-- webkit-test-runner [ experimental:RequestIdleCallbackEnabled=true ] -->
<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>
