<!DOCTYPE html><!-- webkit-test-runner [ experimental: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 logs = [];

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

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

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

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

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

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