| Index: chrome/browser/sync/test/integration/single_client_backup_rollback_test.cc
|
| diff --git a/chrome/browser/sync/test/integration/single_client_backup_rollback_test.cc b/chrome/browser/sync/test/integration/single_client_backup_rollback_test.cc
|
| index b204a59cba0e4a4159334353dadc25d9007e643f..f545aaa444bcf856eccaaf2ca7f0ce2d39d149cd 100644
|
| --- a/chrome/browser/sync/test/integration/single_client_backup_rollback_test.cc
|
| +++ b/chrome/browser/sync/test/integration/single_client_backup_rollback_test.cc
|
| @@ -29,10 +29,14 @@ class SingleClientBackupRollbackTest : public SyncTest {
|
| SingleClientBackupRollbackTest() : SyncTest(SINGLE_CLIENT) {}
|
| virtual ~SingleClientBackupRollbackTest() {}
|
|
|
| - virtual void SetUp() OVERRIDE {
|
| + void DisableBackup() {
|
| + CommandLine::ForCurrentProcess()->AppendSwitch(
|
| + switches::kSyncDisableBackup);
|
| + }
|
| +
|
| + void EnableRollback() {
|
| CommandLine::ForCurrentProcess()->AppendSwitch(
|
| switches::kSyncEnableRollback);
|
| - SyncTest::SetUp();
|
| }
|
|
|
| private:
|
| @@ -79,12 +83,82 @@ class BackupModeChecker {
|
| };
|
|
|
| #if defined(ENABLE_PRE_SYNC_BACKUP)
|
| +#define MAYBE_TestBackupDisabled TestBackupDisabled
|
| +#else
|
| +#define MAYBE_TestBackupDisabled DISABLED_TestBackupDisabled
|
| +#endif
|
| +IN_PROC_BROWSER_TEST_F(SingleClientBackupRollbackTest,
|
| + MAYBE_TestBackupDisabled) {
|
| + DisableBackup();
|
| +
|
| + ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
|
| +
|
| + BackupModeChecker checker(GetSyncService(0),
|
| + base::TimeDelta::FromSeconds(15));
|
| + ASSERT_FALSE(checker.Wait());
|
| +
|
| + ASSERT_EQ(ProfileSyncService::IDLE, GetSyncService(0)->backend_mode());
|
| +}
|
| +
|
| +#if defined(ENABLE_PRE_SYNC_BACKUP)
|
| +#define MAYBE_TestBackupOnly TestBackupOnly
|
| +#else
|
| +#define MAYBE_TestBackupOnly DISABLED_TestBackupOnly
|
| +#endif
|
| +IN_PROC_BROWSER_TEST_F(SingleClientBackupRollbackTest,
|
| + MAYBE_TestBackupOnly) {
|
| + ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
|
| +
|
| + // Starting state:
|
| + // other_node
|
| + // -> http://mail.google.com "url0"
|
| + // -> http://www.nhl.com "url1"
|
| + ASSERT_TRUE(AddURL(0, GetOtherNode(0), 0, "url0",
|
| + GURL("http://mail.google.com")));
|
| + ASSERT_TRUE(AddURL(0, GetOtherNode(0), 1, "url1",
|
| + GURL("http://www.nhl.com")));
|
| +
|
| + BackupModeChecker checker(GetSyncService(0),
|
| + base::TimeDelta::FromSeconds(15));
|
| + ASSERT_TRUE(checker.Wait());
|
| +
|
| + // Setup sync, wait for its completion, and make sure changes were synced.
|
| + ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
|
| + ASSERT_TRUE(AwaitCommitActivityCompletion(GetSyncService((0))));
|
| + ASSERT_TRUE(ModelMatchesVerifier(0));
|
| +
|
| + // Made bookmark changes while sync is on.
|
| + Remove(0, GetOtherNode(0), 1);
|
| + ASSERT_TRUE(AddURL(0, GetOtherNode(0), 1, "url2",
|
| + GURL("http://www.yahoo.com")));
|
| + ASSERT_TRUE(AwaitCommitActivityCompletion(GetSyncService((0))));
|
| + ASSERT_TRUE(ModelMatchesVerifier(0));
|
| +
|
| + // Let server to return rollback command on next sync request.
|
| + GetFakeServer()->TriggerError(sync_pb::SyncEnums::USER_ROLLBACK);
|
| +
|
| + // Make another change to trigger downloading of rollback command.
|
| + Remove(0, GetOtherNode(0), 0);
|
| +
|
| + // Wait for sync to switch to backup mode.
|
| + ASSERT_TRUE(checker.Wait());
|
| +
|
| + // With rollback disabled, bookmarks in backup DB should not be restored.
|
| + // Only bookmark added during sync is present.
|
| + ASSERT_EQ(1, GetOtherNode(0)->child_count());
|
| + ASSERT_EQ(GURL("http://www.yahoo.com"),
|
| + GetOtherNode(0)->GetChild(0)->url());
|
| +}
|
| +
|
| +#if defined(ENABLE_PRE_SYNC_BACKUP)
|
| #define MAYBE_TestBackupRollback TestBackupRollback
|
| #else
|
| #define MAYBE_TestBackupRollback DISABLED_TestBackupRollback
|
| #endif
|
| IN_PROC_BROWSER_TEST_F(SingleClientBackupRollbackTest,
|
| MAYBE_TestBackupRollback) {
|
| + EnableRollback();
|
| +
|
| ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
|
|
|
| // Starting state:
|
| @@ -146,6 +220,8 @@ IN_PROC_BROWSER_TEST_F(SingleClientBackupRollbackTest,
|
| // backup mode.
|
| IN_PROC_BROWSER_TEST_F(SingleClientBackupRollbackTest,
|
| MAYBE_TestPrefBackupRollback) {
|
| + EnableRollback();
|
| +
|
| const char kUrl1[] = "http://www.google.com";
|
| const char kUrl2[] = "http://map.google.com";
|
| const char kUrl3[] = "http://plus.google.com";
|
| @@ -187,3 +263,46 @@ IN_PROC_BROWSER_TEST_F(SingleClientBackupRollbackTest,
|
| ASSERT_EQ(kUrl2,
|
| preferences_helper::GetPrefs(0)->GetString(prefs::kHomePage));
|
| }
|
| +
|
| +#if defined(ENABLE_PRE_SYNC_BACKUP)
|
| +#define MAYBE_RollbackNoBackup RollbackNoBackup
|
| +#else
|
| +#define MAYBE_RollbackNoBackup DISABLED_RollbackNoBackup
|
| +#endif
|
| +IN_PROC_BROWSER_TEST_F(SingleClientBackupRollbackTest,
|
| + MAYBE_RollbackNoBackup) {
|
| + EnableRollback();
|
| +
|
| + ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
|
| +
|
| + // Setup sync, wait for its completion, and make sure changes were synced.
|
| + ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
|
| +
|
| + // Starting state:
|
| + // other_node
|
| + // -> http://mail.google.com "url0"
|
| + // -> http://www.nhl.com "url1"
|
| + ASSERT_TRUE(AddURL(0, GetOtherNode(0), 0, "url0",
|
| + GURL("http://mail.google.com")));
|
| + ASSERT_TRUE(AddURL(0, GetOtherNode(0), 1, "url1",
|
| + GURL("http://www.nhl.com")));
|
| +
|
| + ASSERT_TRUE(AwaitCommitActivityCompletion(GetSyncService((0))));
|
| + ASSERT_TRUE(ModelMatchesVerifier(0));
|
| +
|
| + // Let server to return rollback command on next sync request.
|
| + GetFakeServer()->TriggerError(sync_pb::SyncEnums::USER_ROLLBACK);
|
| +
|
| + // Make another change to trigger downloading of rollback command.
|
| + Remove(0, GetOtherNode(0), 0);
|
| +
|
| + // Wait for sync to switch to backup mode after finishing rollback.
|
| + BackupModeChecker checker(GetSyncService(0),
|
| + base::TimeDelta::FromSeconds(15));
|
| + ASSERT_TRUE(checker.Wait());
|
| +
|
| + // Without backup DB, bookmarks added during sync shouldn't be removed.
|
| + ASSERT_EQ(1, GetOtherNode(0)->child_count());
|
| + ASSERT_EQ(GURL("http://www.nhl.com"),
|
| + GetOtherNode(0)->GetChild(0)->url());
|
| +}
|
|
|