<!doctype html><!-- webkit-test-runner [ experimental:RequestIdleCallbackEnabled=true ] -->
<meta charset=utf-8>
<title>cancelling idle requests</title>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<div id="log"></div>
<script>
  test(function (t) {
    window.cancelIdleCallback(42);
    assert_true(true);
  }, "cancelIdleCallback does nothing if there is no callback with the given handle");

  async_test(function (t) {
    assert_false(document.hidden, "document.hidden must exist and be false to run this test properly");
    var neverCalled = true;
    var handle = window.requestIdleCallback(function () {
      neverCalled = false;
    });
    window.cancelIdleCallback(handle);

    t.step_timeout(function() {
      assert_true(neverCalled);
      t.done();
    }, 2000);
  }, "A cancelled callback is never invoked");

  async_test(function (t) {
    var handle = requestIdleCallback(t.step_func_done(function () {
      cancelIdleCallback(handle);
    }));
  }, "Cancelling the currently executing idle callback should be allowed");
</script>
