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

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

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

Powered by Google App Engine
This is Rietveld 408576698