Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(379)

Unified Diff: chrome/browser/sync_file_system/sync_task_manager.cc

Issue 23513021: Make SyncTaskManager's regular Task cancellable (like SyncTask) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/sync_file_system/sync_task_manager.cc
diff --git a/chrome/browser/sync_file_system/sync_task_manager.cc b/chrome/browser/sync_file_system/sync_task_manager.cc
index a3b61281bd65ae75dc02df8dec98df86789b9a28..7878c445f1b0b91110e6ebc958493a7d26bb131a 100644
--- a/chrome/browser/sync_file_system/sync_task_manager.cc
+++ b/chrome/browser/sync_file_system/sync_task_manager.cc
@@ -38,7 +38,6 @@ class SyncTaskManager::TaskToken {
// Reinitializes the token.
manager_->NotifyTaskDone(
make_scoped_ptr(new TaskToken(manager_)),
- SyncStatusCallback(),
SYNC_STATUS_OK);
}
}
@@ -64,7 +63,6 @@ SyncTaskManager::~SyncTaskManager() {
void SyncTaskManager::Initialize(SyncStatusCode status) {
DCHECK(!token_);
NotifyTaskDone(make_scoped_ptr(new TaskToken(AsWeakPtr())),
- SyncStatusCallback(),
status);
}
@@ -114,7 +112,6 @@ void SyncTaskManager::ScheduleSyncTaskIfIdle(scoped_ptr<SyncTask> task) {
void SyncTaskManager::NotifyTaskDone(
scoped_ptr<TaskToken> token,
- const SyncStatusCallback& callback,
SyncStatusCode status) {
DCHECK(token);
last_operation_status_ = status;
@@ -129,8 +126,9 @@ void SyncTaskManager::NotifyTaskDone(
if (client_)
client_->NotifyLastOperationStatus(last_operation_status_);
- if (!callback.is_null())
- callback.Run(status);
+ if (!current_callback_.is_null())
+ current_callback_.Run(status);
+ current_callback_.Reset();
if (!pending_tasks_.empty()) {
base::Closure closure = pending_tasks_.front();
@@ -157,8 +155,10 @@ SyncStatusCallback SyncTaskManager::CreateCompletionCallback(
scoped_ptr<TaskToken> token,
const SyncStatusCallback& callback) {
DCHECK(token);
+ DCHECK(current_callback_.is_null());
+ current_callback_ = callback;
return base::Bind(&SyncTaskManager::NotifyTaskDone,
- AsWeakPtr(), base::Passed(&token), callback);
+ AsWeakPtr(), base::Passed(&token));
}
} // namespace sync_file_system
« no previous file with comments | « chrome/browser/sync_file_system/sync_task_manager.h ('k') | chrome/browser/sync_file_system/sync_task_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698