OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/backend_migrator.h" | 5 #include "chrome/browser/sync/backend_migrator.h" |
6 | 6 |
7 #include "base/message_loop.h" | 7 #include "base/message_loop.h" |
8 #include "base/tracked_objects.h" | 8 #include "base/tracked_objects.h" |
9 #include "chrome/browser/sync/glue/data_type_manager_mock.h" | 9 #include "chrome/browser/sync/glue/data_type_manager_mock.h" |
10 #include "chrome/browser/sync/internal_api/write_transaction.h" | 10 #include "chrome/browser/sync/internal_api/write_transaction.h" |
(...skipping 29 matching lines...) Expand all Loading... |
40 Mock::VerifyAndClear(&service_); | 40 Mock::VerifyAndClear(&service_); |
41 preferred_types_.Put(syncable::BOOKMARKS); | 41 preferred_types_.Put(syncable::BOOKMARKS); |
42 preferred_types_.Put(syncable::PREFERENCES); | 42 preferred_types_.Put(syncable::PREFERENCES); |
43 preferred_types_.Put(syncable::AUTOFILL); | 43 preferred_types_.Put(syncable::AUTOFILL); |
44 | 44 |
45 ON_CALL(service_, GetPreferredDataTypes()). | 45 ON_CALL(service_, GetPreferredDataTypes()). |
46 WillByDefault(Return(preferred_types_)); | 46 WillByDefault(Return(preferred_types_)); |
47 | 47 |
48 migrator_.reset( | 48 migrator_.reset( |
49 new BackendMigrator( | 49 new BackendMigrator( |
50 "Profile0", test_user_share_.user_share(), service(), manager())); | 50 "Profile0", test_user_share_.user_share(), service(), manager(), |
| 51 base::Closure())); |
51 SetUnsyncedTypes(syncable::ModelTypeSet()); | 52 SetUnsyncedTypes(syncable::ModelTypeSet()); |
52 } | 53 } |
53 | 54 |
54 virtual void TearDown() { | 55 virtual void TearDown() { |
55 migrator_.reset(); | 56 migrator_.reset(); |
56 test_user_share_.TearDown(); | 57 test_user_share_.TearDown(); |
57 } | 58 } |
58 | 59 |
59 // Marks all types in |unsynced_types| as unsynced and all other | 60 // Marks all types in |unsynced_types| as unsynced and all other |
60 // types as synced. | 61 // types as synced. |
61 void SetUnsyncedTypes(syncable::ModelTypeSet unsynced_types) { | 62 void SetUnsyncedTypes(syncable::ModelTypeSet unsynced_types) { |
62 sync_api::WriteTransaction trans(FROM_HERE, | 63 sync_api::WriteTransaction trans(FROM_HERE, |
63 test_user_share_.user_share()); | 64 test_user_share_.user_share()); |
64 for (int i = syncable::FIRST_REAL_MODEL_TYPE; | 65 for (int i = syncable::FIRST_REAL_MODEL_TYPE; |
65 i < syncable::MODEL_TYPE_COUNT; ++i) { | 66 i < syncable::MODEL_TYPE_COUNT; ++i) { |
66 syncable::ModelType type = syncable::ModelTypeFromInt(i); | 67 syncable::ModelType type = syncable::ModelTypeFromInt(i); |
67 sync_pb::DataTypeProgressMarker progress_marker; | 68 sync_pb::DataTypeProgressMarker progress_marker; |
68 if (!unsynced_types.Has(type)) { | 69 if (!unsynced_types.Has(type)) { |
69 progress_marker.set_token("dummy"); | 70 progress_marker.set_token("dummy"); |
70 } | 71 } |
71 trans.GetDirectory()->SetDownloadProgress(type, progress_marker); | 72 trans.GetDirectory()->SetDownloadProgress(type, progress_marker); |
72 } | 73 } |
73 } | 74 } |
74 | 75 |
75 void SendConfigureDone(DataTypeManager::ConfigureStatus status, | 76 void SendConfigureDone(DataTypeManager::ConfigureStatus status, |
76 syncable::ModelTypeSet requested_types) { | 77 syncable::ModelTypeSet requested_types) { |
77 if (status == DataTypeManager::OK) { | 78 if (status == DataTypeManager::OK) { |
78 DataTypeManager::ConfigureResult result(status, requested_types); | 79 DataTypeManager::ConfigureResult result(status, requested_types); |
79 content::NotificationService::current()->Notify( | 80 migrator_->OnConfigureDone(result); |
80 chrome::NOTIFICATION_SYNC_CONFIGURE_DONE, | |
81 content::Source<DataTypeManager>(&manager_), | |
82 content::Details<const DataTypeManager::ConfigureResult>(&result)); | |
83 } else { | 81 } else { |
84 std::list<SyncError> errors; | 82 std::list<SyncError> errors; |
85 DataTypeManager::ConfigureResult result( | 83 DataTypeManager::ConfigureResult result( |
86 status, | 84 status, |
87 requested_types, | 85 requested_types, |
88 errors); | 86 errors); |
89 content::NotificationService::current()->Notify( | 87 migrator_->OnConfigureDone(result); |
90 chrome::NOTIFICATION_SYNC_CONFIGURE_DONE, | |
91 content::Source<DataTypeManager>(&manager_), | |
92 content::Details<const DataTypeManager::ConfigureResult>(&result)); | |
93 } | 88 } |
94 message_loop_.RunAllPending(); | 89 message_loop_.RunAllPending(); |
95 } | 90 } |
96 | 91 |
97 ProfileSyncService* service() { return &service_; } | 92 ProfileSyncService* service() { return &service_; } |
98 DataTypeManagerMock* manager() { return &manager_; } | 93 DataTypeManagerMock* manager() { return &manager_; } |
99 syncable::ModelTypeSet preferred_types() { return preferred_types_; } | 94 syncable::ModelTypeSet preferred_types() { return preferred_types_; } |
100 BackendMigrator* migrator() { return migrator_.get(); } | 95 BackendMigrator* migrator() { return migrator_.get(); } |
101 void RemovePreferredType(syncable::ModelType type) { | 96 void RemovePreferredType(syncable::ModelType type) { |
102 preferred_types_.Remove(type); | 97 preferred_types_.Remove(type); |
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
319 .WillOnce(Return(DataTypeManager::CONFIGURED)); | 314 .WillOnce(Return(DataTypeManager::CONFIGURED)); |
320 EXPECT_CALL(*manager(), Configure(_, sync_api::CONFIGURE_REASON_MIGRATION)) | 315 EXPECT_CALL(*manager(), Configure(_, sync_api::CONFIGURE_REASON_MIGRATION)) |
321 .Times(1); | 316 .Times(1); |
322 migrator()->MigrateTypes(to_migrate); | 317 migrator()->MigrateTypes(to_migrate); |
323 SetUnsyncedTypes(syncable::ModelTypeSet()); | 318 SetUnsyncedTypes(syncable::ModelTypeSet()); |
324 SendConfigureDone(DataTypeManager::ABORTED, syncable::ModelTypeSet()); | 319 SendConfigureDone(DataTypeManager::ABORTED, syncable::ModelTypeSet()); |
325 EXPECT_EQ(BackendMigrator::IDLE, migrator()->state()); | 320 EXPECT_EQ(BackendMigrator::IDLE, migrator()->state()); |
326 } | 321 } |
327 | 322 |
328 }; // namespace browser_sync | 323 }; // namespace browser_sync |
OLD | NEW |