Source code

Revision control

Copy as Markdown

Other Tools

// META: title=Scheduler: Tasks run order when multiple scheduler interfere the same event loop
promise_test(async t => {
const iframe = document.createElement("iframe");
iframe.onload = async function() {
const runOrder = [];
const tasks = [];
tasks.push(window.scheduler.postTask(function(){runOrder.push("outer")}));
tasks.push(iframe.contentWindow.scheduler.postTask(function(){runOrder.push("inner")}));
await Promise.all(tasks);
assert_equals(runOrder.toString(),'outer,inner');
}
document.body.appendChild(iframe);
}, 'Test scheduler.postTask() from two different schedulers with the same priority will run based on their enqueue order.');
promise_test(async t => {
const iframe = document.createElement("iframe");
iframe.onload = async function() {
const runOrder = [];
const tasks = [];
tasks.push(window.scheduler.postTask(function(){runOrder.push("outer")}));
tasks.push(iframe.contentWindow.scheduler.postTask(function(){runOrder.push("inner")}, {priority: "user-blocking"}));
await Promise.all(tasks);
assert_equals(runOrder.toString(),'inner,outer');
}
document.body.appendChild(iframe);
}, 'Test scheduler.postTask() from two different schedulers with different priorities will run based on their priorities');