<!doctype html>
<meta charset=utf-8>
<title>multiple calls to requestIdleCallback</title>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<div id="log"></div>
<script>
  let option = {timeout: 50};

  async_test(function (t) {
    assert_false(document.hidden, "document.hidden must exist and be false to run this test properly");
    var counter = 0;
    function f(c) {
      assert_equals(counter, c);
      if (counter === 49) {
        t.done();
      }

      ++counter;
    }
    for (var i = 0; i < 100; ++i) {
      let j = i;
      window.requestIdleCallback(t.step_func(function () { f(j) }), option);
    }
  }, "requestIdleCallback callbacks should be invoked in order (called iteratively)");

  async_test(function (t) {
    assert_false(document.hidden, "document.hidden must exist and be false to run this test properly");
    var counter = 0;

    function f(c) {
      assert_equals(counter, c);
      if (counter === 49) {
        t.done();
      }

      ++counter;
      window.requestIdleCallback(t.step_func(function () { f(c + 1) }), option);
    }

    window.requestIdleCallback(t.step_func(function () { f(0) }), option);
  }, "requestIdleCallback callbacks should be invoked in order (called recursively)");

  let generateIdlePeriods = _ => requestAnimationFrame(generateIdlePeriods);
  generateIdlePeriods();
</script>
