diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /testing/web-platform/tests/scheduler/task-signal-any-post-task-run-order.tentative.any.js | |
parent | Initial commit. (diff) | |
download | firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esrupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/scheduler/task-signal-any-post-task-run-order.tentative.any.js')
-rw-r--r-- | testing/web-platform/tests/scheduler/task-signal-any-post-task-run-order.tentative.any.js | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/testing/web-platform/tests/scheduler/task-signal-any-post-task-run-order.tentative.any.js b/testing/web-platform/tests/scheduler/task-signal-any-post-task-run-order.tentative.any.js new file mode 100644 index 0000000000..889217b081 --- /dev/null +++ b/testing/web-platform/tests/scheduler/task-signal-any-post-task-run-order.tentative.any.js @@ -0,0 +1,73 @@ +// META: title=Scheduler: Tasks Run in Priority Order +// META: global=window,worker + +promise_test(async t => { + const runOrder = []; + const schedule = (id, signal) => scheduler.postTask(() => { runOrder.push(id); }, {signal}); + + const tasks = []; + tasks.push(schedule('B1', TaskSignal.any([], {priority: 'background'}))); + tasks.push(schedule('B2', TaskSignal.any([], {priority: 'background'}))); + tasks.push(schedule('UV1', TaskSignal.any([], {priority: 'user-visible'}))); + tasks.push(schedule('UV2', TaskSignal.any([], {priority: 'user-visible'}))); + tasks.push(schedule('UB1', TaskSignal.any([], {priority: 'user-blocking'}))); + tasks.push(schedule('UB2', TaskSignal.any([], {priority: 'user-blocking'}))); + + await Promise.all(tasks); + + assert_equals(runOrder.toString(),'UB1,UB2,UV1,UV2,B1,B2'); +}, 'scheduler.postTask() tasks run in priority order with a fixed priority composite signal'); + +promise_test(async t => { + const runOrder = []; + const schedule = (id, priorityOrSignal) => { + if (priorityOrSignal instanceof TaskSignal) { + return scheduler.postTask(() => { runOrder.push(id); }, {signal: priorityOrSignal}); + } else { + return scheduler.postTask(() => { runOrder.push(id); }, {priority: priorityOrSignal}); + } + }; + + const controller = new TaskController({priority: 'user-blocking'}); + const signal = TaskSignal.any([], {priority: controller.signal}); + + const tasks = []; + tasks.push(schedule('B1', signal)); + tasks.push(schedule('B2', signal)); + tasks.push(schedule('UV1', 'user-visible')); + tasks.push(schedule('UV2', 'user-visible')); + tasks.push(schedule('UB1', 'user-blocking')); + tasks.push(schedule('UB2', 'user-blocking')); + + controller.setPriority('background'); + + await Promise.all(tasks); + + assert_equals(runOrder.toString(),'UB1,UB2,UV1,UV2,B1,B2'); +}, 'scheduler.postTask() tasks run in priority order with a dynamic priority composite signal'); + +promise_test(async t => { + const runOrder = []; + const schedule = (id, priorityOrSignal) => { + if (priorityOrSignal instanceof TaskSignal) { + return scheduler.postTask(() => { runOrder.push(id); }, {signal: priorityOrSignal}); + } else { + return scheduler.postTask(() => { runOrder.push(id); }, {priority: priorityOrSignal}); + } + }; + + const parentSignal = TaskSignal.any([], {priority: 'background'}); + const signal = TaskSignal.any([], {priority: parentSignal}); + + const tasks = []; + tasks.push(schedule('B1', signal)); + tasks.push(schedule('B2', signal)); + tasks.push(schedule('UV1', 'user-visible')); + tasks.push(schedule('UV2', 'user-visible')); + tasks.push(schedule('UB1', 'user-blocking')); + tasks.push(schedule('UB2', 'user-blocking')); + + await Promise.all(tasks); + + assert_equals(runOrder.toString(),'UB1,UB2,UV1,UV2,B1,B2'); +}, 'scheduler.postTask() tasks run in priority order with a composite signal whose source has fixed priority'); |