yield-abort.any.js (1255B)
1 'use strict'; 2 3 promise_test(t => { 4 const controller = new TaskController(); 5 const signal = controller.signal; 6 const task = scheduler.postTask(async () => { 7 controller.abort(); 8 const p = scheduler.yield(); 9 await promise_rejects_dom(t, 'AbortError', p); 10 }, {signal}); 11 return promise_rejects_dom(t, 'AbortError', task); 12 }, 'yield() with an aborted signal'); 13 14 promise_test(t => { 15 const controller = new TaskController(); 16 const signal = controller.signal; 17 return scheduler.postTask(async () => { 18 scheduler.postTask(async () => {controller.abort();}, {priority: 'user-blocking'}); 19 t.step(() => assert_false(signal.aborted)); 20 const p = scheduler.yield(); 21 await promise_rejects_dom(t, 'AbortError', p); 22 }, {signal}); 23 }, 'yield() aborted by TaskController in a separate task'); 24 25 promise_test(t => { 26 const controller = new AbortController(); 27 const signal = controller.signal; 28 return scheduler.postTask(async () => { 29 scheduler.postTask(async () => {controller.abort();}, {priority: 'user-blocking'}); 30 t.step(() => assert_false(signal.aborted)); 31 const p = scheduler.yield(); 32 await promise_rejects_dom(t, 'AbortError', p); 33 }, {signal}); 34 }, 'yield() aborted by AbortController in a separate task');