OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/task_tracker.h" | 5 #include "base/task_scheduler/task_tracker.h" |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 | 8 |
9 #include "base/callback.h" | 9 #include "base/callback.h" |
10 #include "base/debug/task_annotator.h" | 10 #include "base/debug/task_annotator.h" |
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
281 bool TaskTracker::HasShutdownStarted() const { | 281 bool TaskTracker::HasShutdownStarted() const { |
282 return state_->HasShutdownStarted(); | 282 return state_->HasShutdownStarted(); |
283 } | 283 } |
284 | 284 |
285 bool TaskTracker::IsShutdownComplete() const { | 285 bool TaskTracker::IsShutdownComplete() const { |
286 AutoSchedulerLock auto_lock(shutdown_lock_); | 286 AutoSchedulerLock auto_lock(shutdown_lock_); |
287 return shutdown_event_ && shutdown_event_->IsSignaled(); | 287 return shutdown_event_ && shutdown_event_->IsSignaled(); |
288 } | 288 } |
289 | 289 |
290 void TaskTracker::SetHasShutdownStartedForTesting() { | 290 void TaskTracker::SetHasShutdownStartedForTesting() { |
| 291 AutoSchedulerLock auto_lock(shutdown_lock_); |
| 292 |
| 293 // Create a dummy |shutdown_event_| to satisfy TaskTracker's expectation of |
| 294 // its existence during shutdown (e.g. in OnBlockingShutdownTasksComplete()). |
| 295 shutdown_event_.reset( |
| 296 new WaitableEvent(WaitableEvent::ResetPolicy::MANUAL, |
| 297 WaitableEvent::InitialState::NOT_SIGNALED)); |
| 298 |
291 state_->StartShutdown(); | 299 state_->StartShutdown(); |
292 } | 300 } |
293 | 301 |
294 void TaskTracker::PerformRunTask(std::unique_ptr<Task> task) { | 302 void TaskTracker::PerformRunTask(std::unique_ptr<Task> task) { |
295 debug::TaskAnnotator().RunTask(kQueueFunctionName, task.get()); | 303 debug::TaskAnnotator().RunTask(kQueueFunctionName, task.get()); |
296 } | 304 } |
297 | 305 |
298 void TaskTracker::PerformShutdown() { | 306 void TaskTracker::PerformShutdown() { |
299 { | 307 { |
300 AutoSchedulerLock auto_lock(shutdown_lock_); | 308 AutoSchedulerLock auto_lock(shutdown_lock_); |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
450 subtle::NoBarrier_AtomicIncrement(&num_pending_undelayed_tasks_, -1); | 458 subtle::NoBarrier_AtomicIncrement(&num_pending_undelayed_tasks_, -1); |
451 DCHECK_GE(new_num_pending_undelayed_tasks, 0); | 459 DCHECK_GE(new_num_pending_undelayed_tasks, 0); |
452 if (new_num_pending_undelayed_tasks == 0) { | 460 if (new_num_pending_undelayed_tasks == 0) { |
453 AutoSchedulerLock auto_lock(flush_lock_); | 461 AutoSchedulerLock auto_lock(flush_lock_); |
454 flush_cv_->Signal(); | 462 flush_cv_->Signal(); |
455 } | 463 } |
456 } | 464 } |
457 | 465 |
458 } // namespace internal | 466 } // namespace internal |
459 } // namespace base | 467 } // namespace base |
OLD | NEW |