<!DOCTYPE html><!-- webkit-test-runner [ RequestIdleCallbackEnabled=true ] -->
<html>
<body>
<script src="../resources/js-test.js"></script>
<script>

description('This tests that when requestIdleCallback is enabled, requestIdleCallback is eventaully called in the order.');

jsTestIsAsync = true;

const iframe = document.createElement('iframe');
const logsA = [];
const logsB = [];

iframe.onload = () => {
    requestIdleCallback(() => {
        logsA.push('A1');
        cancelIdleCallback(b1);
    });

    const b1 = iframe.contentWindow.requestIdleCallback(() => {
        logsB.push('B1');
        iframe.contentWindow.cancelIdleCallback(a3);
        iframe.contentWindow.cancelIdleCallback(b2);
    });
    const b2 = iframe.contentWindow.requestIdleCallback(() => logsB.push('B2'));

    window.a2 = requestIdleCallback(() => logsA.push('A2'));
    cancelIdleCallback(a2 + 1);
    window.a3 = requestIdleCallback(() => logsA.push('A3'));
    shouldBe('a3', 'a2 + 1');
    cancelIdleCallback(a2);
}
document.body.appendChild(iframe);

setTimeout(() => {
    shouldBe('logsA.length', '2');
    shouldBe('logsB.length', '1');
    shouldBeEqualToString('logsA.join(", ")', 'A1, A3');
    shouldBeEqualToString('logsB.join(", ")', 'B1');
    finishJSTest();
}, 200);

</script>
</body>
</html>
