| Index: chrome/browser/sync/backend_migrator_unittest.cc
|
| diff --git a/chrome/browser/sync/backend_migrator_unittest.cc b/chrome/browser/sync/backend_migrator_unittest.cc
|
| index d42957504908a7896762c4e0818b888b94ac15d8..0f2e17de4f4a3a54a02cb4d7f172da872431ee13 100644
|
| --- a/chrome/browser/sync/backend_migrator_unittest.cc
|
| +++ b/chrome/browser/sync/backend_migrator_unittest.cc
|
| @@ -4,6 +4,7 @@
|
|
|
| #include "chrome/browser/sync/backend_migrator.h"
|
|
|
| +#include "base/message_loop.h"
|
| #include "chrome/browser/sync/glue/data_type_manager_mock.h"
|
| #include "chrome/browser/sync/profile_sync_service_mock.h"
|
| #include "chrome/browser/sync/sessions/session_state.h"
|
| @@ -41,26 +42,6 @@ class BackendMigratorTest : public TestingBrowserProcessTest {
|
| WillByDefault(SetArgumentPointee<0>(preferred_types_));
|
| }
|
|
|
| - void ReturnEmptyProgressMarkersInSnapshot() {
|
| - ReturnNonEmptyProgressMarkersInSnapshot(syncable::ModelTypeSet());
|
| - }
|
| -
|
| - void ReturnNonEmptyProgressMarkersInSnapshot(
|
| - const syncable::ModelTypeSet& for_types) {
|
| - std::string download_progress_markers[syncable::MODEL_TYPE_COUNT];
|
| - for (syncable::ModelTypeSet::const_iterator it = for_types.begin();
|
| - it != for_types.end(); ++it) {
|
| - download_progress_markers[*it] = "foobar";
|
| - }
|
| -
|
| - snap_.reset(new SyncSessionSnapshot(SyncerStatus(), ErrorCounters(),
|
| - 0, false, syncable::ModelTypeBitSet(), download_progress_markers,
|
| - false, false, 0, 0, 0, false, sessions::SyncSourceInfo(), 0,
|
| - base::Time::Now()));
|
| - EXPECT_CALL(service_, GetLastSessionSnapshot())
|
| - .WillOnce(Return(snap_.get()));
|
| - }
|
| -
|
| void SendConfigureDone(DataTypeManager::ConfigureStatus status,
|
| const syncable::ModelTypeSet& types) {
|
| if (status == DataTypeManager::OK) {
|
| @@ -80,6 +61,7 @@ class BackendMigratorTest : public TestingBrowserProcessTest {
|
| Source<DataTypeManager>(&manager_),
|
| Details<const DataTypeManager::ConfigureResult>(&result));
|
| }
|
| + message_loop_.RunAllPending();
|
| }
|
|
|
| ProfileSyncService* service() { return &service_; }
|
| @@ -92,7 +74,7 @@ class BackendMigratorTest : public TestingBrowserProcessTest {
|
| WillByDefault(SetArgumentPointee<0>(preferred_types_));
|
| }
|
| private:
|
| - scoped_ptr<SyncSessionSnapshot> snap_;
|
| + MessageLoop message_loop_;
|
| syncable::ModelTypeSet preferred_types_;
|
| NiceMock<ProfileSyncServiceMock> service_;
|
| NiceMock<DataTypeManagerMock> manager_;
|
| @@ -109,18 +91,13 @@ TEST_F(BackendMigratorTest, Sanity) {
|
|
|
| EXPECT_CALL(*manager(), state())
|
| .WillOnce(Return(DataTypeManager::CONFIGURED));
|
| - EXPECT_CALL(*manager(), Configure(_, sync_api::CONFIGURE_REASON_MIGRATION));
|
| + EXPECT_CALL(*manager(), Configure(_, sync_api::CONFIGURE_REASON_MIGRATION))
|
| + .Times(2);
|
|
|
| migrator.MigrateTypes(to_migrate);
|
| EXPECT_EQ(BackendMigrator::DISABLING_TYPES, migrator.state());
|
|
|
| SendConfigureDone(DataTypeManager::OK, difference);
|
| - EXPECT_EQ(BackendMigrator::WAITING_FOR_PURGE, migrator.state());
|
| -
|
| - ReturnEmptyProgressMarkersInSnapshot();
|
| - EXPECT_CALL(*manager(), Configure(preferred_types(),
|
| - sync_api::CONFIGURE_REASON_MIGRATION));
|
| - migrator.OnStateChanged();
|
| EXPECT_EQ(BackendMigrator::REENABLING_TYPES, migrator.state());
|
|
|
| SendConfigureDone(DataTypeManager::OK, preferred_types());
|
| @@ -146,12 +123,6 @@ TEST_F(BackendMigratorTest, MigrateNigori) {
|
| EXPECT_EQ(BackendMigrator::DISABLING_TYPES, migrator.state());
|
|
|
| SendConfigureDone(DataTypeManager::OK, difference);
|
| - EXPECT_EQ(BackendMigrator::WAITING_FOR_PURGE, migrator.state());
|
| -
|
| - ReturnEmptyProgressMarkersInSnapshot();
|
| - EXPECT_CALL(*manager(), Configure(preferred_types(),
|
| - sync_api::CONFIGURE_REASON_MIGRATION));
|
| - migrator.OnStateChanged();
|
| EXPECT_EQ(BackendMigrator::REENABLING_TYPES, migrator.state());
|
|
|
| SendConfigureDone(DataTypeManager::OK, preferred_types());
|
| @@ -193,7 +164,7 @@ TEST_F(BackendMigratorTest, RestartMigration) {
|
| EXPECT_CALL(*manager(), state())
|
| .WillOnce(Return(DataTypeManager::CONFIGURED));
|
| EXPECT_CALL(*manager(), Configure(_, sync_api::CONFIGURE_REASON_MIGRATION))
|
| - .Times(1);
|
| + .Times(2);
|
| migrator.MigrateTypes(to_migrate1);
|
|
|
| EXPECT_EQ(BackendMigrator::DISABLING_TYPES, migrator.state());
|
| @@ -205,15 +176,13 @@ TEST_F(BackendMigratorTest, RestartMigration) {
|
| std::inserter(difference1, difference1.end()));
|
|
|
| Mock::VerifyAndClearExpectations(manager());
|
| - EXPECT_CALL(*manager(), state())
|
| - .WillOnce(Return(DataTypeManager::CONFIGURED));
|
| - EXPECT_CALL(*manager(), Configure(bookmarks,
|
| - sync_api::CONFIGURE_REASON_MIGRATION));
|
| + EXPECT_CALL(*manager(), Configure(_, sync_api::CONFIGURE_REASON_MIGRATION))
|
| + .Times(2);
|
| SendConfigureDone(DataTypeManager::OK, difference1);
|
| EXPECT_EQ(BackendMigrator::DISABLING_TYPES, migrator.state());
|
|
|
| SendConfigureDone(DataTypeManager::OK, bookmarks);
|
| - EXPECT_EQ(BackendMigrator::WAITING_FOR_PURGE, migrator.state());
|
| + EXPECT_EQ(BackendMigrator::REENABLING_TYPES, migrator.state());
|
| }
|
|
|
| // Test that an external invocation of Configure(...) during a migration results
|
| @@ -234,8 +203,6 @@ TEST_F(BackendMigratorTest, InterruptedWhileDisablingTypes) {
|
| EXPECT_EQ(BackendMigrator::DISABLING_TYPES, migrator.state());
|
|
|
| Mock::VerifyAndClearExpectations(manager());
|
| - EXPECT_CALL(*manager(), state())
|
| - .WillOnce(Return(DataTypeManager::CONFIGURED));
|
| EXPECT_CALL(*manager(), Configure(difference,
|
| sync_api::CONFIGURE_REASON_MIGRATION));
|
| SendConfigureDone(DataTypeManager::OK, preferred_types());
|
| @@ -243,41 +210,6 @@ TEST_F(BackendMigratorTest, InterruptedWhileDisablingTypes) {
|
| EXPECT_EQ(BackendMigrator::DISABLING_TYPES, migrator.state());
|
| }
|
|
|
| -// Test that spurious OnStateChanged events don't confuse the migrator while
|
| -// it's waiting for disabled types to have been purged from the sync db.
|
| -TEST_F(BackendMigratorTest, WaitingForPurge) {
|
| - BackendMigrator migrator(service(), manager());
|
| - syncable::ModelTypeSet to_migrate, difference;
|
| - to_migrate.insert(syncable::PREFERENCES);
|
| - to_migrate.insert(syncable::AUTOFILL);
|
| - difference.insert(syncable::BOOKMARKS);
|
| -
|
| - EXPECT_CALL(*manager(), state())
|
| - .WillOnce(Return(DataTypeManager::CONFIGURED));
|
| - EXPECT_CALL(*manager(), Configure(_, sync_api::CONFIGURE_REASON_MIGRATION));
|
| - migrator.MigrateTypes(to_migrate);
|
| - SendConfigureDone(DataTypeManager::OK, difference);
|
| - EXPECT_EQ(BackendMigrator::WAITING_FOR_PURGE, migrator.state());
|
| -
|
| - ReturnNonEmptyProgressMarkersInSnapshot(to_migrate);
|
| - migrator.OnStateChanged();
|
| - EXPECT_EQ(BackendMigrator::WAITING_FOR_PURGE, migrator.state());
|
| -
|
| - syncable::ModelTypeSet prefs;
|
| - prefs.insert(syncable::PREFERENCES);
|
| - ReturnNonEmptyProgressMarkersInSnapshot(prefs);
|
| - migrator.OnStateChanged();
|
| - EXPECT_EQ(BackendMigrator::WAITING_FOR_PURGE, migrator.state());
|
| -
|
| - syncable::ModelTypeSet bookmarks;
|
| - bookmarks.insert(syncable::BOOKMARKS);
|
| - ReturnNonEmptyProgressMarkersInSnapshot(bookmarks);
|
| - EXPECT_CALL(*manager(), Configure(preferred_types(),
|
| - sync_api::CONFIGURE_REASON_MIGRATION));
|
| - migrator.OnStateChanged();
|
| - EXPECT_EQ(BackendMigrator::REENABLING_TYPES, migrator.state());
|
| -}
|
| -
|
| TEST_F(BackendMigratorTest, MigratedTypeDisabledByUserDuringMigration) {
|
| BackendMigrator migrator(service(), manager());
|
| syncable::ModelTypeSet to_migrate;
|
| @@ -285,19 +217,12 @@ TEST_F(BackendMigratorTest, MigratedTypeDisabledByUserDuringMigration) {
|
|
|
| EXPECT_CALL(*manager(), state())
|
| .WillOnce(Return(DataTypeManager::CONFIGURED));
|
| - EXPECT_CALL(*manager(), Configure(_, sync_api::CONFIGURE_REASON_MIGRATION));
|
| + EXPECT_CALL(*manager(), Configure(_, sync_api::CONFIGURE_REASON_MIGRATION))
|
| + .Times(2);
|
| migrator.MigrateTypes(to_migrate);
|
|
|
| RemovePreferredType(syncable::PREFERENCES);
|
| SendConfigureDone(DataTypeManager::OK, preferred_types());
|
| - EXPECT_EQ(BackendMigrator::WAITING_FOR_PURGE, migrator.state());
|
| -
|
| - Mock::VerifyAndClearExpectations(manager());
|
| - ReturnEmptyProgressMarkersInSnapshot();
|
| - EXPECT_CALL(*manager(), Configure(preferred_types(),
|
| - sync_api::CONFIGURE_REASON_MIGRATION));
|
| - migrator.OnStateChanged();
|
| -
|
| EXPECT_EQ(BackendMigrator::REENABLING_TYPES, migrator.state());
|
| SendConfigureDone(DataTypeManager::OK, preferred_types());
|
| EXPECT_EQ(BackendMigrator::IDLE, migrator.state());
|
|
|