OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "sync/internal_api/public/base/cancelation_signal.h" | 5 #include "sync/internal_api/public/base/cancelation_signal.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
9 #include "base/synchronization/waitable_event.h" | 9 #include "base/synchronization/waitable_event.h" |
10 #include "base/threading/platform_thread.h" | 10 #include "base/threading/platform_thread.h" |
(...skipping 30 matching lines...) Expand all Loading... |
41 bool WasStarted(); | 41 bool WasStarted(); |
42 | 42 |
43 private: | 43 private: |
44 base::WaitableEvent event_; | 44 base::WaitableEvent event_; |
45 base::Thread exec_thread_; | 45 base::Thread exec_thread_; |
46 CancelationSignal* cancel_signal_; | 46 CancelationSignal* cancel_signal_; |
47 bool was_started_; | 47 bool was_started_; |
48 }; | 48 }; |
49 | 49 |
50 BlockingTask::BlockingTask(CancelationSignal* cancel_signal) | 50 BlockingTask::BlockingTask(CancelationSignal* cancel_signal) |
51 : event_(true, false), | 51 : event_(base::WaitableEvent::ResetPolicy::MANUAL, |
52 exec_thread_("BlockingTaskBackgroundThread"), | 52 base::WaitableEvent::InitialState::NOT_SIGNALED), |
53 cancel_signal_(cancel_signal), | 53 exec_thread_("BlockingTaskBackgroundThread"), |
54 was_started_(false) { } | 54 cancel_signal_(cancel_signal), |
| 55 was_started_(false) {} |
55 | 56 |
56 BlockingTask::~BlockingTask() { | 57 BlockingTask::~BlockingTask() { |
57 if (was_started_) { | 58 if (was_started_) { |
58 cancel_signal_->UnregisterHandler(this); | 59 cancel_signal_->UnregisterHandler(this); |
59 } | 60 } |
60 } | 61 } |
61 | 62 |
62 void BlockingTask::RunAsync(base::WaitableEvent* task_start_signal, | 63 void BlockingTask::RunAsync(base::WaitableEvent* task_start_signal, |
63 base::WaitableEvent* task_done_signal) { | 64 base::WaitableEvent* task_done_signal) { |
64 exec_thread_.Start(); | 65 exec_thread_.Start(); |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
115 private: | 116 private: |
116 base::MessageLoop main_loop_; | 117 base::MessageLoop main_loop_; |
117 | 118 |
118 CancelationSignal signal_; | 119 CancelationSignal signal_; |
119 base::WaitableEvent task_start_event_; | 120 base::WaitableEvent task_start_event_; |
120 base::WaitableEvent task_done_event_; | 121 base::WaitableEvent task_done_event_; |
121 BlockingTask blocking_task_; | 122 BlockingTask blocking_task_; |
122 }; | 123 }; |
123 | 124 |
124 CancelationSignalTest::CancelationSignalTest() | 125 CancelationSignalTest::CancelationSignalTest() |
125 : task_start_event_(false, false), | 126 : task_start_event_(base::WaitableEvent::ResetPolicy::AUTOMATIC, |
126 task_done_event_(false, false), | 127 base::WaitableEvent::InitialState::NOT_SIGNALED), |
127 blocking_task_(&signal_) {} | 128 task_done_event_(base::WaitableEvent::ResetPolicy::AUTOMATIC, |
| 129 base::WaitableEvent::InitialState::NOT_SIGNALED), |
| 130 blocking_task_(&signal_) {} |
128 | 131 |
129 CancelationSignalTest::~CancelationSignalTest() {} | 132 CancelationSignalTest::~CancelationSignalTest() {} |
130 | 133 |
131 void CancelationSignalTest::StartBlockingTaskAsync() { | 134 void CancelationSignalTest::StartBlockingTaskAsync() { |
132 blocking_task_.RunAsync(&task_start_event_, &task_done_event_); | 135 blocking_task_.RunAsync(&task_start_event_, &task_done_event_); |
133 } | 136 } |
134 | 137 |
135 void CancelationSignalTest::StartBlockingTaskAndWaitForItToStart() { | 138 void CancelationSignalTest::StartBlockingTaskAndWaitForItToStart() { |
136 blocking_task_.RunAsync(&task_start_event_, &task_done_event_); | 139 blocking_task_.RunAsync(&task_start_event_, &task_done_event_); |
137 task_start_event_.Wait(); | 140 task_start_event_.Wait(); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
177 // progress. | 180 // progress. |
178 TEST_F(CancelationSignalTest, Cancel) { | 181 TEST_F(CancelationSignalTest, Cancel) { |
179 StartBlockingTaskAndWaitForItToStart(); | 182 StartBlockingTaskAndWaitForItToStart(); |
180 | 183 |
181 // Wait for the task to finish and let verify it has been started. | 184 // Wait for the task to finish and let verify it has been started. |
182 CancelBlocking(); | 185 CancelBlocking(); |
183 EXPECT_FALSE(VerifyTaskNotStarted()); | 186 EXPECT_FALSE(VerifyTaskNotStarted()); |
184 } | 187 } |
185 | 188 |
186 } // namespace syncer | 189 } // namespace syncer |
OLD | NEW |