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

Unified Diff: chrome/browser/sync_file_system/sync_task_manager_unittest.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
« no previous file with comments | « chrome/browser/sync_file_system/sync_task_manager.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/sync_file_system/sync_task_manager_unittest.cc
diff --git a/chrome/browser/sync_file_system/sync_task_manager_unittest.cc b/chrome/browser/sync_file_system/sync_task_manager_unittest.cc
index 708da02a5f9ffe3e63422317d03cac898143ca94..95bafd10f473a00bb09a58f419eaf660e9f5245a 100644
--- a/chrome/browser/sync_file_system/sync_task_manager_unittest.cc
+++ b/chrome/browser/sync_file_system/sync_task_manager_unittest.cc
@@ -20,6 +20,15 @@ void IncrementAndAssign(int* counter,
*status_out = status;
}
+template <typename T>
+void IncrementAndAssignWithOwnedPointer(T* object,
+ int* counter,
+ SyncStatusCode* status_out,
+ SyncStatusCode status) {
+ ++(*counter);
+ *status_out = status;
+}
+
class TaskManagerClient
: public SyncTaskManager::Client,
public base::SupportsWeakPtr<TaskManagerClient> {
@@ -235,4 +244,31 @@ TEST(SyncTaskManagerTest, ScheduleAndCancelSyncTask) {
EXPECT_FALSE(task_completed);
}
+TEST(SyncTaskManagerTest, ScheduleAndCancelTask) {
+ base::MessageLoop message_loop;
+
+ int callback_count = 0;
+ SyncStatusCode status = SYNC_STATUS_UNKNOWN;
+
+ bool task_started = false;
+ bool task_completed = false;
+
+ {
+ SyncTaskManager task_manager((base::WeakPtr<SyncTaskManager::Client>()));
+ task_manager.Initialize(SYNC_STATUS_OK);
+ MultihopSyncTask* task = new MultihopSyncTask(
+ &task_started, &task_completed);
+ task_manager.ScheduleTask(
+ base::Bind(&MultihopSyncTask::Run, base::Unretained(task)),
+ base::Bind(&IncrementAndAssignWithOwnedPointer<MultihopSyncTask>,
+ base::Owned(task), &callback_count, &status));
+ }
+
+ message_loop.RunUntilIdle();
+ EXPECT_EQ(0, callback_count);
+ EXPECT_EQ(SYNC_STATUS_UNKNOWN, status);
+ EXPECT_TRUE(task_started);
+ EXPECT_FALSE(task_completed);
+}
+
} // namespace sync_file_system
« no previous file with comments | « chrome/browser/sync_file_system/sync_task_manager.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698