blob: 9732bef459bad3ad35c021192efcca7dc097b3ea [file] [log] [blame] [edit]
<!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>