| OLD | NEW |
| (Empty) | |
| 1 // Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #ifdef CHROME_PERSONALIZATION |
| 6 |
| 7 #include <stdlib.h> |
| 8 |
| 9 #include "base/string16.h" |
| 10 #include "base/rand_util.h" |
| 11 #include "chrome/browser/bookmarks/bookmark_model.h" |
| 12 #include "chrome/browser/bookmarks/bookmark_utils.h" |
| 13 #include "chrome/browser/browser.h" |
| 14 #include "chrome/browser/profile.h" |
| 15 #include "chrome/browser/sync/profile_sync_service.h" |
| 16 #include "chrome/test/live_sync/bookmark_model_verifier.h" |
| 17 #include "chrome/test/live_sync/profile_sync_service_test_harness.h" |
| 18 #include "chrome/test/live_sync/live_bookmarks_sync_test.h" |
| 19 #include "testing/gtest/include/gtest/gtest.h" |
| 20 |
| 21 class TwoClientLiveBookmarksSyncTest : public LiveBookmarksSyncTest { |
| 22 public: |
| 23 TwoClientLiveBookmarksSyncTest() { |
| 24 // Set the initial timeout value to 5 min. |
| 25 InProcessBrowserTest::SetInitialTimeoutInMS(300000); |
| 26 } |
| 27 virtual ~TwoClientLiveBookmarksSyncTest() {} |
| 28 bool SetupSync() { |
| 29 profile2_.reset(MakeProfile(L"clienttwo")); |
| 30 client1_.reset(new ProfileSyncServiceTestHarness( |
| 31 browser()->profile(), username_, password_)); |
| 32 client2_.reset(new ProfileSyncServiceTestHarness( |
| 33 profile2_.get(), username_, password_)); |
| 34 return client1_->SetupSync() && client2_->SetupSync(); |
| 35 } |
| 36 |
| 37 ProfileSyncServiceTestHarness* client1() { return client1_.get(); } |
| 38 ProfileSyncServiceTestHarness* client2() { return client2_.get(); } |
| 39 Profile* profile1() { return browser()->profile(); } |
| 40 Profile* profile2() { return profile2_.get(); } |
| 41 |
| 42 void Cleanup() { |
| 43 client2_.reset(); |
| 44 profile2_.reset(); |
| 45 } |
| 46 |
| 47 private: |
| 48 scoped_ptr<Profile> profile2_; |
| 49 scoped_ptr<ProfileSyncServiceTestHarness> client1_; |
| 50 scoped_ptr<ProfileSyncServiceTestHarness> client2_; |
| 51 |
| 52 DISALLOW_COPY_AND_ASSIGN(TwoClientLiveBookmarksSyncTest); |
| 53 }; |
| 54 |
| 55 // Test case Naming Convention: |
| 56 // SC/MC - SingleClient / MultiClient. |
| 57 // Suffix Number - Indicates test scribe testcase ID. |
| 58 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest, Sanity) { |
| 59 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync"; |
| 60 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create()); |
| 61 BookmarkModel* model_one = profile1()->GetBookmarkModel(); |
| 62 BookmarkModel* model_two = profile2()->GetBookmarkModel(); |
| 63 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode(); |
| 64 const BookmarkNode* bbn_two = model_two->GetBookmarkBarNode(); |
| 65 verifier->ExpectMatch(model_one); |
| 66 verifier->ExpectMatch(model_two); |
| 67 |
| 68 GURL google_url("http://www.google.com"); |
| 69 // Start adding some bookmarks to each model. The scope is to enforce that |
| 70 // the BookmarkNode*'s are not used after they may be invalidated by sync |
| 71 // operations that alter the models. |
| 72 { |
| 73 const BookmarkNode* google_one = verifier->AddURL(model_one, bbn_one, 0, |
| 74 L"Google", google_url); |
| 75 |
| 76 // To make this test deterministic, we wait here so there is no race to |
| 77 // decide which bookmark actually gets position 0. |
| 78 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 79 const BookmarkNode* yahoo_two = verifier->AddURL(model_two, bbn_two, 0, |
| 80 L"Yahoo", GURL("http://www.yahoo.com")); |
| 81 } |
| 82 ASSERT_TRUE(client2()->AwaitMutualSyncCycleCompletion(client1())); |
| 83 verifier->ExpectMatch(model_one); |
| 84 verifier->ExpectMatch(model_two); |
| 85 |
| 86 { |
| 87 const BookmarkNode* new_folder_one = |
| 88 verifier->AddGroup(model_one, bbn_one, 2, L"New Folder"); |
| 89 verifier->Move(model_one, GetByUniqueURL(model_one, google_url), |
| 90 new_folder_one, 0); |
| 91 verifier->SetTitle(model_one, bbn_one->GetChild(0), L"Yahoo!!"); |
| 92 const BookmarkNode* cnn_one = verifier->AddURL(model_one, |
| 93 bbn_one, 1, L"CNN", GURL("http://www.cnn.com")); |
| 94 } |
| 95 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 96 verifier->ExpectMatch(model_one); |
| 97 verifier->ExpectMatch(model_two); |
| 98 |
| 99 { |
| 100 const BookmarkNode* facebook_two = verifier->AddURL(model_two, |
| 101 bbn_two, 0, L"Facebook", GURL("http://www.facebook.com")); |
| 102 } |
| 103 |
| 104 // AwaitMutualSyncCycleCompletion blocks the calling object before the |
| 105 // argument, so because we have made changes from client2 here we need to swap |
| 106 // the calling order. |
| 107 ASSERT_TRUE(client2()->AwaitMutualSyncCycleCompletion(client1())); |
| 108 verifier->ExpectMatch(model_one); |
| 109 verifier->ExpectMatch(model_two); |
| 110 |
| 111 verifier->SortChildren(model_two, bbn_two); |
| 112 |
| 113 ASSERT_TRUE(client2()->AwaitMutualSyncCycleCompletion(client1())); |
| 114 verifier->ExpectMatch(model_one); |
| 115 verifier->ExpectMatch(model_two); |
| 116 |
| 117 { |
| 118 // Do something crazy and modify the same item from both clients!! |
| 119 const BookmarkNode* google_one = GetByUniqueURL(model_one, google_url); |
| 120 const BookmarkNode* google_two = GetByUniqueURL(model_two, google_url); |
| 121 model_one->SetTitle(google_one, L"Google++"); |
| 122 model_two->SetTitle(google_two, L"Google--"); |
| 123 } |
| 124 // The extra wait here is because both clients generated changes, and the |
| 125 // first client reaches a happy state before the second client gets a chance |
| 126 // to push, so we explicitly double check. This shouldn't be necessary once |
| 127 // we have an easy way to verify the head version on each client. |
| 128 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletionWithConflict(client2())); |
| 129 BookmarkModelVerifier::ExpectModelsMatch(model_one, model_two); |
| 130 |
| 131 Cleanup(); |
| 132 } |
| 133 |
| 134 // TODO(timsteele): There are really two tests here, one case where conflict |
| 135 // resolution causes the URL to be overwritten, and one where we see duplicate |
| 136 // bookmarks created due to the Remove/Add semantic for "Edit URL" and the race |
| 137 // between the local edit and server edit. The latter is bug 1956259 and is |
| 138 // still under investigation, I don't have enough info to write two separate |
| 139 // tests yet. |
| 140 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest, |
| 141 SimultaneousURLChanges) { |
| 142 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync"; |
| 143 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create()); |
| 144 BookmarkModel* model_one = profile1()->GetBookmarkModel(); |
| 145 BookmarkModel* model_two = profile2()->GetBookmarkModel(); |
| 146 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode(); |
| 147 const BookmarkNode* bbn_two = model_two->GetBookmarkBarNode(); |
| 148 |
| 149 verifier->ExpectMatch(model_one); |
| 150 verifier->ExpectMatch(model_two); |
| 151 GURL initial_url(L"http://www.google.com"); |
| 152 GURL second_url(L"http://www.google.com/abc"); |
| 153 GURL third_url(L"http://www.google.com/def"); |
| 154 std::wstring title = L"Google"; |
| 155 { |
| 156 const BookmarkNode* google = verifier->AddURL(model_one, bbn_one, 0, |
| 157 title, initial_url); |
| 158 } |
| 159 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 160 |
| 161 { |
| 162 const BookmarkNode* google_one = GetByUniqueURL(model_one, initial_url); |
| 163 const BookmarkNode* google_two = GetByUniqueURL(model_two, initial_url); |
| 164 bookmark_utils::ApplyEditsWithNoGroupChange(model_one, bbn_one, google_one, |
| 165 title, second_url, NULL); |
| 166 bookmark_utils::ApplyEditsWithNoGroupChange(model_two, bbn_two, google_two, |
| 167 title, third_url, NULL); |
| 168 } |
| 169 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletionWithConflict(client2())); |
| 170 BookmarkModelVerifier::ExpectModelsMatch(model_one, model_two); |
| 171 |
| 172 { |
| 173 const BookmarkNode* google_one = bbn_one->GetChild(0); |
| 174 model_one->SetTitle(google_one, L"Google1"); |
| 175 } |
| 176 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 177 BookmarkModelVerifier::ExpectModelsMatch(model_one, model_two); |
| 178 Cleanup(); |
| 179 } |
| 180 |
| 181 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest, |
| 182 SC_CleanAccount_AddFirstFolder_370558) { |
| 183 |
| 184 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync"; |
| 185 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create()); |
| 186 BookmarkModel* model_one = profile1()->GetBookmarkModel(); |
| 187 BookmarkModel* model_two = profile2()->GetBookmarkModel(); |
| 188 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode(); |
| 189 |
| 190 verifier->ExpectMatch(model_one); |
| 191 verifier->ExpectMatch(model_two); |
| 192 |
| 193 { |
| 194 // Let's add first bookmark folder to client1 |
| 195 const BookmarkNode* new_folder_one = |
| 196 verifier->AddGroup(model_one, bbn_one, 0, L"TestFolder"); |
| 197 } |
| 198 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 199 verifier->ExpectMatch(model_one); |
| 200 verifier->ExpectMatch(model_two); |
| 201 Cleanup(); |
| 202 } |
| 203 |
| 204 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest, |
| 205 SC_CleanAccount_AddFirstBMWithoutFavicon_370559) { |
| 206 |
| 207 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync"; |
| 208 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create()); |
| 209 BookmarkModel* model_one = profile1()->GetBookmarkModel(); |
| 210 BookmarkModel* model_two = profile2()->GetBookmarkModel(); |
| 211 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode(); |
| 212 |
| 213 verifier->ExpectMatch(model_one); |
| 214 verifier->ExpectMatch(model_two); |
| 215 |
| 216 // Let's add first bookmark(without favicon) |
| 217 { |
| 218 const BookmarkNode* nofavicon_bm = verifier->AddURL(model_one, bbn_one, 0, |
| 219 L"TestBookmark", GURL("http://www.nofaviconurl.com")); |
| 220 } |
| 221 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 222 verifier->ExpectMatch(model_one); |
| 223 verifier->ExpectMatch(model_two); |
| 224 Cleanup(); |
| 225 } |
| 226 |
| 227 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest, |
| 228 SC_CleanAccount_AddNonHTTPBMs_370560) { |
| 229 |
| 230 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync"; |
| 231 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create()); |
| 232 BookmarkModel* model_one = profile1()->GetBookmarkModel(); |
| 233 BookmarkModel* model_two = profile2()->GetBookmarkModel(); |
| 234 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode(); |
| 235 verifier->ExpectMatch(model_one); |
| 236 verifier->ExpectMatch(model_two); |
| 237 |
| 238 // Let's add few non-http bookmarks(without favicon) |
| 239 { |
| 240 const BookmarkNode* ftp_bm = verifier->AddURL(model_one, bbn_one, 0, |
| 241 L"FTPBookmark", GURL("ftp://ftp.testbookmark.com")); |
| 242 const BookmarkNode* file_bm = verifier->AddURL(model_one, bbn_one, 0, |
| 243 L"FileBookmark", GURL("file:///")); |
| 244 } |
| 245 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 246 verifier->ExpectMatch(model_one); |
| 247 verifier->ExpectMatch(model_two); |
| 248 Cleanup(); |
| 249 } |
| 250 |
| 251 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest, |
| 252 SC_CleanAccount_AddFirstBM_UnderFolder_370561) { |
| 253 |
| 254 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync"; |
| 255 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create()); |
| 256 BookmarkModel* model_one = profile1()->GetBookmarkModel(); |
| 257 BookmarkModel* model_two = profile2()->GetBookmarkModel(); |
| 258 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode(); |
| 259 |
| 260 verifier->ExpectMatch(model_one); |
| 261 verifier->ExpectMatch(model_two); |
| 262 |
| 263 { |
| 264 // Let's add first bookmark folder to client1 |
| 265 const BookmarkNode* new_folder_one = |
| 266 verifier->AddGroup(model_one, bbn_one, 0, L"BM TestFolder"); |
| 267 // Add first bookmark to newly created folder |
| 268 const BookmarkNode* test_bm1 = verifier->AddURL( |
| 269 model_one, new_folder_one, 0, |
| 270 L"BM Test", GURL("http://www.bmtest.com")); |
| 271 } |
| 272 |
| 273 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 274 verifier->ExpectMatch(model_one); |
| 275 verifier->ExpectMatch(model_two); |
| 276 Cleanup(); |
| 277 } |
| 278 |
| 279 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest, |
| 280 SC_SingleClient_RenameBMName_371817) { |
| 281 |
| 282 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync"; |
| 283 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create()); |
| 284 BookmarkModel* model_one = profile1()->GetBookmarkModel(); |
| 285 BookmarkModel* model_two = profile2()->GetBookmarkModel(); |
| 286 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode(); |
| 287 |
| 288 verifier->ExpectMatch(model_one); |
| 289 verifier->ExpectMatch(model_two); |
| 290 // Add first bookmark |
| 291 const BookmarkNode* test_bm1 = verifier->AddURL( |
| 292 model_one, bbn_one, 0, L"Test BM", GURL("http://www.bmtest.com")); |
| 293 |
| 294 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 295 verifier->ExpectMatch(model_one); |
| 296 verifier->ExpectMatch(model_two); |
| 297 |
| 298 { |
| 299 // Rename recently added BM |
| 300 verifier->SetTitle(model_one, test_bm1, L"New Test BM"); |
| 301 } |
| 302 |
| 303 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 304 verifier->ExpectMatch(model_one); |
| 305 verifier->ExpectMatch(model_two); |
| 306 Cleanup(); |
| 307 } |
| 308 |
| 309 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest, |
| 310 SC_RenameBMFolder_371824) { |
| 311 |
| 312 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync"; |
| 313 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create()); |
| 314 BookmarkModel* model_one = profile1()->GetBookmarkModel(); |
| 315 BookmarkModel* model_two = profile2()->GetBookmarkModel(); |
| 316 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode(); |
| 317 verifier->ExpectMatch(model_one); |
| 318 verifier->ExpectMatch(model_two); |
| 319 |
| 320 // Let's add first bookmark folder to client1 |
| 321 const BookmarkNode* new_folder_one = verifier->AddGroup(model_one, bbn_one, 0, |
| 322 L"TestBMFolder"); |
| 323 |
| 324 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 325 verifier->ExpectMatch(model_one); |
| 326 verifier->ExpectMatch(model_two); |
| 327 |
| 328 // Rename recently added Bookmark folder |
| 329 verifier->SetTitle(model_one, new_folder_one, L"New TestBMFolder"); |
| 330 |
| 331 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 332 verifier->ExpectMatch(model_one); |
| 333 verifier->ExpectMatch(model_two); |
| 334 Cleanup(); |
| 335 } |
| 336 |
| 337 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest, |
| 338 SC_DeleteBM_EmptyAccountAfterThisDelete_371832) { |
| 339 |
| 340 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync"; |
| 341 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create()); |
| 342 BookmarkModel* model_one = profile1()->GetBookmarkModel(); |
| 343 BookmarkModel* model_two = profile2()->GetBookmarkModel(); |
| 344 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode(); |
| 345 |
| 346 verifier->ExpectMatch(model_one); |
| 347 verifier->ExpectMatch(model_two); |
| 348 |
| 349 // Let's add first bookmark(without favicon) |
| 350 { |
| 351 const BookmarkNode* nofavicon_bm = verifier->AddURL(model_one, bbn_one, 0, |
| 352 L"TestBookmark", GURL("http://www.nofaviconurl.com")); |
| 353 } |
| 354 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 355 verifier->ExpectMatch(model_one); |
| 356 verifier->ExpectMatch(model_two); |
| 357 |
| 358 { |
| 359 // Delete this newly created bookmark |
| 360 verifier->Remove(model_one, bbn_one, 0); |
| 361 } |
| 362 client1()->AwaitMutualSyncCycleCompletionWithConflict(client2()); |
| 363 verifier->ExpectMatch(model_one); |
| 364 verifier->ExpectMatch(model_two); |
| 365 |
| 366 Cleanup(); |
| 367 } |
| 368 |
| 369 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest, |
| 370 SC_DeleteBM_NonEmptyAccountAfterThisDelete_371833) { |
| 371 |
| 372 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync"; |
| 373 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create()); |
| 374 BookmarkModel* model_one = profile1()->GetBookmarkModel(); |
| 375 BookmarkModel* model_two = profile2()->GetBookmarkModel(); |
| 376 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode(); |
| 377 |
| 378 verifier->ExpectMatch(model_one); |
| 379 verifier->ExpectMatch(model_two); |
| 380 // Let's add some bookmarks(without favicon) |
| 381 for (int index = 0; index < 20; index++) { |
| 382 string16 title(L"TestBookmark"); |
| 383 string16 url(L"http://www.nofaviconurl"); |
| 384 string16 index_str = IntToString16(index); |
| 385 title.append(index_str); |
| 386 url.append(index_str); |
| 387 url.append(L".com"); |
| 388 const BookmarkNode* nofavicon_bm = verifier->AddURL( |
| 389 model_one, bbn_one, index, |
| 390 title, GURL(url)); |
| 391 } |
| 392 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 393 verifier->ExpectMatch(model_one); |
| 394 verifier->ExpectMatch(model_two); |
| 395 |
| 396 { |
| 397 // Delete this newly created bookmark |
| 398 verifier->Remove(model_one, bbn_one, 0); |
| 399 } |
| 400 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 401 verifier->ExpectMatch(model_one); |
| 402 verifier->ExpectMatch(model_two); |
| 403 |
| 404 Cleanup(); |
| 405 } |
| 406 |
| 407 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest, |
| 408 SC_RepositioningBM_ab_To_ba_371931) { |
| 409 |
| 410 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync"; |
| 411 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create()); |
| 412 BookmarkModel* model_one = profile1()->GetBookmarkModel(); |
| 413 BookmarkModel* model_two = profile2()->GetBookmarkModel(); |
| 414 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode(); |
| 415 verifier->ExpectMatch(model_one); |
| 416 verifier->ExpectMatch(model_two); |
| 417 |
| 418 const BookmarkNode* bm_a = verifier->AddURL( |
| 419 model_one, bbn_one, 0, L"Bookmark A", |
| 420 GURL("http://www.nofaviconurla.com")); |
| 421 const BookmarkNode* bm_b = verifier->AddURL( |
| 422 model_one, bbn_one, 1, L"Bookmark B", |
| 423 GURL("http://www.nofaviconurlb.com")); |
| 424 |
| 425 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 426 verifier->ExpectMatch(model_one); |
| 427 verifier->ExpectMatch(model_two); |
| 428 |
| 429 { |
| 430 // Move bm_a to new position |
| 431 verifier->Move(model_one, bm_a, bbn_one, 2); |
| 432 } |
| 433 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 434 verifier->ExpectMatch(model_one); |
| 435 verifier->ExpectMatch(model_two); |
| 436 |
| 437 Cleanup(); |
| 438 } |
| 439 |
| 440 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest, |
| 441 SC_Repositioning_NonEmptyBMFolder_ab_To_ba_372026) { |
| 442 |
| 443 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync"; |
| 444 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create()); |
| 445 BookmarkModel* model_one = profile1()->GetBookmarkModel(); |
| 446 BookmarkModel* model_two = profile2()->GetBookmarkModel(); |
| 447 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode(); |
| 448 |
| 449 verifier->ExpectMatch(model_one); |
| 450 verifier->ExpectMatch(model_two); |
| 451 |
| 452 const BookmarkNode* bm_folder_a = |
| 453 verifier->AddGroup(model_one, bbn_one, 0, L"TestBMFolderA"); |
| 454 const BookmarkNode* bm_folder_b = |
| 455 verifier->AddGroup(model_one, bbn_one, 1, L"TestBMFolderB"); |
| 456 for (int index = 0; index < 10; index++) { |
| 457 int random_int = base::RandInt(1, 100); |
| 458 // To create randomness in order, 60% of time add bookmarks |
| 459 if (random_int > 40) { |
| 460 string16 title(L"Folder A - ChildTestBookmark"); |
| 461 string16 url(L"http://www.nofaviconurl"); |
| 462 string16 index_str = IntToString16(index); |
| 463 title.append(index_str); |
| 464 url.append(index_str); |
| 465 url.append(L".com"); |
| 466 const BookmarkNode* nofavicon_bm = |
| 467 verifier->AddURL(model_one, bm_folder_a, index, title, GURL(url)); |
| 468 } else { |
| 469 // Remaining % of time - Add Bookmark folders |
| 470 string16 title(L"Folder A - ChildTestBMFolder"); |
| 471 string16 index_str = IntToString16(index); |
| 472 title.append(index_str); |
| 473 const BookmarkNode* bm_folder = |
| 474 verifier->AddGroup(model_one, bm_folder_a, index, title); |
| 475 } |
| 476 } |
| 477 |
| 478 for (int index = 0; index < 10; index++) { |
| 479 int random_int = base::RandInt(1, 100); |
| 480 // To create randomness in order, 60% of time add bookmarks |
| 481 if (random_int > 40) { |
| 482 string16 title(L"Folder B - ChildTestBookmark"); |
| 483 string16 url(L"http://www.nofaviconurl"); |
| 484 string16 index_str = IntToString16(index); |
| 485 title.append(index_str); |
| 486 url.append(index_str); |
| 487 url.append(L".com"); |
| 488 const BookmarkNode* nofavicon_bm = |
| 489 verifier->AddURL(model_one, bm_folder_b, index, title, GURL(url)); |
| 490 } else { |
| 491 // Remaining % of time - Add Bookmark folders |
| 492 string16 title(L"Folder B - ChildTestBMFolder"); |
| 493 string16 index_str = IntToString16(index); |
| 494 title.append(index_str); |
| 495 const BookmarkNode* bm_folder = |
| 496 verifier->AddGroup(model_one, bm_folder_b, index, title); |
| 497 } |
| 498 } |
| 499 |
| 500 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 501 verifier->ExpectMatch(model_one); |
| 502 verifier->ExpectMatch(model_two); |
| 503 { |
| 504 // Move bm_a to new position |
| 505 verifier->Move(model_one, bm_folder_a, bbn_one, 2); |
| 506 } |
| 507 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 508 verifier->ExpectMatch(model_one); |
| 509 verifier->ExpectMatch(model_two); |
| 510 Cleanup(); |
| 511 } |
| 512 |
| 513 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest, |
| 514 SC_CleanAccount_AddSeveralBMs_UnderBMBarAndOtherBM_370562) { |
| 515 |
| 516 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync"; |
| 517 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create()); |
| 518 BookmarkModel* model_one = profile1()->GetBookmarkModel(); |
| 519 BookmarkModel* model_two = profile2()->GetBookmarkModel(); |
| 520 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode(); |
| 521 const BookmarkNode* other_bm_one = model_one->other_node(); |
| 522 |
| 523 verifier->ExpectMatch(model_one); |
| 524 verifier->ExpectMatch(model_two); |
| 525 // Let's add some bookmarks(without favicon) |
| 526 for (int index = 0; index < 20; index++) { |
| 527 string16 title(L"TestBookmark"); |
| 528 string16 url(L"http://www.nofaviconurl"); |
| 529 string16 index_str = IntToString16(index); |
| 530 title.append(index_str); |
| 531 url.append(index_str); |
| 532 url.append(L".com"); |
| 533 const BookmarkNode* nofavicon_bm = |
| 534 verifier->AddURL(model_one, bbn_one, index, title, GURL(url)); |
| 535 } |
| 536 for (int index = 0; index < 10; index++) { |
| 537 string16 title(L"TestBookmark"); |
| 538 string16 url(L"http://www.nofaviconurl"); |
| 539 string16 index_str = IntToString16(index); |
| 540 title.append(index_str); |
| 541 url.append(index_str); |
| 542 url.append(L".com"); |
| 543 const BookmarkNode* nofavicon_bm = |
| 544 verifier->AddURL(model_one, other_bm_one, index, title, GURL(url)); |
| 545 } |
| 546 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 547 verifier->ExpectMatch(model_one); |
| 548 verifier->ExpectMatch(model_two); |
| 549 Cleanup(); |
| 550 } |
| 551 |
| 552 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest, |
| 553 SC_CleanAccount_AddSeveralBMs_And_SeveralFolders_370563) { |
| 554 |
| 555 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync"; |
| 556 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create()); |
| 557 BookmarkModel* model_one = profile1()->GetBookmarkModel(); |
| 558 BookmarkModel* model_two = profile2()->GetBookmarkModel(); |
| 559 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode(); |
| 560 const BookmarkNode* other_bm_one = model_one->other_node(); |
| 561 |
| 562 verifier->ExpectMatch(model_one); |
| 563 verifier->ExpectMatch(model_two); |
| 564 // Let's add some bookmarks(without favicon) |
| 565 for (int index = 0; index < 15; index++) { |
| 566 int random_int = base::RandInt(1, 100); |
| 567 // To create randomness in order, 40% of time add bookmarks |
| 568 if (random_int > 60) { |
| 569 string16 title(L"BB - TestBookmark"); |
| 570 string16 url(L"http://www.nofaviconurl"); |
| 571 string16 index_str = IntToString16(index); |
| 572 title.append(index_str); |
| 573 url.append(index_str); |
| 574 url.append(L".com"); |
| 575 const BookmarkNode* nofavicon_bm = |
| 576 verifier->AddURL(model_one, bbn_one, index, title, GURL(url)); |
| 577 } else { |
| 578 // Remaining % of time - Add Bookmark folders |
| 579 string16 title(L"BB - TestBMFolder"); |
| 580 string16 index_str = IntToString16(index); |
| 581 title.append(index_str); |
| 582 const BookmarkNode* bm_folder = verifier->AddGroup(model_one, bbn_one, |
| 583 index, title); |
| 584 int random_int2 = base::RandInt(1, 100); |
| 585 // 60% of time we will add bookmarks to added folder |
| 586 if (random_int2 > 40) { |
| 587 for (int index = 0; index < 20; index++) { |
| 588 string16 url(L"http://www.nofaviconurl"); |
| 589 string16 index_str = IntToString16(index); |
| 590 string16 child_title(title); |
| 591 child_title.append(L" - ChildTestBM"); |
| 592 child_title.append(index_str); |
| 593 url.append(index_str); |
| 594 url.append(L".com"); |
| 595 const BookmarkNode* nofavicon_bm = verifier->AddURL(model_one, |
| 596 bm_folder, index, child_title, GURL(url)); |
| 597 } |
| 598 } |
| 599 } |
| 600 } |
| 601 LOG(INFO) << "Adding several bookmarks under other bookmarks"; |
| 602 for (int index = 0; index < 10; index++) { |
| 603 string16 title(L"Other - TestBookmark"); |
| 604 string16 url(L"http://www.nofaviconurl-other"); |
| 605 string16 index_str = IntToString16(index); |
| 606 title.append(index_str); |
| 607 url.append(index_str); |
| 608 url.append(L".com"); |
| 609 const BookmarkNode* nofavicon_bm = |
| 610 verifier->AddURL(model_one, other_bm_one, index, title, GURL(url)); |
| 611 } |
| 612 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 613 verifier->ExpectMatch(model_one); |
| 614 verifier->ExpectMatch(model_two); |
| 615 Cleanup(); |
| 616 } |
| 617 |
| 618 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest, |
| 619 SC_RenameBMURL_371822) { |
| 620 |
| 621 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync"; |
| 622 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create()); |
| 623 BookmarkModel* model_one = profile1()->GetBookmarkModel(); |
| 624 BookmarkModel* model_two = profile2()->GetBookmarkModel(); |
| 625 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode(); |
| 626 |
| 627 verifier->ExpectMatch(model_one); |
| 628 verifier->ExpectMatch(model_two); |
| 629 // Let's add first bookmark(without favicon) |
| 630 const BookmarkNode* nofavicon_bm = |
| 631 verifier->AddURL(model_one, bbn_one, 0, L"Google", |
| 632 GURL("http://www.google.com")); |
| 633 |
| 634 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 635 verifier->ExpectMatch(model_one); |
| 636 verifier->ExpectMatch(model_two); |
| 637 |
| 638 // Let's rename/change URL |
| 639 verifier->SetURL(model_one, nofavicon_bm, GURL("http://www.cnn.com")); |
| 640 // Wait for changes to sync and then verify |
| 641 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 642 verifier->ExpectMatch(model_one); |
| 643 verifier->ExpectMatch(model_two); |
| 644 Cleanup(); |
| 645 } |
| 646 |
| 647 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest, |
| 648 SC_RenameEmptyBMFolder_371825) { |
| 649 |
| 650 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync"; |
| 651 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create()); |
| 652 BookmarkModel* model_one = profile1()->GetBookmarkModel(); |
| 653 BookmarkModel* model_two = profile2()->GetBookmarkModel(); |
| 654 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode(); |
| 655 |
| 656 verifier->ExpectMatch(model_one); |
| 657 verifier->ExpectMatch(model_two); |
| 658 |
| 659 // Let's add first bookmark folder to client1 |
| 660 const BookmarkNode* bm_folder_one = |
| 661 verifier->AddGroup(model_one, bbn_one, 0, L"TestFolder"); |
| 662 |
| 663 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 664 verifier->ExpectMatch(model_one); |
| 665 verifier->ExpectMatch(model_two); |
| 666 |
| 667 // Let's rename newly added bookmark folder |
| 668 verifier->SetTitle(model_one, bm_folder_one, L"New TestFolder"); |
| 669 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 670 verifier->ExpectMatch(model_one); |
| 671 verifier->ExpectMatch(model_two); |
| 672 |
| 673 Cleanup(); |
| 674 } |
| 675 |
| 676 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest, |
| 677 SC_DeleteFirstBM_Under_BMFolder_NonEmptyFolderAfterDelete_371835) { |
| 678 |
| 679 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync"; |
| 680 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create()); |
| 681 BookmarkModel* model_one = profile1()->GetBookmarkModel(); |
| 682 BookmarkModel* model_two = profile2()->GetBookmarkModel(); |
| 683 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode(); |
| 684 |
| 685 verifier->ExpectMatch(model_one); |
| 686 verifier->ExpectMatch(model_two); |
| 687 // Let's add first bookmark folder to client1 |
| 688 const BookmarkNode* bm_folder_one = |
| 689 verifier->AddGroup(model_one, bbn_one, 0, L"TestFolder"); |
| 690 // Let's add some bookmarks(without favicon) to this folder |
| 691 for (int index = 0; index < 10; index++) { |
| 692 string16 title(L"TestBookmark"); |
| 693 string16 url(L"http://www.nofaviconurl"); |
| 694 string16 index_str = IntToString16(index); |
| 695 title.append(index_str); |
| 696 url.append(index_str); |
| 697 url.append(L".com"); |
| 698 const BookmarkNode* nofavicon_bm = |
| 699 verifier->AddURL(model_one, bm_folder_one, index, title, GURL(url)); |
| 700 } |
| 701 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 702 verifier->ExpectMatch(model_one); |
| 703 verifier->ExpectMatch(model_two); |
| 704 |
| 705 { |
| 706 // Delete first bookmark under this folder |
| 707 verifier->Remove(model_one, bm_folder_one, 0); |
| 708 } |
| 709 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 710 verifier->ExpectMatch(model_one); |
| 711 verifier->ExpectMatch(model_two); |
| 712 |
| 713 Cleanup(); |
| 714 } |
| 715 |
| 716 |
| 717 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest, |
| 718 SC_DeleteLastBM_Under_BMFolder_NonEmptyFolderAfterDelete_371836) { |
| 719 |
| 720 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync"; |
| 721 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create()); |
| 722 BookmarkModel* model_one = profile1()->GetBookmarkModel(); |
| 723 BookmarkModel* model_two = profile2()->GetBookmarkModel(); |
| 724 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode(); |
| 725 |
| 726 verifier->ExpectMatch(model_one); |
| 727 verifier->ExpectMatch(model_two); |
| 728 // Let's add first bookmark folder to client1 |
| 729 const BookmarkNode* bm_folder_one = verifier->AddGroup(model_one, bbn_one, |
| 730 0, L"TestFolder"); |
| 731 // Let's add some bookmarks(without favicon) to this folder |
| 732 for (int index = 0; index < 10; index++) { |
| 733 string16 title(L"TestBookmark"); |
| 734 string16 url(L"http://www.nofaviconurl"); |
| 735 string16 index_str = IntToString16(index); |
| 736 title.append(index_str); |
| 737 url.append(index_str); |
| 738 url.append(L".com"); |
| 739 const BookmarkNode* nofavicon_bm = verifier->AddURL( |
| 740 model_one, bm_folder_one, |
| 741 index, title, GURL(url)); |
| 742 } |
| 743 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 744 verifier->ExpectMatch(model_one); |
| 745 verifier->ExpectMatch(model_two); |
| 746 |
| 747 { |
| 748 // Delete last bookmark under this folder |
| 749 verifier->Remove(model_one, bm_folder_one, |
| 750 (bm_folder_one->GetChildCount() - 1)); |
| 751 } |
| 752 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 753 verifier->ExpectMatch(model_one); |
| 754 verifier->ExpectMatch(model_two); |
| 755 |
| 756 Cleanup(); |
| 757 } |
| 758 |
| 759 |
| 760 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest, |
| 761 SC_DelMiddleBM_Under_BMFold_NonEmptyFoldAfterDel_371856) { |
| 762 |
| 763 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync"; |
| 764 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create()); |
| 765 BookmarkModel* model_one = profile1()->GetBookmarkModel(); |
| 766 BookmarkModel* model_two = profile2()->GetBookmarkModel(); |
| 767 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode(); |
| 768 |
| 769 verifier->ExpectMatch(model_one); |
| 770 verifier->ExpectMatch(model_two); |
| 771 // Let's add first bookmark folder to client1 |
| 772 const BookmarkNode* bm_folder_one = |
| 773 verifier->AddGroup(model_one, bbn_one, 0, L"TestFolder"); |
| 774 // Let's add some bookmarks(without favicon) to this folder |
| 775 for (int index = 0; index < 10; index++) { |
| 776 string16 title(L"TestBookmark"); |
| 777 string16 url(L"http://www.nofaviconurl"); |
| 778 string16 index_str = IntToString16(index); |
| 779 title.append(index_str); |
| 780 url.append(index_str); |
| 781 url.append(L".com"); |
| 782 const BookmarkNode* nofavicon_bm = |
| 783 verifier->AddURL(model_one, bm_folder_one, index, title, GURL(url)); |
| 784 } |
| 785 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 786 verifier->ExpectMatch(model_one); |
| 787 verifier->ExpectMatch(model_two); |
| 788 |
| 789 { |
| 790 // Delete middle bookmark under this folder |
| 791 verifier->Remove(model_one, bm_folder_one, 4); |
| 792 } |
| 793 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 794 verifier->ExpectMatch(model_one); |
| 795 verifier->ExpectMatch(model_two); |
| 796 |
| 797 Cleanup(); |
| 798 } |
| 799 |
| 800 |
| 801 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest, |
| 802 SC_DeleteBMs_Under_BMFolder_EmptyFolderAfterDelete_371857) { |
| 803 |
| 804 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync"; |
| 805 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create()); |
| 806 BookmarkModel* model_one = profile1()->GetBookmarkModel(); |
| 807 BookmarkModel* model_two = profile2()->GetBookmarkModel(); |
| 808 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode(); |
| 809 |
| 810 verifier->ExpectMatch(model_one); |
| 811 verifier->ExpectMatch(model_two); |
| 812 // Let's add first bookmark folder to client1 |
| 813 const BookmarkNode* bm_folder_one = |
| 814 verifier->AddGroup(model_one, bbn_one, 0, L"TestFolder"); |
| 815 // Let's add some bookmarks(without favicon) to this folder |
| 816 for (int index = 0; index < 10; index++) { |
| 817 string16 title(L"TestBookmark"); |
| 818 string16 url(L"http://www.nofaviconurl"); |
| 819 string16 index_str = IntToString16(index); |
| 820 title.append(index_str); |
| 821 url.append(index_str); |
| 822 url.append(L".com"); |
| 823 const BookmarkNode* nofavicon_bm = |
| 824 verifier->AddURL(model_one, bm_folder_one, index, title, GURL(url)); |
| 825 } |
| 826 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 827 verifier->ExpectMatch(model_one); |
| 828 verifier->ExpectMatch(model_two); |
| 829 int child_count = bm_folder_one->GetChildCount(); |
| 830 // Let's delete all the bookmarks added under this new folder |
| 831 for (int index = 0; index < child_count; index++) { |
| 832 verifier->Remove(model_one, bm_folder_one, 0); |
| 833 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 834 verifier->ExpectMatch(model_one); |
| 835 verifier->ExpectMatch(model_two); |
| 836 } |
| 837 Cleanup(); |
| 838 } |
| 839 |
| 840 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest, |
| 841 SC_DeleteEmptyBMFolder_EmptyAccountAfterDelete_371858) { |
| 842 |
| 843 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync"; |
| 844 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create()); |
| 845 BookmarkModel* model_one = profile1()->GetBookmarkModel(); |
| 846 BookmarkModel* model_two = profile2()->GetBookmarkModel(); |
| 847 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode(); |
| 848 |
| 849 verifier->ExpectMatch(model_one); |
| 850 verifier->ExpectMatch(model_two); |
| 851 |
| 852 // Let's add first bookmark folder to client1 |
| 853 const BookmarkNode* bm_folder_one = |
| 854 verifier->AddGroup(model_one, bbn_one, 0, L"TestFolder"); |
| 855 |
| 856 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 857 verifier->ExpectMatch(model_one); |
| 858 verifier->ExpectMatch(model_two); |
| 859 |
| 860 // Let's delete this empty bookmark folder |
| 861 verifier->Remove(model_one, bbn_one, 0); |
| 862 |
| 863 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 864 verifier->ExpectMatch(model_one); |
| 865 verifier->ExpectMatch(model_two); |
| 866 |
| 867 Cleanup(); |
| 868 } |
| 869 |
| 870 |
| 871 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest, |
| 872 SC_DeleteEmptyBMFolder_NonEmptyAccountAfterDelete_371869) { |
| 873 |
| 874 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync"; |
| 875 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create()); |
| 876 BookmarkModel* model_one = profile1()->GetBookmarkModel(); |
| 877 BookmarkModel* model_two = profile2()->GetBookmarkModel(); |
| 878 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode(); |
| 879 const BookmarkNode* other_bm_one = model_one->other_node(); |
| 880 |
| 881 verifier->ExpectMatch(model_one); |
| 882 verifier->ExpectMatch(model_two); |
| 883 // Let's add first bookmark folder to client1 |
| 884 const BookmarkNode* bm_folder_one = |
| 885 verifier->AddGroup(model_one, bbn_one, 0, L"TestFolder"); |
| 886 // Let's add some bookmarks(without favicon) |
| 887 for (int index = 1; index < 15; index++) { |
| 888 int random_int = base::RandInt(1, 100); |
| 889 // To create randomness in order, 40% of time add bookmarks |
| 890 if (random_int > 60) { |
| 891 string16 title(L"BB - TestBookmark"); |
| 892 string16 url(L"http://www.nofaviconurl"); |
| 893 string16 index_str = IntToString16(index); |
| 894 title.append(index_str); |
| 895 url.append(index_str); |
| 896 url.append(L".com"); |
| 897 const BookmarkNode* nofavicon_bm = verifier->AddURL(model_one, bbn_one, |
| 898 index, title, GURL(url)); |
| 899 } else { |
| 900 // Remaining % of time - Add Bookmark folders |
| 901 string16 title(L"BB - TestBMFolder"); |
| 902 string16 index_str = IntToString16(index); |
| 903 title.append(index_str); |
| 904 const BookmarkNode* bm_folder = verifier->AddGroup(model_one, bbn_one, |
| 905 index, title); |
| 906 } |
| 907 } |
| 908 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 909 verifier->ExpectMatch(model_one); |
| 910 verifier->ExpectMatch(model_two); |
| 911 |
| 912 // Let's delete the first empty bookmark folder |
| 913 verifier->Remove(model_one, bbn_one, 0); |
| 914 |
| 915 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 916 verifier->ExpectMatch(model_one); |
| 917 verifier->ExpectMatch(model_two); |
| 918 |
| 919 Cleanup(); |
| 920 } |
| 921 |
| 922 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest, |
| 923 SC_DelBMFoldWithBMsAndBMFolds_NonEmptyACAfterDelete_371880) { |
| 924 |
| 925 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync"; |
| 926 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create()); |
| 927 BookmarkModel* model_one = profile1()->GetBookmarkModel(); |
| 928 BookmarkModel* model_two = profile2()->GetBookmarkModel(); |
| 929 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode(); |
| 930 const BookmarkNode* other_bm_one = model_one->other_node(); |
| 931 |
| 932 verifier->ExpectMatch(model_one); |
| 933 verifier->ExpectMatch(model_two); |
| 934 // Let's add bookmark and bookmark folder to client1 |
| 935 const BookmarkNode* yahoo = verifier->AddURL(model_one, bbn_one, 0, |
| 936 L"Yahoo", GURL("http://www.yahoo.com")); |
| 937 const BookmarkNode* bm_folder_one = |
| 938 verifier->AddGroup(model_one, bbn_one, 1, L"TestFolder"); |
| 939 // Let's add some bookmarks(without favicon) and folders to |
| 940 // bookmark bar |
| 941 for (int index = 2; index < 10; index++) { |
| 942 int random_int = base::RandInt(1, 100); |
| 943 // To create randomness in order, 40% of time add bookmarks |
| 944 if (random_int > 60) { |
| 945 string16 title(L"BB - TestBookmark"); |
| 946 string16 url(L"http://www.nofaviconurl"); |
| 947 string16 index_str = IntToString16(index); |
| 948 title.append(index_str); |
| 949 url.append(index_str); |
| 950 url.append(L".com"); |
| 951 const BookmarkNode* nofavicon_bm = verifier->AddURL(model_one, bbn_one, |
| 952 index, title, GURL(url)); |
| 953 } else { |
| 954 // Remaining % of time - Add Bookmark folders |
| 955 string16 title(L"BB - TestBMFolder"); |
| 956 string16 index_str = IntToString16(index); |
| 957 title.append(index_str); |
| 958 const BookmarkNode* bm_folder = verifier->AddGroup(model_one, bbn_one, |
| 959 index, title); |
| 960 } |
| 961 } |
| 962 |
| 963 // Let's add some bookmarks(without favicon) and folders to |
| 964 // bm_folder_one ('TestFolder') |
| 965 for (int index = 0; index < 10; index++) { |
| 966 int random_int = base::RandInt(1, 100); |
| 967 // To create randomness in order, 40% of time add bookmarks |
| 968 if (random_int > 60) { |
| 969 string16 title(L"Level2 - TestBookmark"); |
| 970 string16 url(L"http://www.nofaviconurl"); |
| 971 string16 index_str = IntToString16(index); |
| 972 title.append(index_str); |
| 973 url.append(index_str); |
| 974 url.append(L".com"); |
| 975 const BookmarkNode* nofavicon_bm = verifier->AddURL(model_one, |
| 976 bm_folder_one, index, title, GURL(url)); |
| 977 } else { |
| 978 // Remaining % of time - Add Bookmark folders |
| 979 string16 title(L"Level2 - TestBMFolder"); |
| 980 string16 index_str = IntToString16(index); |
| 981 title.append(index_str); |
| 982 const BookmarkNode* l2_bm_folder = verifier->AddGroup(model_one, |
| 983 bm_folder_one, index, title); |
| 984 int random_int2 = base::RandInt(1, 100); |
| 985 // 70% of time - Let's add more levels of bookmarks and folders to |
| 986 // l2_bm_folder |
| 987 if (random_int2 > 30) { |
| 988 for (int index2 = 0; index2 < 10; index2++) { |
| 989 int random_int3 = base::RandInt(1, 100); |
| 990 // To create randomness in order, 40% of time add bookmarks |
| 991 if (random_int3 > 60) { |
| 992 string16 title(L"Level3 - TestBookmark"); |
| 993 string16 url(L"http://www.nofaviconurl"); |
| 994 string16 index_str = IntToString16(index2); |
| 995 title.append(index_str); |
| 996 url.append(index_str); |
| 997 url.append(L".com"); |
| 998 const BookmarkNode* nofavicon_bm = verifier->AddURL(model_one, |
| 999 l2_bm_folder, index2, title, GURL(url)); |
| 1000 } else { |
| 1001 // Remaining % of time - Add Bookmark folders |
| 1002 string16 title(L"Level3 - TestBMFolder"); |
| 1003 string16 index_str = IntToString16(index); |
| 1004 title.append(index_str); |
| 1005 const BookmarkNode* l3_bm_folder = |
| 1006 verifier->AddGroup(model_one, l2_bm_folder, index2, title); |
| 1007 } |
| 1008 } // end inner for loop |
| 1009 } |
| 1010 } |
| 1011 } |
| 1012 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 1013 verifier->ExpectMatch(model_one); |
| 1014 verifier->ExpectMatch(model_two); |
| 1015 |
| 1016 // Let's delete the bookmark folder (bm_folder_one) |
| 1017 verifier->Remove(model_one, bm_folder_one, 0); |
| 1018 |
| 1019 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 1020 verifier->ExpectMatch(model_one); |
| 1021 verifier->ExpectMatch(model_two); |
| 1022 |
| 1023 Cleanup(); |
| 1024 } |
| 1025 |
| 1026 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest, |
| 1027 SC_Moving_BMsFromBookmarkBar_To_BMFolder_371954) { |
| 1028 |
| 1029 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync"; |
| 1030 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create()); |
| 1031 BookmarkModel* model_one = profile1()->GetBookmarkModel(); |
| 1032 BookmarkModel* model_two = profile2()->GetBookmarkModel(); |
| 1033 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode(); |
| 1034 const BookmarkNode* other_bm_one = model_one->other_node(); |
| 1035 |
| 1036 verifier->ExpectMatch(model_one); |
| 1037 verifier->ExpectMatch(model_two); |
| 1038 // Let's add bookmark and bookmark folder to client1 |
| 1039 const BookmarkNode* yahoo = verifier->AddURL(model_one, bbn_one, 0, |
| 1040 L"Yahoo", GURL("http://www.yahoo.com")); |
| 1041 const BookmarkNode* bm_folder_one = |
| 1042 verifier->AddGroup(model_one, bbn_one, 1, L"TestFolder"); |
| 1043 // Let's add some bookmarks(without favicon) to bookmark bar |
| 1044 for (int index = 2; index < 10; index++) { |
| 1045 int random_int = base::RandInt(1, 100); |
| 1046 string16 title(L"BB - TestBookmark"); |
| 1047 string16 url(L"http://www.nofaviconurl"); |
| 1048 string16 index_str = IntToString16(index); |
| 1049 title.append(index_str); |
| 1050 url.append(index_str); |
| 1051 url.append(L".com"); |
| 1052 const BookmarkNode* nofavicon_bm = verifier->AddURL(model_one, bbn_one, |
| 1053 index, title, GURL(url)); |
| 1054 } |
| 1055 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 1056 verifier->ExpectMatch(model_one); |
| 1057 verifier->ExpectMatch(model_two); |
| 1058 |
| 1059 // Let's move bookmarks from bookmark bar to BMfolder (bm_folder_one) |
| 1060 int child_count_to_move = bbn_one->GetChildCount() - 2; |
| 1061 for (int index = 0; index < child_count_to_move; index++) { |
| 1062 verifier->Move(model_one, bbn_one->GetChild(2), |
| 1063 bm_folder_one, index); |
| 1064 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 1065 verifier->ExpectMatch(model_one); |
| 1066 verifier->ExpectMatch(model_two); |
| 1067 } |
| 1068 Cleanup(); |
| 1069 } |
| 1070 |
| 1071 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest, |
| 1072 SC_Moving_BMsFromBMFolder_To_BookmarkBar_371957) { |
| 1073 |
| 1074 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync"; |
| 1075 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create()); |
| 1076 BookmarkModel* model_one = profile1()->GetBookmarkModel(); |
| 1077 BookmarkModel* model_two = profile2()->GetBookmarkModel(); |
| 1078 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode(); |
| 1079 const BookmarkNode* other_bm_one = model_one->other_node(); |
| 1080 |
| 1081 verifier->ExpectMatch(model_one); |
| 1082 verifier->ExpectMatch(model_two); |
| 1083 // Let's add bookmark and bookmark folder to client1 |
| 1084 const BookmarkNode* yahoo = verifier->AddURL(model_one, bbn_one, 0, |
| 1085 L"Yahoo", GURL("http://www.yahoo.com")); |
| 1086 const BookmarkNode* bm_folder_one = |
| 1087 verifier->AddGroup(model_one, bbn_one, 1, L"TestFolder"); |
| 1088 // Let's add some bookmarks(without favicon) to bm_folder_one |
| 1089 for (int index = 0; index < 10; index++) { |
| 1090 int random_int = base::RandInt(1, 100); |
| 1091 string16 title(L"BB - TestBookmark"); |
| 1092 string16 url(L"http://www.nofaviconurl"); |
| 1093 string16 index_str = IntToString16(index); |
| 1094 title.append(index_str); |
| 1095 url.append(index_str); |
| 1096 url.append(L".com"); |
| 1097 const BookmarkNode* nofavicon_bm = verifier->AddURL(model_one, |
| 1098 bm_folder_one, index, title, GURL(url)); |
| 1099 } |
| 1100 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 1101 verifier->ExpectMatch(model_one); |
| 1102 verifier->ExpectMatch(model_two); |
| 1103 |
| 1104 // Let's move bookmarks from BMfolder(bm_folder_one) to bookmark bar |
| 1105 int child_count_to_move = bm_folder_one->GetChildCount(); |
| 1106 for (int index = 0; index < child_count_to_move; index++) { |
| 1107 verifier->Move(model_one, bm_folder_one->GetChild(0), |
| 1108 bbn_one, bbn_one->GetChildCount()); |
| 1109 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2())); |
| 1110 verifier->ExpectMatch(model_one); |
| 1111 verifier->ExpectMatch(model_two); |
| 1112 } |
| 1113 Cleanup(); |
| 1114 } |
| 1115 |
| 1116 #endif // CHROME_PERSONALIZATION |
| OLD | NEW |