<!doctype html>
<title>Scheduling API: Task Cancellation</title>
<link rel="author" title="Scott Haseley" href="mailto:shaseley@chromium.org">
<link rel="help" href="https://github.com/WICG/main-thread-scheduling">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>

<script>
'use strict';

async_test(t => {
  let result = '';
  let task_controllers = [];

  for (let i = 0; i < 5; i++) {
    let tc = new TaskController();
    let task = scheduler.postTask(() => {
      result += i.toString();
    }, { signal: tc.signal });
    if (i == 2) {
      task.then(() => {
        assert_unreached('This task should have been aborted');
      });
    } else {
      task.catch(() => {
        assert_unreached('This task should complete');
      });
    }
    task_controllers.push(tc);
  }

  task_controllers[2].abort();
  scheduler.postTask(t.step_func(() => {
    assert_equals(result, '0134');
  }));

  let final_task_tc = new TaskController();
  // Check that canceling running, completed, or canceled tasks is a no-op.
  scheduler.postTask(t.step_func_done(() => {
    final_task_tc.abort();
    task_controllers[2].abort();
    task_controllers[0].abort();
  }), { signal: final_task_tc.signal });

}, 'Test canceling a task');

</script>
