OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "chrome/browser/sync_file_system/drive_backend/sync_task_manager.h" | 5 #include "chrome/browser/sync_file_system/drive_backend/sync_task_manager.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/location.h" | 8 #include "base/location.h" |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "chrome/browser/sync_file_system/drive_backend/sync_task_token.h" | 10 #include "chrome/browser/sync_file_system/drive_backend/sync_task_token.h" |
(...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
317 | 317 |
318 void SyncTaskManager::PushPendingTask( | 318 void SyncTaskManager::PushPendingTask( |
319 const base::Closure& closure, Priority priority) { | 319 const base::Closure& closure, Priority priority) { |
320 pending_tasks_.push(PendingTask(closure, priority, pending_task_seq_++)); | 320 pending_tasks_.push(PendingTask(closure, priority, pending_task_seq_++)); |
321 } | 321 } |
322 | 322 |
323 void SyncTaskManager::RunTask(scoped_ptr<SyncTaskToken> token, | 323 void SyncTaskManager::RunTask(scoped_ptr<SyncTaskToken> token, |
324 scoped_ptr<SyncTask> task) { | 324 scoped_ptr<SyncTask> task) { |
325 DCHECK(!running_foreground_task_); | 325 DCHECK(!running_foreground_task_); |
326 | 326 |
327 token->SetTaskLog(make_scoped_ptr(new TaskLogger::TaskLog)); | |
328 | |
329 running_foreground_task_ = task.Pass(); | 327 running_foreground_task_ = task.Pass(); |
330 running_foreground_task_->RunPreflight(token.Pass()); | 328 running_foreground_task_->RunPreflight(token.Pass()); |
331 } | 329 } |
332 | 330 |
333 void SyncTaskManager::StartNextTask() { | 331 void SyncTaskManager::StartNextTask() { |
334 if (!pending_backgrounding_task_.is_null()) { | 332 if (!pending_backgrounding_task_.is_null()) { |
335 base::Closure closure = pending_backgrounding_task_; | 333 base::Closure closure = pending_backgrounding_task_; |
336 pending_backgrounding_task_.Reset(); | 334 pending_backgrounding_task_.Reset(); |
337 closure.Run(); | 335 closure.Run(); |
338 return; | 336 return; |
339 } | 337 } |
340 | 338 |
341 if (!pending_tasks_.empty()) { | 339 if (!pending_tasks_.empty()) { |
342 base::Closure closure = pending_tasks_.top().task; | 340 base::Closure closure = pending_tasks_.top().task; |
343 pending_tasks_.pop(); | 341 pending_tasks_.pop(); |
344 closure.Run(); | 342 closure.Run(); |
345 return; | 343 return; |
346 } | 344 } |
347 | 345 |
348 if (client_) | 346 if (client_) |
349 client_->MaybeScheduleNextTask(); | 347 client_->MaybeScheduleNextTask(); |
350 } | 348 } |
351 | 349 |
352 } // namespace drive_backend | 350 } // namespace drive_backend |
353 } // namespace sync_file_system | 351 } // namespace sync_file_system |
OLD | NEW |