summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/scheduler/task-controller-setPriority-delayed-task.any.js
blob: 43d24c8f92a16a53cdb3c5d7155e4523d139af81 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// META: title=Scheduler: Change Delayed Task Priority
// META: global=window,worker
'use strict';

promise_test(t => {
  let taskCount = 0;
  const start = performance.now();
  const controller = new TaskController({priority: 'background'});

  const task1 = scheduler.postTask(() => {
    assert_equals(++taskCount, 1);
    controller.setPriority('user-blocking');
  }, {priority: 'user-blocking', delay: 10});

  const task2 = scheduler.postTask(() => {
    assert_equals(++taskCount, 2);

    const elapsed = performance.now() - start;

    if(navigator.userAgent.toLowerCase().indexOf('firefox') > -1){
      // Firefox returns the timings with different precision,
      // so we put 19 here.
      assert_greater_than_equal(elapsed, 19);
    } else {
      assert_greater_than_equal(elapsed, 20);
    }
  }, {signal: controller.signal, delay: 20});

  return Promise.all([task1, task2]);

}, "Tests delay when changing a delayed task's priority");