OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/command_line.h" | 5 #include "base/command_line.h" |
6 #include "base/message_loop/message_loop.h" | 6 #include "base/message_loop/message_loop.h" |
7 #include "base/prefs/pref_service.h" | 7 #include "base/prefs/pref_service.h" |
8 #include "chrome/browser/profiles/profile.h" | 8 #include "chrome/browser/profiles/profile.h" |
9 #include "chrome/browser/sync/profile_sync_service.h" | 9 #include "chrome/browser/sync/profile_sync_service.h" |
10 #include "chrome/browser/sync/test/integration/bookmarks_helper.h" | 10 #include "chrome/browser/sync/test/integration/bookmarks_helper.h" |
(...skipping 11 matching lines...) Expand all Loading... |
22 using bookmarks_helper::ModelMatchesVerifier; | 22 using bookmarks_helper::ModelMatchesVerifier; |
23 using bookmarks_helper::Move; | 23 using bookmarks_helper::Move; |
24 using bookmarks_helper::Remove; | 24 using bookmarks_helper::Remove; |
25 using sync_integration_test_util::AwaitCommitActivityCompletion; | 25 using sync_integration_test_util::AwaitCommitActivityCompletion; |
26 | 26 |
27 class SingleClientBackupRollbackTest : public SyncTest { | 27 class SingleClientBackupRollbackTest : public SyncTest { |
28 public: | 28 public: |
29 SingleClientBackupRollbackTest() : SyncTest(SINGLE_CLIENT) {} | 29 SingleClientBackupRollbackTest() : SyncTest(SINGLE_CLIENT) {} |
30 virtual ~SingleClientBackupRollbackTest() {} | 30 virtual ~SingleClientBackupRollbackTest() {} |
31 | 31 |
32 virtual void SetUp() OVERRIDE { | 32 void DisableBackup() { |
| 33 CommandLine::ForCurrentProcess()->AppendSwitch( |
| 34 switches::kSyncDisableBackup); |
| 35 } |
| 36 |
| 37 void EnableRollback() { |
33 CommandLine::ForCurrentProcess()->AppendSwitch( | 38 CommandLine::ForCurrentProcess()->AppendSwitch( |
34 switches::kSyncEnableRollback); | 39 switches::kSyncEnableRollback); |
35 SyncTest::SetUp(); | |
36 } | 40 } |
37 | 41 |
38 private: | 42 private: |
39 DISALLOW_COPY_AND_ASSIGN(SingleClientBackupRollbackTest); | 43 DISALLOW_COPY_AND_ASSIGN(SingleClientBackupRollbackTest); |
40 }; | 44 }; |
41 | 45 |
42 class BackupModeChecker { | 46 class BackupModeChecker { |
43 public: | 47 public: |
44 explicit BackupModeChecker(ProfileSyncService* service, | 48 explicit BackupModeChecker(ProfileSyncService* service, |
45 base::TimeDelta timeout) | 49 base::TimeDelta timeout) |
(...skipping 26 matching lines...) Expand all Loading... |
72 return pss_->backend_mode() == ProfileSyncService::BACKUP && | 76 return pss_->backend_mode() == ProfileSyncService::BACKUP && |
73 pss_->ShouldPushChanges(); | 77 pss_->ShouldPushChanges(); |
74 } | 78 } |
75 | 79 |
76 ProfileSyncService* pss_; | 80 ProfileSyncService* pss_; |
77 base::TimeDelta timeout_; | 81 base::TimeDelta timeout_; |
78 base::TimeTicks expiration_; | 82 base::TimeTicks expiration_; |
79 }; | 83 }; |
80 | 84 |
81 #if defined(ENABLE_PRE_SYNC_BACKUP) | 85 #if defined(ENABLE_PRE_SYNC_BACKUP) |
| 86 #define MAYBE_TestBackupDisabled TestBackupDisabled |
| 87 #else |
| 88 #define MAYBE_TestBackupDisabled DISABLED_TestBackupDisabled |
| 89 #endif |
| 90 IN_PROC_BROWSER_TEST_F(SingleClientBackupRollbackTest, |
| 91 MAYBE_TestBackupDisabled) { |
| 92 DisableBackup(); |
| 93 |
| 94 ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; |
| 95 |
| 96 BackupModeChecker checker(GetSyncService(0), |
| 97 base::TimeDelta::FromSeconds(15)); |
| 98 ASSERT_FALSE(checker.Wait()); |
| 99 |
| 100 ASSERT_EQ(ProfileSyncService::IDLE, GetSyncService(0)->backend_mode()); |
| 101 } |
| 102 |
| 103 #if defined(ENABLE_PRE_SYNC_BACKUP) |
| 104 #define MAYBE_TestBackupOnly TestBackupOnly |
| 105 #else |
| 106 #define MAYBE_TestBackupOnly DISABLED_TestBackupOnly |
| 107 #endif |
| 108 IN_PROC_BROWSER_TEST_F(SingleClientBackupRollbackTest, |
| 109 MAYBE_TestBackupOnly) { |
| 110 ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; |
| 111 |
| 112 // Starting state: |
| 113 // other_node |
| 114 // -> http://mail.google.com "url0" |
| 115 // -> http://www.nhl.com "url1" |
| 116 ASSERT_TRUE(AddURL(0, GetOtherNode(0), 0, "url0", |
| 117 GURL("http://mail.google.com"))); |
| 118 ASSERT_TRUE(AddURL(0, GetOtherNode(0), 1, "url1", |
| 119 GURL("http://www.nhl.com"))); |
| 120 |
| 121 BackupModeChecker checker(GetSyncService(0), |
| 122 base::TimeDelta::FromSeconds(15)); |
| 123 ASSERT_TRUE(checker.Wait()); |
| 124 |
| 125 // Setup sync, wait for its completion, and make sure changes were synced. |
| 126 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; |
| 127 ASSERT_TRUE(AwaitCommitActivityCompletion(GetSyncService((0)))); |
| 128 ASSERT_TRUE(ModelMatchesVerifier(0)); |
| 129 |
| 130 // Made bookmark changes while sync is on. |
| 131 Remove(0, GetOtherNode(0), 1); |
| 132 ASSERT_TRUE(AddURL(0, GetOtherNode(0), 1, "url2", |
| 133 GURL("http://www.yahoo.com"))); |
| 134 ASSERT_TRUE(AwaitCommitActivityCompletion(GetSyncService((0)))); |
| 135 ASSERT_TRUE(ModelMatchesVerifier(0)); |
| 136 |
| 137 // Let server to return rollback command on next sync request. |
| 138 GetFakeServer()->TriggerError(sync_pb::SyncEnums::USER_ROLLBACK); |
| 139 |
| 140 // Make another change to trigger downloading of rollback command. |
| 141 Remove(0, GetOtherNode(0), 0); |
| 142 |
| 143 // Wait for sync to switch to backup mode. |
| 144 ASSERT_TRUE(checker.Wait()); |
| 145 |
| 146 // With rollback disabled, bookmarks in backup DB should not be restored. |
| 147 // Only bookmark added during sync is present. |
| 148 ASSERT_EQ(1, GetOtherNode(0)->child_count()); |
| 149 ASSERT_EQ(GURL("http://www.yahoo.com"), |
| 150 GetOtherNode(0)->GetChild(0)->url()); |
| 151 } |
| 152 |
| 153 #if defined(ENABLE_PRE_SYNC_BACKUP) |
82 #define MAYBE_TestBackupRollback TestBackupRollback | 154 #define MAYBE_TestBackupRollback TestBackupRollback |
83 #else | 155 #else |
84 #define MAYBE_TestBackupRollback DISABLED_TestBackupRollback | 156 #define MAYBE_TestBackupRollback DISABLED_TestBackupRollback |
85 #endif | 157 #endif |
86 IN_PROC_BROWSER_TEST_F(SingleClientBackupRollbackTest, | 158 IN_PROC_BROWSER_TEST_F(SingleClientBackupRollbackTest, |
87 MAYBE_TestBackupRollback) { | 159 MAYBE_TestBackupRollback) { |
| 160 EnableRollback(); |
| 161 |
88 ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; | 162 ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; |
89 | 163 |
90 // Starting state: | 164 // Starting state: |
91 // other_node | 165 // other_node |
92 // -> top | 166 // -> top |
93 // -> tier1_a | 167 // -> tier1_a |
94 // -> http://mail.google.com "tier1_a_url0" | 168 // -> http://mail.google.com "tier1_a_url0" |
95 // -> tier1_b | 169 // -> tier1_b |
96 // -> http://www.nhl.com "tier1_b_url0" | 170 // -> http://www.nhl.com "tier1_b_url0" |
97 const BookmarkNode* top = AddFolder(0, GetOtherNode(0), 0, "top"); | 171 const BookmarkNode* top = AddFolder(0, GetOtherNode(0), 0, "top"); |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
139 | 213 |
140 #if defined(ENABLE_PRE_SYNC_BACKUP) | 214 #if defined(ENABLE_PRE_SYNC_BACKUP) |
141 #define MAYBE_TestPrefBackupRollback TestPrefBackupRollback | 215 #define MAYBE_TestPrefBackupRollback TestPrefBackupRollback |
142 #else | 216 #else |
143 #define MAYBE_TestPrefBackupRollback DISABLED_TestPrefBackupRollback | 217 #define MAYBE_TestPrefBackupRollback DISABLED_TestPrefBackupRollback |
144 #endif | 218 #endif |
145 // Verify local preferences are not affected by preferences in backup DB under | 219 // Verify local preferences are not affected by preferences in backup DB under |
146 // backup mode. | 220 // backup mode. |
147 IN_PROC_BROWSER_TEST_F(SingleClientBackupRollbackTest, | 221 IN_PROC_BROWSER_TEST_F(SingleClientBackupRollbackTest, |
148 MAYBE_TestPrefBackupRollback) { | 222 MAYBE_TestPrefBackupRollback) { |
| 223 EnableRollback(); |
| 224 |
149 const char kUrl1[] = "http://www.google.com"; | 225 const char kUrl1[] = "http://www.google.com"; |
150 const char kUrl2[] = "http://map.google.com"; | 226 const char kUrl2[] = "http://map.google.com"; |
151 const char kUrl3[] = "http://plus.google.com"; | 227 const char kUrl3[] = "http://plus.google.com"; |
152 | 228 |
153 ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; | 229 ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; |
154 | 230 |
155 preferences_helper::ChangeStringPref(0, prefs::kHomePage, kUrl1); | 231 preferences_helper::ChangeStringPref(0, prefs::kHomePage, kUrl1); |
156 | 232 |
157 BackupModeChecker checker(GetSyncService(0), | 233 BackupModeChecker checker(GetSyncService(0), |
158 base::TimeDelta::FromSeconds(15)); | 234 base::TimeDelta::FromSeconds(15)); |
(...skipping 21 matching lines...) Expand all Loading... |
180 // Make another change to trigger downloading of rollback command. | 256 // Make another change to trigger downloading of rollback command. |
181 preferences_helper::ChangeStringPref(0, prefs::kHomePage, ""); | 257 preferences_helper::ChangeStringPref(0, prefs::kHomePage, ""); |
182 | 258 |
183 // Wait for sync to switch to backup mode after finishing rollback. | 259 // Wait for sync to switch to backup mode after finishing rollback. |
184 ASSERT_TRUE(checker.Wait()); | 260 ASSERT_TRUE(checker.Wait()); |
185 | 261 |
186 // Verify preference is restored. | 262 // Verify preference is restored. |
187 ASSERT_EQ(kUrl2, | 263 ASSERT_EQ(kUrl2, |
188 preferences_helper::GetPrefs(0)->GetString(prefs::kHomePage)); | 264 preferences_helper::GetPrefs(0)->GetString(prefs::kHomePage)); |
189 } | 265 } |
| 266 |
| 267 #if defined(ENABLE_PRE_SYNC_BACKUP) |
| 268 #define MAYBE_RollbackNoBackup RollbackNoBackup |
| 269 #else |
| 270 #define MAYBE_RollbackNoBackup DISABLED_RollbackNoBackup |
| 271 #endif |
| 272 IN_PROC_BROWSER_TEST_F(SingleClientBackupRollbackTest, |
| 273 MAYBE_RollbackNoBackup) { |
| 274 EnableRollback(); |
| 275 |
| 276 ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; |
| 277 |
| 278 // Setup sync, wait for its completion, and make sure changes were synced. |
| 279 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; |
| 280 |
| 281 // Starting state: |
| 282 // other_node |
| 283 // -> http://mail.google.com "url0" |
| 284 // -> http://www.nhl.com "url1" |
| 285 ASSERT_TRUE(AddURL(0, GetOtherNode(0), 0, "url0", |
| 286 GURL("http://mail.google.com"))); |
| 287 ASSERT_TRUE(AddURL(0, GetOtherNode(0), 1, "url1", |
| 288 GURL("http://www.nhl.com"))); |
| 289 |
| 290 ASSERT_TRUE(AwaitCommitActivityCompletion(GetSyncService((0)))); |
| 291 ASSERT_TRUE(ModelMatchesVerifier(0)); |
| 292 |
| 293 // Let server to return rollback command on next sync request. |
| 294 GetFakeServer()->TriggerError(sync_pb::SyncEnums::USER_ROLLBACK); |
| 295 |
| 296 // Make another change to trigger downloading of rollback command. |
| 297 Remove(0, GetOtherNode(0), 0); |
| 298 |
| 299 // Wait for sync to switch to backup mode after finishing rollback. |
| 300 BackupModeChecker checker(GetSyncService(0), |
| 301 base::TimeDelta::FromSeconds(15)); |
| 302 ASSERT_TRUE(checker.Wait()); |
| 303 |
| 304 // Without backup DB, bookmarks added during sync shouldn't be removed. |
| 305 ASSERT_EQ(1, GetOtherNode(0)->child_count()); |
| 306 ASSERT_EQ(GURL("http://www.nhl.com"), |
| 307 GetOtherNode(0)->GetChild(0)->url()); |
| 308 } |
OLD | NEW |