| Index: sync/internal_api/sync_backup_manager_unittest.cc
|
| diff --git a/sync/internal_api/sync_backup_manager_unittest.cc b/sync/internal_api/sync_backup_manager_unittest.cc
|
| index e771ea32d847a5d5dffb5a3da31c74c55b7e0aff..5bf49fcea4fc7757deffc66facce23c91442a385 100644
|
| --- a/sync/internal_api/sync_backup_manager_unittest.cc
|
| +++ b/sync/internal_api/sync_backup_manager_unittest.cc
|
| @@ -49,7 +49,8 @@ class SyncBackupManagerTest : public syncer::SyncManager::Observer,
|
| CHECK(temp_dir_.CreateUniqueTempDir());
|
| }
|
|
|
| - void InitManager(SyncManager* manager, StorageOption storage_option) {
|
| + void InitManager(SyncManager* manager,
|
| + InternalComponentsFactory::StorageOption storage_option) {
|
| manager_ = manager;
|
| EXPECT_CALL(*this, OnInitializationComplete(_, _, _, _))
|
| .WillOnce(WithArgs<2>(Invoke(this,
|
| @@ -65,7 +66,8 @@ class SyncBackupManagerTest : public syncer::SyncManager::Observer,
|
| args.service_url = GURL("https://example.com/");
|
| args.post_factory = scoped_ptr<HttpPostProviderFactory>().Pass();
|
| args.internal_components_factory.reset(new TestInternalComponentsFactory(
|
| - InternalComponentsFactory::Switches(), storage_option));
|
| + InternalComponentsFactory::Switches(), storage_option,
|
| + InternalComponentsFactory::STORAGE_ON_DISK_DEFERRED));
|
| manager->Init(&args);
|
| loop_.PostTask(FROM_HERE, run_loop.QuitClosure());
|
| run_loop.Run();
|
| @@ -82,7 +84,6 @@ class SyncBackupManagerTest : public syncer::SyncManager::Observer,
|
| node.InitUniqueByCreation(type, type_root, client_tag));
|
| }
|
|
|
| - private:
|
| void ConfigureSyncer() {
|
| manager_->ConfigureSyncer(CONFIGURE_REASON_NEW_CLIENT,
|
| ModelTypeSet(SEARCH_ENGINES),
|
| @@ -107,9 +108,9 @@ class SyncBackupManagerTest : public syncer::SyncManager::Observer,
|
| SyncManager* manager_;
|
| };
|
|
|
| -TEST_F(SyncBackupManagerTest, NormalizeAndPersist) {
|
| +TEST_F(SyncBackupManagerTest, NormalizeEntry) {
|
| scoped_ptr<SyncBackupManager> manager(new SyncBackupManager);
|
| - InitManager(manager.get(), STORAGE_ON_DISK);
|
| + InitManager(manager.get(), InternalComponentsFactory::STORAGE_IN_MEMORY);
|
|
|
| CreateEntry(manager->GetUserShare(), SEARCH_ENGINES, "test");
|
|
|
| @@ -134,11 +135,20 @@ TEST_F(SyncBackupManagerTest, NormalizeAndPersist) {
|
| EXPECT_TRUE(pref.GetEntry()->GetId().ServerKnows());
|
| EXPECT_FALSE(pref.GetEntry()->GetIsUnsynced());
|
| }
|
| - manager->ShutdownOnSyncThread(STOP_SYNC);
|
| +}
|
| +
|
| +TEST_F(SyncBackupManagerTest, PersistWithSwitchToSyncShutdown) {
|
| + scoped_ptr<SyncBackupManager> manager(new SyncBackupManager);
|
| + InitManager(manager.get(),
|
| + InternalComponentsFactory::STORAGE_ON_DISK_DEFERRED);
|
| +
|
| + CreateEntry(manager->GetUserShare(), SEARCH_ENGINES, "test");
|
| + manager->SaveChanges();
|
| + manager->ShutdownOnSyncThread(SWITCH_MODE_SYNC);
|
|
|
| // Reopen db to verify entry is persisted.
|
| manager.reset(new SyncBackupManager);
|
| - InitManager(manager.get(), STORAGE_ON_DISK);
|
| + InitManager(manager.get(), InternalComponentsFactory::STORAGE_ON_DISK);
|
| {
|
| ReadTransaction trans(FROM_HERE, manager->GetUserShare());
|
| ReadNode pref(&trans);
|
| @@ -149,10 +159,22 @@ TEST_F(SyncBackupManagerTest, NormalizeAndPersist) {
|
| }
|
| }
|
|
|
| +TEST_F(SyncBackupManagerTest, DontPersistWithOtherShutdown) {
|
| + scoped_ptr<SyncBackupManager> manager(new SyncBackupManager);
|
| + InitManager(manager.get(),
|
| + InternalComponentsFactory::STORAGE_ON_DISK_DEFERRED);
|
| +
|
| + CreateEntry(manager->GetUserShare(), SEARCH_ENGINES, "test");
|
| + manager->SaveChanges();
|
| + manager->ShutdownOnSyncThread(STOP_SYNC);
|
| + EXPECT_FALSE(base::PathExists(
|
| + temp_dir_.path().Append(syncable::Directory::kSyncDatabaseFilename)));
|
| +}
|
| +
|
| TEST_F(SyncBackupManagerTest, FailToInitialize) {
|
| // Test graceful shutdown on initialization failure.
|
| scoped_ptr<SyncBackupManager> manager(new SyncBackupManager);
|
| - InitManager(manager.get(), STORAGE_INVALID);
|
| + InitManager(manager.get(), InternalComponentsFactory::STORAGE_INVALID);
|
| }
|
|
|
| } // anonymous namespace
|
|
|