task-controller-setPriority-repeated.any.js (2197B)
1 // META: title=Scheduler: TaskController.setPriority() repeated calls 2 // META: global=window,worker 3 'use strict'; 4 5 promise_test(async t => { 6 const controller = new TaskController(); 7 const signal = controller.signal; 8 9 const tasks = []; 10 const runOrder = []; 11 const callback = id => { runOrder.push(id); }; 12 13 tasks.push(scheduler.postTask(() => callback(0), {signal})); 14 tasks.push(scheduler.postTask(() => callback(1), {priority: 'user-blocking'})); 15 tasks.push(scheduler.postTask(() => callback(2), {priority: 'user-visible' })); 16 17 controller.setPriority('background'); 18 assert_equals(signal.priority, 'background'); 19 20 await Promise.all(tasks); 21 assert_equals(runOrder.toString(), '1,2,0'); 22 23 while (tasks.length) { tasks.pop(); } 24 while (runOrder.length) { runOrder.pop(); } 25 26 tasks.push(scheduler.postTask(() => callback(3), {signal})); 27 tasks.push(scheduler.postTask(() => callback(4), {priority: 'user-blocking'})); 28 tasks.push(scheduler.postTask(() => callback(5), {priority: 'user-visible' })); 29 30 controller.setPriority('user-blocking'); 31 assert_equals(signal.priority, 'user-blocking'); 32 33 await Promise.all(tasks); 34 assert_equals(runOrder.toString(), '3,4,5'); 35 }, 'TaskController.setPriority() changes the priority of all associated tasks when called repeatedly'); 36 37 promise_test(async t => { 38 const controller = new TaskController(); 39 const signal = controller.signal; 40 41 const tasks = []; 42 const runOrder = []; 43 const callback = id => { runOrder.push(id); }; 44 45 tasks.push(scheduler.postTask(() => callback(0), {signal})); 46 tasks.push(scheduler.postTask(() => callback(1), {priority: 'user-blocking'})); 47 tasks.push(scheduler.postTask(() => callback(2), {priority: 'user-visible' })); 48 49 controller.setPriority('background'); 50 assert_equals(signal.priority, 'background'); 51 52 controller.setPriority('user-visible'); 53 assert_equals(signal.priority, 'user-visible'); 54 55 controller.setPriority('user-blocking'); 56 assert_equals(signal.priority, 'user-blocking'); 57 58 await Promise.all(tasks); 59 assert_equals(runOrder.toString(), '0,1,2'); 60 }, 'TaskController.setPriority() changes the priority of all associated tasks when called repeatedly before tasks run');