#include "base/compiler_specific.h"
#include "base/memory/scoped_ptr.h"
#include "base/run_loop.h"
+#include "base/strings/string_number_conversions.h"
#include "base/strings/utf_string_conversions.h"
#include "base/values.h"
#include "chrome/browser/invalidation/fake_invalidation_service.h"
#if defined(OS_WIN) || defined(OS_MACOSX) || (defined(OS_LINUX) && !defined(OS_CHROMEOS))
void CreateServiceWithoutSignIn() {
CreateService(browser_sync::MANUAL_START);
- SigninManagerFactory::GetForProfile(profile())->SignOut();
+ SigninManagerFactory::GetForProfile(profile())->SignOut(
+ signin_metrics::SIGNOUT_TEST);
service()->SetBackupStartDelayForTest(
base::TimeDelta::FromMilliseconds(100));
}
sync_driver::prefs::kSyncSuppressStart));
EXPECT_EQ(ProfileSyncService::SYNC, service()->backend_mode());
- SigninManagerFactory::GetForProfile(profile())->SignOut();
+ SigninManagerFactory::GetForProfile(profile())->SignOut(
+ signin_metrics::SIGNOUT_TEST);
EXPECT_TRUE(service()->sync_initialized());
EXPECT_EQ(ProfileSyncService::BACKUP, service()->backend_mode());
}
EXPECT_FALSE(profile()->GetPrefs()->GetBoolean(
sync_driver::prefs::kSyncSuppressStart));
- SigninManagerFactory::GetForProfile(profile())->SignOut();
+ SigninManagerFactory::GetForProfile(profile())->SignOut(
+ signin_metrics::SIGNOUT_TEST);
EXPECT_FALSE(service()->sync_initialized());
}
#endif // !defined(OS_CHROMEOS)
}
#if defined(ENABLE_PRE_SYNC_BACKUP)
-void QuitLoop() {
- base::MessageLoop::current()->Quit();
-}
-
TEST_F(ProfileSyncServiceTest, StartBackup) {
CreateServiceWithoutSignIn();
ExpectDataTypeManagerCreation(1);
ExpectSyncBackendHostCreationCollectDeleteDir(1, &delete_dir_param);
Initialize();
EXPECT_EQ(ProfileSyncService::IDLE, service()->backend_mode());
+ base::RunLoop run_loop;
base::MessageLoop::current()->PostDelayedTask(
- FROM_HERE, base::Bind(&QuitLoop),
+ FROM_HERE, run_loop.QuitClosure(),
base::TimeDelta::FromMilliseconds(100));
- base::MessageLoop::current()->Run();
+ run_loop.Run();
EXPECT_EQ(ProfileSyncService::BACKUP, service()->backend_mode());
EXPECT_EQ(1u, delete_dir_param.size());
ExpectSyncBackendHostCreationCollectDeleteDir(2, &delete_dir_param);
IssueTestTokens();
Initialize();
- base::MessageLoop::current()->PostTask(FROM_HERE, base::Bind(&QuitLoop));
EXPECT_TRUE(service()->sync_initialized());
EXPECT_EQ(ProfileSyncService::SYNC, service()->backend_mode());
ExpectSyncBackendHostCreationCollectDeleteDir(3, &delete_dir_param);
IssueTestTokens();
Initialize();
- base::MessageLoop::current()->PostTask(FROM_HERE, base::Bind(&QuitLoop));
EXPECT_TRUE(service()->sync_initialized());
EXPECT_EQ(ProfileSyncService::SYNC, service()->backend_mode());
EXPECT_FALSE(delete_dir_param[1]);
EXPECT_TRUE(delete_dir_param[2]);
}
+
+TEST_F(ProfileSyncServiceTest, StartNewBackupDbOnSettingsReset) {
+ CreateServiceWithoutSignIn();
+ ExpectDataTypeManagerCreation(1);
+ std::vector<bool> delete_dir_param;
+ ExpectSyncBackendHostCreationCollectDeleteDir(1, &delete_dir_param);
+ Initialize();
+ EXPECT_EQ(ProfileSyncService::IDLE, service()->backend_mode());
+
+ // Set reset time to pretend settings reset happened.
+ profile()->GetPrefs()->SetString(
+ prefs::kPreferenceResetTime,
+ base::Int64ToString(base::Time::Now().ToInternalValue()));
+
+ base::RunLoop run_loop;
+ base::MessageLoop::current()->PostDelayedTask(
+ FROM_HERE, run_loop.QuitClosure(),
+ base::TimeDelta::FromMilliseconds(100));
+ run_loop.Run();
+
+ EXPECT_EQ(ProfileSyncService::BACKUP, service()->backend_mode());
+
+ EXPECT_EQ(1u, delete_dir_param.size());
+ EXPECT_TRUE(delete_dir_param[0]);
+}
+
#endif
TEST_F(ProfileSyncServiceTest, GetSyncServiceURL) {