|  | <!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> |