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

Side by Side Diff: chrome/browser/sync/backend_migrator_unittest.cc

Issue 10698014: [Sync] Rename csync namespace to syncer (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address comments Created 8 years, 5 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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/profile_sync_service_mock.h" 10 #include "chrome/browser/sync/profile_sync_service_mock.h"
11 #include "chrome/common/chrome_notification_types.h" 11 #include "chrome/common/chrome_notification_types.h"
12 #include "sync/internal_api/public/syncable/model_type_test_util.h" 12 #include "sync/internal_api/public/syncable/model_type_test_util.h"
13 #include "sync/internal_api/public/test/test_user_share.h" 13 #include "sync/internal_api/public/test/test_user_share.h"
14 #include "sync/internal_api/public/write_transaction.h" 14 #include "sync/internal_api/public/write_transaction.h"
15 #include "sync/protocol/sync.pb.h" 15 #include "sync/protocol/sync.pb.h"
16 #include "sync/syncable/directory.h" // TODO(tim): Remove. Bug 131130. 16 #include "sync/syncable/directory.h" // TODO(tim): Remove. Bug 131130.
17 #include "testing/gmock/include/gmock/gmock.h" 17 #include "testing/gmock/include/gmock/gmock.h"
18 #include "testing/gtest/include/gtest/gtest.h" 18 #include "testing/gtest/include/gtest/gtest.h"
19 19
20 using ::testing::_; 20 using ::testing::_;
21 using ::testing::Eq; 21 using ::testing::Eq;
22 using ::testing::Mock; 22 using ::testing::Mock;
23 using ::testing::NiceMock; 23 using ::testing::NiceMock;
24 using ::testing::Return; 24 using ::testing::Return;
25 25
26 namespace browser_sync { 26 namespace browser_sync {
27 27
28 using csync::sessions::SyncSessionSnapshot; 28 using syncer::sessions::SyncSessionSnapshot;
29 29
30 class SyncBackendMigratorTest : public testing::Test { 30 class SyncBackendMigratorTest : public testing::Test {
31 public: 31 public:
32 SyncBackendMigratorTest() { } 32 SyncBackendMigratorTest() { }
33 virtual ~SyncBackendMigratorTest() { } 33 virtual ~SyncBackendMigratorTest() { }
34 34
35 virtual void SetUp() { 35 virtual void SetUp() {
36 test_user_share_.SetUp(); 36 test_user_share_.SetUp();
37 Mock::VerifyAndClear(manager()); 37 Mock::VerifyAndClear(manager());
38 Mock::VerifyAndClear(&service_); 38 Mock::VerifyAndClear(&service_);
(...skipping 12 matching lines...) Expand all
51 } 51 }
52 52
53 virtual void TearDown() { 53 virtual void TearDown() {
54 migrator_.reset(); 54 migrator_.reset();
55 test_user_share_.TearDown(); 55 test_user_share_.TearDown();
56 } 56 }
57 57
58 // Marks all types in |unsynced_types| as unsynced and all other 58 // Marks all types in |unsynced_types| as unsynced and all other
59 // types as synced. 59 // types as synced.
60 void SetUnsyncedTypes(syncable::ModelTypeSet unsynced_types) { 60 void SetUnsyncedTypes(syncable::ModelTypeSet unsynced_types) {
61 csync::WriteTransaction trans(FROM_HERE, 61 syncer::WriteTransaction trans(FROM_HERE,
62 test_user_share_.user_share()); 62 test_user_share_.user_share());
63 for (int i = syncable::FIRST_REAL_MODEL_TYPE; 63 for (int i = syncable::FIRST_REAL_MODEL_TYPE;
64 i < syncable::MODEL_TYPE_COUNT; ++i) { 64 i < syncable::MODEL_TYPE_COUNT; ++i) {
65 syncable::ModelType type = syncable::ModelTypeFromInt(i); 65 syncable::ModelType type = syncable::ModelTypeFromInt(i);
66 sync_pb::DataTypeProgressMarker progress_marker; 66 sync_pb::DataTypeProgressMarker progress_marker;
67 if (!unsynced_types.Has(type)) { 67 if (!unsynced_types.Has(type)) {
68 progress_marker.set_token("dummy"); 68 progress_marker.set_token("dummy");
69 } 69 }
70 trans.GetDirectory()->SetDownloadProgress(type, progress_marker); 70 trans.GetDirectory()->SetDownloadProgress(type, progress_marker);
71 } 71 }
72 } 72 }
73 73
74 void SendConfigureDone(DataTypeManager::ConfigureStatus status, 74 void SendConfigureDone(DataTypeManager::ConfigureStatus status,
75 syncable::ModelTypeSet requested_types) { 75 syncable::ModelTypeSet requested_types) {
76 if (status == DataTypeManager::OK) { 76 if (status == DataTypeManager::OK) {
77 DataTypeManager::ConfigureResult result(status, requested_types); 77 DataTypeManager::ConfigureResult result(status, requested_types);
78 migrator_->OnConfigureDone(result); 78 migrator_->OnConfigureDone(result);
79 } else { 79 } else {
80 std::list<csync::SyncError> errors; 80 std::list<syncer::SyncError> errors;
81 DataTypeManager::ConfigureResult result( 81 DataTypeManager::ConfigureResult result(
82 status, 82 status,
83 requested_types, 83 requested_types,
84 errors, 84 errors,
85 syncable::ModelTypeSet()); 85 syncable::ModelTypeSet());
86 migrator_->OnConfigureDone(result); 86 migrator_->OnConfigureDone(result);
87 } 87 }
88 message_loop_.RunAllPending(); 88 message_loop_.RunAllPending();
89 } 89 }
90 90
91 ProfileSyncService* service() { return &service_; } 91 ProfileSyncService* service() { return &service_; }
92 DataTypeManagerMock* manager() { return &manager_; } 92 DataTypeManagerMock* manager() { return &manager_; }
93 syncable::ModelTypeSet preferred_types() { return preferred_types_; } 93 syncable::ModelTypeSet preferred_types() { return preferred_types_; }
94 BackendMigrator* migrator() { return migrator_.get(); } 94 BackendMigrator* migrator() { return migrator_.get(); }
95 void RemovePreferredType(syncable::ModelType type) { 95 void RemovePreferredType(syncable::ModelType type) {
96 preferred_types_.Remove(type); 96 preferred_types_.Remove(type);
97 Mock::VerifyAndClear(&service_); 97 Mock::VerifyAndClear(&service_);
98 ON_CALL(service_, GetPreferredDataTypes()). 98 ON_CALL(service_, GetPreferredDataTypes()).
99 WillByDefault(Return(preferred_types_)); 99 WillByDefault(Return(preferred_types_));
100 } 100 }
101 101
102 private: 102 private:
103 scoped_ptr<SyncSessionSnapshot> snap_; 103 scoped_ptr<SyncSessionSnapshot> snap_;
104 MessageLoop message_loop_; 104 MessageLoop message_loop_;
105 syncable::ModelTypeSet preferred_types_; 105 syncable::ModelTypeSet preferred_types_;
106 NiceMock<ProfileSyncServiceMock> service_; 106 NiceMock<ProfileSyncServiceMock> service_;
107 NiceMock<DataTypeManagerMock> manager_; 107 NiceMock<DataTypeManagerMock> manager_;
108 csync::TestUserShare test_user_share_; 108 syncer::TestUserShare test_user_share_;
109 scoped_ptr<BackendMigrator> migrator_; 109 scoped_ptr<BackendMigrator> migrator_;
110 }; 110 };
111 111
112 class MockMigrationObserver : public MigrationObserver { 112 class MockMigrationObserver : public MigrationObserver {
113 public: 113 public:
114 virtual ~MockMigrationObserver() {} 114 virtual ~MockMigrationObserver() {}
115 115
116 MOCK_METHOD0(OnMigrationStateChange, void()); 116 MOCK_METHOD0(OnMigrationStateChange, void());
117 }; 117 };
118 118
119 // Test that in the normal case a migration does transition through each state 119 // Test that in the normal case a migration does transition through each state
120 // and wind up back in IDLE. 120 // and wind up back in IDLE.
121 TEST_F(SyncBackendMigratorTest, Sanity) { 121 TEST_F(SyncBackendMigratorTest, Sanity) {
122 MockMigrationObserver migration_observer; 122 MockMigrationObserver migration_observer;
123 migrator()->AddMigrationObserver(&migration_observer); 123 migrator()->AddMigrationObserver(&migration_observer);
124 EXPECT_CALL(migration_observer, OnMigrationStateChange()).Times(4); 124 EXPECT_CALL(migration_observer, OnMigrationStateChange()).Times(4);
125 125
126 syncable::ModelTypeSet to_migrate, difference; 126 syncable::ModelTypeSet to_migrate, difference;
127 to_migrate.Put(syncable::PREFERENCES); 127 to_migrate.Put(syncable::PREFERENCES);
128 difference.Put(syncable::AUTOFILL); 128 difference.Put(syncable::AUTOFILL);
129 difference.Put(syncable::BOOKMARKS); 129 difference.Put(syncable::BOOKMARKS);
130 130
131 EXPECT_CALL(*manager(), state()) 131 EXPECT_CALL(*manager(), state())
132 .WillOnce(Return(DataTypeManager::CONFIGURED)); 132 .WillOnce(Return(DataTypeManager::CONFIGURED));
133 EXPECT_CALL(*manager(), Configure(_, csync::CONFIGURE_REASON_MIGRATION)) 133 EXPECT_CALL(*manager(), Configure(_, syncer::CONFIGURE_REASON_MIGRATION))
134 .Times(2); 134 .Times(2);
135 135
136 migrator()->MigrateTypes(to_migrate); 136 migrator()->MigrateTypes(to_migrate);
137 EXPECT_EQ(BackendMigrator::DISABLING_TYPES, migrator()->state()); 137 EXPECT_EQ(BackendMigrator::DISABLING_TYPES, migrator()->state());
138 138
139 SetUnsyncedTypes(to_migrate); 139 SetUnsyncedTypes(to_migrate);
140 SendConfigureDone(DataTypeManager::OK, difference); 140 SendConfigureDone(DataTypeManager::OK, difference);
141 EXPECT_EQ(BackendMigrator::REENABLING_TYPES, migrator()->state()); 141 EXPECT_EQ(BackendMigrator::REENABLING_TYPES, migrator()->state());
142 142
143 SetUnsyncedTypes(syncable::ModelTypeSet()); 143 SetUnsyncedTypes(syncable::ModelTypeSet());
144 SendConfigureDone(DataTypeManager::OK, preferred_types()); 144 SendConfigureDone(DataTypeManager::OK, preferred_types());
145 EXPECT_EQ(BackendMigrator::IDLE, migrator()->state()); 145 EXPECT_EQ(BackendMigrator::IDLE, migrator()->state());
146 146
147 migrator()->RemoveMigrationObserver(&migration_observer); 147 migrator()->RemoveMigrationObserver(&migration_observer);
148 } 148 }
149 149
150 // Test that in the normal case with Nigori a migration transitions through 150 // Test that in the normal case with Nigori a migration transitions through
151 // each state and wind up back in IDLE. 151 // each state and wind up back in IDLE.
152 TEST_F(SyncBackendMigratorTest, MigrateNigori) { 152 TEST_F(SyncBackendMigratorTest, MigrateNigori) {
153 syncable::ModelTypeSet to_migrate, difference; 153 syncable::ModelTypeSet to_migrate, difference;
154 to_migrate.Put(syncable::NIGORI); 154 to_migrate.Put(syncable::NIGORI);
155 difference.Put(syncable::AUTOFILL); 155 difference.Put(syncable::AUTOFILL);
156 difference.Put(syncable::BOOKMARKS); 156 difference.Put(syncable::BOOKMARKS);
157 157
158 EXPECT_CALL(*manager(), state()) 158 EXPECT_CALL(*manager(), state())
159 .WillOnce(Return(DataTypeManager::CONFIGURED)); 159 .WillOnce(Return(DataTypeManager::CONFIGURED));
160 160
161 EXPECT_CALL(*manager(), ConfigureWithoutNigori(_, 161 EXPECT_CALL(*manager(), ConfigureWithoutNigori(_,
162 csync::CONFIGURE_REASON_MIGRATION)); 162 syncer::CONFIGURE_REASON_MIGRATION));
163 163
164 migrator()->MigrateTypes(to_migrate); 164 migrator()->MigrateTypes(to_migrate);
165 EXPECT_EQ(BackendMigrator::DISABLING_TYPES, migrator()->state()); 165 EXPECT_EQ(BackendMigrator::DISABLING_TYPES, migrator()->state());
166 166
167 SetUnsyncedTypes(to_migrate); 167 SetUnsyncedTypes(to_migrate);
168 SendConfigureDone(DataTypeManager::OK, difference); 168 SendConfigureDone(DataTypeManager::OK, difference);
169 EXPECT_EQ(BackendMigrator::REENABLING_TYPES, migrator()->state()); 169 EXPECT_EQ(BackendMigrator::REENABLING_TYPES, migrator()->state());
170 170
171 SetUnsyncedTypes(syncable::ModelTypeSet()); 171 SetUnsyncedTypes(syncable::ModelTypeSet());
172 SendConfigureDone(DataTypeManager::OK, preferred_types()); 172 SendConfigureDone(DataTypeManager::OK, preferred_types());
173 EXPECT_EQ(BackendMigrator::IDLE, migrator()->state()); 173 EXPECT_EQ(BackendMigrator::IDLE, migrator()->state());
174 } 174 }
175 175
176 176
177 // Test that the migrator waits for the data type manager to be idle before 177 // Test that the migrator waits for the data type manager to be idle before
178 // starting a migration. 178 // starting a migration.
179 TEST_F(SyncBackendMigratorTest, WaitToStart) { 179 TEST_F(SyncBackendMigratorTest, WaitToStart) {
180 syncable::ModelTypeSet to_migrate; 180 syncable::ModelTypeSet to_migrate;
181 to_migrate.Put(syncable::PREFERENCES); 181 to_migrate.Put(syncable::PREFERENCES);
182 182
183 EXPECT_CALL(*manager(), state()) 183 EXPECT_CALL(*manager(), state())
184 .WillOnce(Return(DataTypeManager::CONFIGURING)); 184 .WillOnce(Return(DataTypeManager::CONFIGURING));
185 EXPECT_CALL(*manager(), Configure(_, _)).Times(0); 185 EXPECT_CALL(*manager(), Configure(_, _)).Times(0);
186 migrator()->MigrateTypes(to_migrate); 186 migrator()->MigrateTypes(to_migrate);
187 EXPECT_EQ(BackendMigrator::WAITING_TO_START, migrator()->state()); 187 EXPECT_EQ(BackendMigrator::WAITING_TO_START, migrator()->state());
188 188
189 Mock::VerifyAndClearExpectations(manager()); 189 Mock::VerifyAndClearExpectations(manager());
190 EXPECT_CALL(*manager(), state()) 190 EXPECT_CALL(*manager(), state())
191 .WillOnce(Return(DataTypeManager::CONFIGURED)); 191 .WillOnce(Return(DataTypeManager::CONFIGURED));
192 EXPECT_CALL(*manager(), Configure(_, csync::CONFIGURE_REASON_MIGRATION)); 192 EXPECT_CALL(*manager(), Configure(_, syncer::CONFIGURE_REASON_MIGRATION));
193 SetUnsyncedTypes(syncable::ModelTypeSet()); 193 SetUnsyncedTypes(syncable::ModelTypeSet());
194 SendConfigureDone(DataTypeManager::OK, syncable::ModelTypeSet()); 194 SendConfigureDone(DataTypeManager::OK, syncable::ModelTypeSet());
195 195
196 EXPECT_EQ(BackendMigrator::DISABLING_TYPES, migrator()->state()); 196 EXPECT_EQ(BackendMigrator::DISABLING_TYPES, migrator()->state());
197 } 197 }
198 198
199 // Test that the migrator can cope with a migration request while a migration 199 // Test that the migrator can cope with a migration request while a migration
200 // is in progress. 200 // is in progress.
201 TEST_F(SyncBackendMigratorTest, RestartMigration) { 201 TEST_F(SyncBackendMigratorTest, RestartMigration) {
202 syncable::ModelTypeSet to_migrate1, to_migrate2, to_migrate_union, bookmarks; 202 syncable::ModelTypeSet to_migrate1, to_migrate2, to_migrate_union, bookmarks;
203 to_migrate1.Put(syncable::PREFERENCES); 203 to_migrate1.Put(syncable::PREFERENCES);
204 to_migrate2.Put(syncable::AUTOFILL); 204 to_migrate2.Put(syncable::AUTOFILL);
205 to_migrate_union.Put(syncable::PREFERENCES); 205 to_migrate_union.Put(syncable::PREFERENCES);
206 to_migrate_union.Put(syncable::AUTOFILL); 206 to_migrate_union.Put(syncable::AUTOFILL);
207 bookmarks.Put(syncable::BOOKMARKS); 207 bookmarks.Put(syncable::BOOKMARKS);
208 208
209 EXPECT_CALL(*manager(), state()) 209 EXPECT_CALL(*manager(), state())
210 .WillOnce(Return(DataTypeManager::CONFIGURED)); 210 .WillOnce(Return(DataTypeManager::CONFIGURED));
211 EXPECT_CALL(*manager(), Configure(_, csync::CONFIGURE_REASON_MIGRATION)) 211 EXPECT_CALL(*manager(), Configure(_, syncer::CONFIGURE_REASON_MIGRATION))
212 .Times(2); 212 .Times(2);
213 migrator()->MigrateTypes(to_migrate1); 213 migrator()->MigrateTypes(to_migrate1);
214 214
215 EXPECT_EQ(BackendMigrator::DISABLING_TYPES, migrator()->state()); 215 EXPECT_EQ(BackendMigrator::DISABLING_TYPES, migrator()->state());
216 migrator()->MigrateTypes(to_migrate2); 216 migrator()->MigrateTypes(to_migrate2);
217 217
218 const syncable::ModelTypeSet difference1 = 218 const syncable::ModelTypeSet difference1 =
219 Difference(preferred_types(), to_migrate1); 219 Difference(preferred_types(), to_migrate1);
220 220
221 Mock::VerifyAndClearExpectations(manager()); 221 Mock::VerifyAndClearExpectations(manager());
222 EXPECT_CALL(*manager(), Configure(_, csync::CONFIGURE_REASON_MIGRATION)) 222 EXPECT_CALL(*manager(), Configure(_, syncer::CONFIGURE_REASON_MIGRATION))
223 .Times(2); 223 .Times(2);
224 SetUnsyncedTypes(to_migrate1); 224 SetUnsyncedTypes(to_migrate1);
225 SendConfigureDone(DataTypeManager::OK, difference1); 225 SendConfigureDone(DataTypeManager::OK, difference1);
226 EXPECT_EQ(BackendMigrator::DISABLING_TYPES, migrator()->state()); 226 EXPECT_EQ(BackendMigrator::DISABLING_TYPES, migrator()->state());
227 227
228 SetUnsyncedTypes(to_migrate_union); 228 SetUnsyncedTypes(to_migrate_union);
229 SendConfigureDone(DataTypeManager::OK, bookmarks); 229 SendConfigureDone(DataTypeManager::OK, bookmarks);
230 EXPECT_EQ(BackendMigrator::REENABLING_TYPES, migrator()->state()); 230 EXPECT_EQ(BackendMigrator::REENABLING_TYPES, migrator()->state());
231 } 231 }
232 232
233 // Test that an external invocation of Configure(...) during a migration results 233 // Test that an external invocation of Configure(...) during a migration results
234 // in a migration reattempt. 234 // in a migration reattempt.
235 TEST_F(SyncBackendMigratorTest, InterruptedWhileDisablingTypes) { 235 TEST_F(SyncBackendMigratorTest, InterruptedWhileDisablingTypes) {
236 syncable::ModelTypeSet to_migrate; 236 syncable::ModelTypeSet to_migrate;
237 syncable::ModelTypeSet difference; 237 syncable::ModelTypeSet difference;
238 to_migrate.Put(syncable::PREFERENCES); 238 to_migrate.Put(syncable::PREFERENCES);
239 difference.Put(syncable::AUTOFILL); 239 difference.Put(syncable::AUTOFILL);
240 difference.Put(syncable::BOOKMARKS); 240 difference.Put(syncable::BOOKMARKS);
241 241
242 EXPECT_CALL(*manager(), state()) 242 EXPECT_CALL(*manager(), state())
243 .WillOnce(Return(DataTypeManager::CONFIGURED)); 243 .WillOnce(Return(DataTypeManager::CONFIGURED));
244 EXPECT_CALL(*manager(), Configure(HasModelTypes(difference), 244 EXPECT_CALL(*manager(), Configure(HasModelTypes(difference),
245 csync::CONFIGURE_REASON_MIGRATION)); 245 syncer::CONFIGURE_REASON_MIGRATION));
246 migrator()->MigrateTypes(to_migrate); 246 migrator()->MigrateTypes(to_migrate);
247 EXPECT_EQ(BackendMigrator::DISABLING_TYPES, migrator()->state()); 247 EXPECT_EQ(BackendMigrator::DISABLING_TYPES, migrator()->state());
248 248
249 Mock::VerifyAndClearExpectations(manager()); 249 Mock::VerifyAndClearExpectations(manager());
250 EXPECT_CALL(*manager(), Configure(HasModelTypes(difference), 250 EXPECT_CALL(*manager(), Configure(HasModelTypes(difference),
251 csync::CONFIGURE_REASON_MIGRATION)); 251 syncer::CONFIGURE_REASON_MIGRATION));
252 SetUnsyncedTypes(syncable::ModelTypeSet()); 252 SetUnsyncedTypes(syncable::ModelTypeSet());
253 SendConfigureDone(DataTypeManager::OK, preferred_types()); 253 SendConfigureDone(DataTypeManager::OK, preferred_types());
254 254
255 EXPECT_EQ(BackendMigrator::DISABLING_TYPES, migrator()->state()); 255 EXPECT_EQ(BackendMigrator::DISABLING_TYPES, migrator()->state());
256 } 256 }
257 257
258 // Test that spurious OnConfigureDone events don't confuse the 258 // Test that spurious OnConfigureDone events don't confuse the
259 // migrator while it's waiting for disabled types to have been purged 259 // migrator while it's waiting for disabled types to have been purged
260 // from the sync db. 260 // from the sync db.
261 TEST_F(SyncBackendMigratorTest, WaitingForPurge) { 261 TEST_F(SyncBackendMigratorTest, WaitingForPurge) {
262 syncable::ModelTypeSet to_migrate, difference; 262 syncable::ModelTypeSet to_migrate, difference;
263 to_migrate.Put(syncable::PREFERENCES); 263 to_migrate.Put(syncable::PREFERENCES);
264 to_migrate.Put(syncable::AUTOFILL); 264 to_migrate.Put(syncable::AUTOFILL);
265 difference.Put(syncable::BOOKMARKS); 265 difference.Put(syncable::BOOKMARKS);
266 266
267 EXPECT_CALL(*manager(), state()) 267 EXPECT_CALL(*manager(), state())
268 .WillOnce(Return(DataTypeManager::CONFIGURED)); 268 .WillOnce(Return(DataTypeManager::CONFIGURED));
269 EXPECT_CALL(*manager(), Configure(_, csync::CONFIGURE_REASON_MIGRATION)) 269 EXPECT_CALL(*manager(), Configure(_, syncer::CONFIGURE_REASON_MIGRATION))
270 .Times(2); 270 .Times(2);
271 271
272 migrator()->MigrateTypes(to_migrate); 272 migrator()->MigrateTypes(to_migrate);
273 EXPECT_EQ(BackendMigrator::DISABLING_TYPES, migrator()->state()); 273 EXPECT_EQ(BackendMigrator::DISABLING_TYPES, migrator()->state());
274 274
275 SendConfigureDone(DataTypeManager::OK, difference); 275 SendConfigureDone(DataTypeManager::OK, difference);
276 EXPECT_EQ(BackendMigrator::DISABLING_TYPES, migrator()->state()); 276 EXPECT_EQ(BackendMigrator::DISABLING_TYPES, migrator()->state());
277 277
278 syncable::ModelTypeSet prefs; 278 syncable::ModelTypeSet prefs;
279 prefs.Put(syncable::PREFERENCES); 279 prefs.Put(syncable::PREFERENCES);
280 SetUnsyncedTypes(prefs); 280 SetUnsyncedTypes(prefs);
281 SendConfigureDone(DataTypeManager::OK, difference); 281 SendConfigureDone(DataTypeManager::OK, difference);
282 EXPECT_EQ(BackendMigrator::DISABLING_TYPES, migrator()->state()); 282 EXPECT_EQ(BackendMigrator::DISABLING_TYPES, migrator()->state());
283 283
284 SetUnsyncedTypes(to_migrate); 284 SetUnsyncedTypes(to_migrate);
285 SendConfigureDone(DataTypeManager::OK, difference); 285 SendConfigureDone(DataTypeManager::OK, difference);
286 EXPECT_EQ(BackendMigrator::REENABLING_TYPES, migrator()->state()); 286 EXPECT_EQ(BackendMigrator::REENABLING_TYPES, migrator()->state());
287 } 287 }
288 288
289 TEST_F(SyncBackendMigratorTest, MigratedTypeDisabledByUserDuringMigration) { 289 TEST_F(SyncBackendMigratorTest, MigratedTypeDisabledByUserDuringMigration) {
290 syncable::ModelTypeSet to_migrate; 290 syncable::ModelTypeSet to_migrate;
291 to_migrate.Put(syncable::PREFERENCES); 291 to_migrate.Put(syncable::PREFERENCES);
292 292
293 EXPECT_CALL(*manager(), state()) 293 EXPECT_CALL(*manager(), state())
294 .WillOnce(Return(DataTypeManager::CONFIGURED)); 294 .WillOnce(Return(DataTypeManager::CONFIGURED));
295 EXPECT_CALL(*manager(), Configure(_, csync::CONFIGURE_REASON_MIGRATION)) 295 EXPECT_CALL(*manager(), Configure(_, syncer::CONFIGURE_REASON_MIGRATION))
296 .Times(2); 296 .Times(2);
297 migrator()->MigrateTypes(to_migrate); 297 migrator()->MigrateTypes(to_migrate);
298 298
299 RemovePreferredType(syncable::PREFERENCES); 299 RemovePreferredType(syncable::PREFERENCES);
300 SetUnsyncedTypes(to_migrate); 300 SetUnsyncedTypes(to_migrate);
301 SendConfigureDone(DataTypeManager::OK, preferred_types()); 301 SendConfigureDone(DataTypeManager::OK, preferred_types());
302 EXPECT_EQ(BackendMigrator::REENABLING_TYPES, migrator()->state()); 302 EXPECT_EQ(BackendMigrator::REENABLING_TYPES, migrator()->state());
303 SetUnsyncedTypes(syncable::ModelTypeSet()); 303 SetUnsyncedTypes(syncable::ModelTypeSet());
304 SendConfigureDone(DataTypeManager::OK, preferred_types()); 304 SendConfigureDone(DataTypeManager::OK, preferred_types());
305 EXPECT_EQ(BackendMigrator::IDLE, migrator()->state()); 305 EXPECT_EQ(BackendMigrator::IDLE, migrator()->state());
306 } 306 }
307 307
308 TEST_F(SyncBackendMigratorTest, ConfigureFailure) { 308 TEST_F(SyncBackendMigratorTest, ConfigureFailure) {
309 syncable::ModelTypeSet to_migrate; 309 syncable::ModelTypeSet to_migrate;
310 to_migrate.Put(syncable::PREFERENCES); 310 to_migrate.Put(syncable::PREFERENCES);
311 311
312 EXPECT_CALL(*manager(), state()) 312 EXPECT_CALL(*manager(), state())
313 .WillOnce(Return(DataTypeManager::CONFIGURED)); 313 .WillOnce(Return(DataTypeManager::CONFIGURED));
314 EXPECT_CALL(*manager(), Configure(_, csync::CONFIGURE_REASON_MIGRATION)) 314 EXPECT_CALL(*manager(), Configure(_, syncer::CONFIGURE_REASON_MIGRATION))
315 .Times(1); 315 .Times(1);
316 migrator()->MigrateTypes(to_migrate); 316 migrator()->MigrateTypes(to_migrate);
317 SetUnsyncedTypes(syncable::ModelTypeSet()); 317 SetUnsyncedTypes(syncable::ModelTypeSet());
318 SendConfigureDone(DataTypeManager::ABORTED, syncable::ModelTypeSet()); 318 SendConfigureDone(DataTypeManager::ABORTED, syncable::ModelTypeSet());
319 EXPECT_EQ(BackendMigrator::IDLE, migrator()->state()); 319 EXPECT_EQ(BackendMigrator::IDLE, migrator()->state());
320 } 320 }
321 321
322 }; // namespace browser_sync 322 }; // namespace browser_sync
OLDNEW
« no previous file with comments | « chrome/browser/sync/backend_migrator.cc ('k') | chrome/browser/sync/backend_unrecoverable_error_handler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698