<!doctype html><!-- webkit-test-runner [ experimental:RequestIdleCallbackEnabled=true ] -->
<meta charset=utf-8>
<title>requestIdleCallback timeout callback must be called with didTimeout equal to true</title>
<meta name="timeout" content="long">
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<div id="log"></div>
<script>
  async_test(function (t) {
    assert_false(document.hidden, "document.hidden must exist and be false to run this test properly");
    var counter = 0;

    function g(deadline) {
      assert_true(deadline.didTimeout)
      t.done();
    }

    function f(deadline) {
      assert_false(deadline.didTimeout);
      window.requestIdleCallback(t.step_func(g), {timeout:300});

      var d = Date.now() + 500;
      while (Date.now() < d) {

      }
    }
    window.requestIdleCallback(t.step_func(f));
  }, "requestIdleCallback callback should time out");

  async_test(function (t) {
    assert_false(document.hidden, "document.hidden must exist and be false to run this test properly");
    function g(deadline) {
      assert_false(deadline.didTimeout)
      t.done();
    }

    function f(deadline) {
      assert_false(deadline.didTimeout);
      window.requestIdleCallback(t.step_func(g), {timeout:100000});
    }
    window.requestIdleCallback(t.step_func(f));
  }, "requestIdleCallback callback should not time out");

</script>
