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

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

iframe.onload = () => {
    requestIdleCallback(() => {
        requestIdleCallbackIsCalled = true;
        logsA.push('1.A1');
    });

    iframe.contentWindow.requestIdleCallback(() => {
        requestIdleCallbackIsCalled = true;
        logsB.push('2.B1');
    });

    iframe.contentWindow.requestIdleCallback(() => {
        requestIdleCallbackIsCalled = true;
        logsB.push('3.B2');
    });

    requestIdleCallback(() => {
        requestIdleCallbackIsCalled = true;
        logsA.push('4.A2');
    });
}
document.body.appendChild(iframe);

setTimeout(() => {
    shouldBeTrue('requestIdleCallbackIsCalled');
    shouldBe('logsA.length', '2');
    shouldBeEqualToString('logsA.join(", ")', '1.A1, 4.A2');
    shouldBe('logsB.length', '2');
    shouldBeEqualToString('logsB.join(", ")', '2.B1, 3.B2');
    finishJSTest();
}, 200);

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