Add TaskScheduler::JoinForTesting().
Before this CL, there was no way to unregister a TaskScheduler
registered by TaskScheduler::CreateAndSetSimpleTaskScheduler()
(TaskSchedulerImpl::JoinForTesting() must be called before deleting a
TaskSchedulerImpl, but can only be called when the suggested reclaim
time is TimeDelta::Max()). This is impractical when unit testing a
class that calls TaskScheduler::CreateAndSetSimpleTaskScheduler()
(came up in https://codereview.chromium.org/2610493002/).
This CL:
- Allows TaskSchedulerImpl::JoinForTesting() to be called on a
TaskSchedulerImpl instance whose suggested reclaim time is not
TimeDelta::Max().
- Adds TaskScheduler::JoinForTesting(), so that no cast is required
to join the current TaskScheduler instance.
- Documents that TaskScheduler::JoinForTesting() must be called
before destroying a TaskScheduler (so that callers don't have to
look at task_scheduler_impl.h to learn that).
BUG=553459
Review-Url: https://codereview.chromium.org/2628313004
Cr-Commit-Position: refs/heads/master@{#445915}
diff --git a/base/threading/sequenced_worker_pool_unittest.cc b/base/threading/sequenced_worker_pool_unittest.cc
index 6e20339..5f9c9bfd 100644
--- a/base/threading/sequenced_worker_pool_unittest.cc
+++ b/base/threading/sequenced_worker_pool_unittest.cc
@@ -19,7 +19,6 @@
#include "base/synchronization/lock.h"
#include "base/task_scheduler/scheduler_worker_pool_params.h"
#include "base/task_scheduler/task_scheduler.h"
-#include "base/task_scheduler/task_scheduler_impl.h"
#include "base/test/sequenced_task_runner_test_template.h"
#include "base/test/sequenced_worker_pool_owner.h"
#include "base/test/task_runner_test_template.h"
@@ -296,8 +295,7 @@
// Destroys and unregisters the registered TaskScheduler, if any.
void DeleteTaskScheduler() {
if (TaskScheduler::GetInstance()) {
- static_cast<internal::TaskSchedulerImpl*>(TaskScheduler::GetInstance())
- ->JoinForTesting();
+ TaskScheduler::GetInstance()->JoinForTesting();
TaskScheduler::SetInstance(nullptr);
}
}