Index: base/task_scheduler/task_scheduler_impl.h |
diff --git a/base/task_scheduler/task_scheduler_impl.h b/base/task_scheduler/task_scheduler_impl.h |
index 4907ce2df266e91e6aac6de9df4f213a1fa419dd..1e35639958b62aa6aced77ca1bb71fbb028f70dc 100644 |
--- a/base/task_scheduler/task_scheduler_impl.h |
+++ b/base/task_scheduler/task_scheduler_impl.h |
@@ -12,6 +12,7 @@ |
#include "base/callback.h" |
#include "base/logging.h" |
#include "base/macros.h" |
+#include "base/memory/ptr_util.h" |
#include "base/memory/ref_counted.h" |
#include "base/strings/string_piece.h" |
#include "base/synchronization/atomic_flag.h" |
@@ -38,8 +39,19 @@ namespace internal { |
// Default TaskScheduler implementation. This class is thread-safe. |
class BASE_EXPORT TaskSchedulerImpl : public TaskScheduler { |
public: |
- // |name| is used to label threads and histograms. |
- explicit TaskSchedulerImpl(StringPiece name); |
+ using TaskTrackerImpl = |
+#if defined(OS_POSIX) && !defined(OS_NACL_SFI) |
+ TaskTrackerPosix; |
+#else |
+ TaskTracker; |
+#endif |
+ |
+ // |name| is used to label threads and histograms. |task_tracker| can be used |
+ // for tests that need more execution control. By default, the production |
+ // TaskTracker is used. |
+ explicit TaskSchedulerImpl(StringPiece name, |
+ std::unique_ptr<TaskTrackerImpl> task_tracker = |
+ MakeUnique<TaskTrackerImpl>()); |
~TaskSchedulerImpl() override; |
// TaskScheduler: |
@@ -74,11 +86,7 @@ class BASE_EXPORT TaskSchedulerImpl : public TaskScheduler { |
const std::string name_; |
Thread service_thread_; |
-#if defined(OS_POSIX) && !defined(OS_NACL_SFI) |
- TaskTrackerPosix task_tracker_; |
-#else |
- TaskTracker task_tracker_; |
-#endif |
+ const std::unique_ptr<TaskTrackerImpl> task_tracker_; |
DelayedTaskManager delayed_task_manager_; |
SchedulerSingleThreadTaskRunnerManager single_thread_task_runner_manager_; |