[TaskScheduler] Add a test to exercise AddDelayedTask() during Start().

https://chromium-coverage.appspot.com/reports/559420/linux/chromium/src/base/task_scheduler/delayed_task_manager.cc.html

Highlighted that we had untested code. The re-check behind the lock is
required to support AddDelayedTask() racing with Start(). Added a test
for this race which will hopefully trigger coverage here :)

21.5M  if (started_.IsSet()) {
21.2M    AddDelayedTaskNow(std::move(task), delay,
21.2M                      std::move(post_task_now_callback));
21.2M  } else {
301k    AutoSchedulerLock auto_lock(lock_);
301k    if (started_.IsSet()) {
0         AddDelayedTaskNow(std::move(task), delay,
0                           std::move(post_task_now_callback));
301k    } else {
301k      tasks_added_before_start_.push_back(
301k          {std::move(task), std::move(post_task_now_callback)});
301k    }
301k  }

R=fdoray@chromium.org

Bug: 844597
Change-Id: I7bd9f47e0c76db5f0a4309210db33cb746b83eeb
Reviewed-on: https://chromium-review.googlesource.com/1066621
Reviewed-by: François Doray <fdoray@chromium.org>
Commit-Queue: Gabriel Charette <gab@chromium.org>
Cr-Commit-Position: refs/heads/master@{#560626}

CrOS-Libchrome-Original-Commit: 029d79cd5c7d38489ba843951f0ec47f213bf05a
1 file changed
tree: 68b5c02c433803a973508226d94ccf4b792f129b
  1. base/
  2. build/
  3. components/
  4. dbus/
  5. device/
  6. ipc/
  7. mojo/
  8. testing/
  9. third_party/
  10. ui/