Upstream version 9.37.195.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / sync / profile_sync_service_unittest.cc
index 8b5fa2a..c9224e8 100644 (file)
@@ -7,6 +7,7 @@
 #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"
@@ -207,7 +208,8 @@ class ProfileSyncServiceTest : public ::testing::Test {
 #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));
   }
@@ -429,7 +431,8 @@ TEST_F(ProfileSyncServiceTest, EnableSyncAndSignOutDesktop) {
       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());
 }
@@ -445,7 +448,8 @@ TEST_F(ProfileSyncServiceTest, EnableSyncAndSignOut) {
   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)
@@ -488,10 +492,6 @@ TEST_F(ProfileSyncServiceTest, GetSyncTokenStatus) {
 }
 
 #if defined(ENABLE_PRE_SYNC_BACKUP)
-void QuitLoop() {
-  base::MessageLoop::current()->Quit();
-}
-
 TEST_F(ProfileSyncServiceTest, StartBackup) {
   CreateServiceWithoutSignIn();
   ExpectDataTypeManagerCreation(1);
@@ -499,10 +499,11 @@ TEST_F(ProfileSyncServiceTest, StartBackup) {
   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());
@@ -517,7 +518,6 @@ TEST_F(ProfileSyncServiceTest, BackupAfterSyncDisabled) {
   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());
 
@@ -552,7 +552,6 @@ TEST_F(ProfileSyncServiceTest, RollbackThenBackup) {
   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());
 
@@ -583,6 +582,32 @@ TEST_F(ProfileSyncServiceTest, RollbackThenBackup) {
   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) {