| // META: title=Scheduler: TaskController.abort() Aborts Correct Task |
| // META: global=window,worker |
| 'use strict'; |
| |
| promise_test(async t => { |
| const taskControllers = []; |
| const taskResults = []; |
| |
| for (let i = 0; i < 5; i++) { |
| const controller = new TaskController(); |
| taskControllers.push(controller); |
| |
| const signal = controller.signal; |
| taskResults.push(scheduler.postTask(() => i, {signal})); |
| } |
| |
| const abortedTask = taskResults.splice(2, 1)[0]; |
| taskControllers[2].abort(); |
| await promise_rejects_dom(t, 'AbortError', abortedTask); |
| |
| const result = await Promise.all(taskResults); |
| assert_equals(result.toString(), '0,1,3,4'); |
| }, 'Test aborting a task aborts the appropriate task'); |