OLD | NEW |
---|---|
1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/task_scheduler/scheduler_single_thread_task_runner_manager.h" | 5 #include "base/task_scheduler/scheduler_single_thread_task_runner_manager.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/memory/ptr_util.h" | 8 #include "base/memory/ptr_util.h" |
9 #include "base/synchronization/atomic_flag.h" | 9 #include "base/synchronization/atomic_flag.h" |
10 #include "base/synchronization/lock.h" | 10 #include "base/synchronization/lock.h" |
(...skipping 21 matching lines...) Expand all Loading... | |
32 | 32 |
33 namespace { | 33 namespace { |
34 | 34 |
35 class TaskSchedulerSingleThreadTaskRunnerManagerTest : public testing::Test { | 35 class TaskSchedulerSingleThreadTaskRunnerManagerTest : public testing::Test { |
36 public: | 36 public: |
37 TaskSchedulerSingleThreadTaskRunnerManagerTest() | 37 TaskSchedulerSingleThreadTaskRunnerManagerTest() |
38 : service_thread_("TaskSchedulerServiceThread") {} | 38 : service_thread_("TaskSchedulerServiceThread") {} |
39 | 39 |
40 void SetUp() override { | 40 void SetUp() override { |
41 service_thread_.Start(); | 41 service_thread_.Start(); |
42 delayed_task_manager_ = | 42 delayed_task_manager_.Start(service_thread_.task_runner()); |
43 MakeUnique<DelayedTaskManager>(service_thread_.task_runner()); | |
44 single_thread_task_runner_manager_ = | 43 single_thread_task_runner_manager_ = |
45 MakeUnique<SchedulerSingleThreadTaskRunnerManager>( | 44 MakeUnique<SchedulerSingleThreadTaskRunnerManager>( |
46 &task_tracker_, delayed_task_manager_.get()); | 45 &task_tracker_, &delayed_task_manager_); |
robliao
2017/04/12 19:23:23
Now that I see the operator& usage, I think we sho
fdoray
2017/04/13 12:03:53
|delayed_task_manager_| is no longer a std::unique
robliao
2017/04/17 18:35:37
Ah, right you are. Missed that.
| |
47 StartSingleThreadTaskRunnerManagerFromSetup(); | 46 StartSingleThreadTaskRunnerManagerFromSetup(); |
48 } | 47 } |
49 | 48 |
50 void TearDown() override { | 49 void TearDown() override { |
51 TearDownSingleThreadTaskRunnerManager(); | 50 TearDownSingleThreadTaskRunnerManager(); |
52 delayed_task_manager_.reset(); | |
53 service_thread_.Stop(); | 51 service_thread_.Stop(); |
54 } | 52 } |
55 | 53 |
56 protected: | 54 protected: |
57 virtual void StartSingleThreadTaskRunnerManagerFromSetup() { | 55 virtual void StartSingleThreadTaskRunnerManagerFromSetup() { |
58 single_thread_task_runner_manager_->Start(); | 56 single_thread_task_runner_manager_->Start(); |
59 } | 57 } |
60 | 58 |
61 virtual void TearDownSingleThreadTaskRunnerManager() { | 59 virtual void TearDownSingleThreadTaskRunnerManager() { |
62 single_thread_task_runner_manager_->JoinForTesting(); | 60 single_thread_task_runner_manager_->JoinForTesting(); |
63 single_thread_task_runner_manager_.reset(); | 61 single_thread_task_runner_manager_.reset(); |
64 } | 62 } |
65 | 63 |
66 std::unique_ptr<SchedulerSingleThreadTaskRunnerManager> | 64 std::unique_ptr<SchedulerSingleThreadTaskRunnerManager> |
67 single_thread_task_runner_manager_; | 65 single_thread_task_runner_manager_; |
68 TaskTracker task_tracker_; | 66 TaskTracker task_tracker_; |
69 | 67 |
70 private: | 68 private: |
71 Thread service_thread_; | 69 Thread service_thread_; |
72 std::unique_ptr<DelayedTaskManager> delayed_task_manager_; | 70 DelayedTaskManager delayed_task_manager_; |
73 | 71 |
74 DISALLOW_COPY_AND_ASSIGN(TaskSchedulerSingleThreadTaskRunnerManagerTest); | 72 DISALLOW_COPY_AND_ASSIGN(TaskSchedulerSingleThreadTaskRunnerManagerTest); |
75 }; | 73 }; |
76 | 74 |
77 void CaptureThreadRef(PlatformThreadRef* thread_ref) { | 75 void CaptureThreadRef(PlatformThreadRef* thread_ref) { |
78 ASSERT_TRUE(thread_ref); | 76 ASSERT_TRUE(thread_ref); |
79 *thread_ref = PlatformThread::CurrentRef(); | 77 *thread_ref = PlatformThread::CurrentRef(); |
80 } | 78 } |
81 | 79 |
82 void CaptureThreadPriority(ThreadPriority* thread_priority) { | 80 void CaptureThreadPriority(ThreadPriority* thread_priority) { |
(...skipping 395 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
478 PlatformThread::Sleep(TestTimeouts::tiny_timeout()); | 476 PlatformThread::Sleep(TestTimeouts::tiny_timeout()); |
479 manager_started.Set(); | 477 manager_started.Set(); |
480 single_thread_task_runner_manager_->Start(); | 478 single_thread_task_runner_manager_->Start(); |
481 | 479 |
482 // This should not hang if the task is scheduled after Start(). | 480 // This should not hang if the task is scheduled after Start(). |
483 task_running.Wait(); | 481 task_running.Wait(); |
484 } | 482 } |
485 | 483 |
486 } // namespace internal | 484 } // namespace internal |
487 } // namespace base | 485 } // namespace base |
OLD | NEW |