15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/rand_util.h" 61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/run_loop.h" 71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/values.h" 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/policy/profile_policy_connector_factory.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/profile.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/sync/test/integration/bookmarks_helper.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/sync/test/integration/passwords_helper.h" 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "chrome/browser/sync/test/integration/profile_sync_service_harness.h" 13effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "chrome/browser/sync/test/integration/sync_integration_test_util.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/sync/test/integration/sync_test.h" 151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "components/policy/core/common/mock_configuration_policy_provider.h" 161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "components/policy/core/common/policy_map.h" 171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "policy/policy_constants.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sync/internal_api/public/sessions/sync_session_snapshot.h" 191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "testing/gmock/include/gmock/gmock.h" 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/base/layout.h" 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using bookmarks_helper::AddFolder; 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using bookmarks_helper::AddURL; 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using bookmarks_helper::AllModelsMatch; 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using bookmarks_helper::AllModelsMatchVerifier; 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using bookmarks_helper::ContainsDuplicateBookmarks; 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using bookmarks_helper::CountBookmarksWithTitlesMatching; 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using bookmarks_helper::CreateFavicon; 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using bookmarks_helper::GetBookmarkBarNode; 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciusing bookmarks_helper::GetManagedNode; 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using bookmarks_helper::GetOtherNode; 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using bookmarks_helper::GetSyncedBookmarksNode; 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using bookmarks_helper::GetUniqueNodeByURL; 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using bookmarks_helper::HasNodeWithURL; 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using bookmarks_helper::IndexedFolderName; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using bookmarks_helper::IndexedSubfolderName; 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using bookmarks_helper::IndexedSubsubfolderName; 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using bookmarks_helper::IndexedURL; 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using bookmarks_helper::IndexedURLTitle; 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using bookmarks_helper::Move; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using bookmarks_helper::Remove; 42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)using bookmarks_helper::RemoveAll; 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using bookmarks_helper::ReverseChildOrder; 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using bookmarks_helper::SetFavicon; 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using bookmarks_helper::SetTitle; 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using bookmarks_helper::SetURL; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using bookmarks_helper::SortChildren; 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using passwords_helper::SetDecryptionPassphrase; 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using passwords_helper::SetEncryptionPassphrase; 50effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochusing sync_integration_test_util::AwaitCommitActivityCompletion; 51effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochusing sync_integration_test_util::AwaitPassphraseAccepted; 52effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochusing sync_integration_test_util::AwaitPassphraseRequired; 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace { 551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciconst char kGenericURL[] = "http://www.host.ext:1234/path/filename"; 571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciconst char kGenericURLTitle[] = "URL Title"; 581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciconst char kGenericFolderName[] = "Folder Name"; 591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciconst char kGenericSubfolderName[] = "Subfolder Name"; 601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciconst char kValidPassphrase[] = "passphrase!"; 611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} // namespace 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TwoClientBookmarksSyncTest : public SyncTest { 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TwoClientBookmarksSyncTest() : SyncTest(TWO_CLIENT) {} 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~TwoClientBookmarksSyncTest() {} 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void TearDownInProcessBrowserTestFixture() OVERRIDE { 701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SyncTest::TearDownInProcessBrowserTestFixture(); 711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci policy_provider_.Shutdown(); 721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci protected: 751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Needs to be deleted after all Profiles are deleted. 761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci policy::MockConfigurationPolicyProvider policy_provider_; 771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(TwoClientBookmarksSyncTest); 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass LegacyTwoClientBookmarksSyncTest : public SyncTest { 83c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch public: 84c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch LegacyTwoClientBookmarksSyncTest() : SyncTest(TWO_CLIENT_LEGACY) {} 85c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual ~LegacyTwoClientBookmarksSyncTest() {} 86c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 87c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch private: 88c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch DISALLOW_COPY_AND_ASSIGN(LegacyTwoClientBookmarksSyncTest); 89c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch}; 90c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, Sanity) { 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL google_url("http://www.google.com"); 96f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ASSERT_TRUE(AddURL(0, "Google", google_url) != NULL); 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 98f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ASSERT_TRUE(AddURL(1, "Yahoo", GURL("http://www.yahoo.com")) != NULL); 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(1)->AwaitMutualSyncCycleCompletion(GetClient(0))); 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 102f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) const BookmarkNode* new_folder = AddFolder(0, 2, "New Folder"); 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Move(0, GetUniqueNodeByURL(0, google_url), new_folder, 0); 104f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) SetTitle(0, GetBookmarkBarNode(0)->GetChild(0), "Yahoo!!"); 105f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ASSERT_TRUE(AddURL(0, GetBookmarkBarNode(0), 1, "CNN", 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL("http://www.cnn.com")) != NULL); 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 110f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ASSERT_TRUE(AddURL(1, "Facebook", GURL("http://www.facebook.com")) != NULL); 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(1)->AwaitMutualSyncCycleCompletion(GetClient(0))); 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SortChildren(1, GetBookmarkBarNode(1)); 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(1)->AwaitMutualSyncCycleCompletion(GetClient(0))); 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DisableVerifier(); 119f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) SetTitle(0, GetUniqueNodeByURL(0, google_url), "Google++"); 120f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) SetTitle(1, GetUniqueNodeByURL(1, google_url), "Google--"); 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatch()); 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SimultaneousURLChanges) { 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL initial_url("http://www.google.com"); 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL second_url("http://www.google.com/abc"); 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL third_url("http://www.google.com/def"); 132f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = "Google"; 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, title, initial_url) != NULL); 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DisableVerifier(); 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetURL( 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 0, GetUniqueNodeByURL(0, initial_url), second_url) != NULL); 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetURL( 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1, GetUniqueNodeByURL(1, initial_url), third_url) != NULL); 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatch()); 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) SetTitle(0, GetBookmarkBarNode(0)->GetChild(0), "Google1"); 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatch()); 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 370558. 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_AddFirstFolder) { 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddFolder(0, kGenericFolderName) != NULL); 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 370559. 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SC_AddFirstBMWithoutFavicon) { 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, kGenericURLTitle, GURL(kGenericURL)) != NULL); 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 370489. 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_AddFirstBMWithFavicon) { 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const GURL page_url(kGenericURL); 1772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const GURL icon_url("http://www.google.com/favicon.ico"); 1782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const BookmarkNode* bookmark = AddURL(0, kGenericURLTitle, page_url); 1802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(bookmark != NULL); 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 1832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SetFavicon(0, bookmark, icon_url, CreateFavicon(SK_ColorWHITE), 1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bookmarks_helper::FROM_UI); 1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 1872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Test that the history service logic for not losing the hidpi versions of 1902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// favicons as a result of sync does not result in dropping sync updates. 1912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// In particular, the synced 16x16 favicon bitmap should overwrite 16x16 1922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// favicon bitmaps on all clients. (Though non-16x16 favicon bitmaps 1932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// are unchanged). 1942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_SetFaviconHiDPI) { 1952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Set the supported scale factors to include 2x such that CreateFavicon() 1962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // creates a favicon with hidpi representations and that methods in the 1972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // FaviconService request hidpi favicons. 1982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::vector<ui::ScaleFactor> supported_scale_factors; 1992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) supported_scale_factors.push_back(ui::SCALE_FACTOR_100P); 2002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) supported_scale_factors.push_back(ui::SCALE_FACTOR_200P); 20168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) ui::SetSupportedScaleFactors(supported_scale_factors); 2022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const GURL page_url(kGenericURL); 2042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const GURL icon_url1("http://www.google.com/favicon1.ico"); 2052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const GURL icon_url2("http://www.google.com/favicon2.ico"); 2062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 2082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 2092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const BookmarkNode* bookmark0 = AddURL(0, kGenericURLTitle, page_url); 2112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(bookmark0 != NULL); 2122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 2132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SetFavicon(0, bookmark0, icon_url1, CreateFavicon(SK_ColorWHITE), 2142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bookmarks_helper::FROM_UI); 2152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 2162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 2172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const BookmarkNode* bookmark1 = GetUniqueNodeByURL(1, page_url); 2192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SetFavicon(1, bookmark1, icon_url1, CreateFavicon(SK_ColorBLUE), 2202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bookmarks_helper::FROM_UI); 2212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(GetClient(1)->AwaitMutualSyncCycleCompletion(GetClient(0))); 2222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 2232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SetFavicon(0, bookmark0, icon_url2, CreateFavicon(SK_ColorGREEN), 2252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bookmarks_helper::FROM_UI); 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 370560. 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_AddNonHTTPBMs) { 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL( 236f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 0, "FTP UR", GURL("ftp://user:password@host:1234/path")) != NULL); 237f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ASSERT_TRUE(AddURL(0, "File UR", GURL("file://host/path")) != NULL); 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 370561. 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SC_AddFirstBMUnderFolder) { 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder = AddFolder(0, kGenericFolderName); 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folder != NULL); 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL( 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 0, folder, 0, kGenericURLTitle, GURL(kGenericURL)) != NULL); 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 370562. 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SC_AddSeveralBMsUnderBMBarAndOtherBM) { 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 20; ++i) { 263f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i); 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, i, title, url) != NULL); 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL( 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 0, GetOtherNode(0), i, title, url) != NULL); 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 370563. 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SC_AddSeveralBMsAndFolders) { 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 15; ++i) { 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (base::RandDouble() > 0.6) { 281f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i); 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, i, title, url) != NULL); 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 285f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedFolderName(i); 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder = AddFolder(0, i, title); 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folder != NULL); 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (base::RandDouble() > 0.4) { 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 20; ++i) { 290f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i); 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddURL(0, folder, i, title, url) != NULL); 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 10; i++) { 299f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i); 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, GetOtherNode(0), i, title, url) != NULL); 3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 370641. 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SC_DuplicateBMWithDifferentURLSameName) { 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url0 = GURL(IndexedURL(0)); 3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url1 = GURL(IndexedURL(1)); 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, kGenericURLTitle, url0) != NULL); 3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, kGenericURLTitle, url1) != NULL); 3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 370639 - Add bookmarks with different name and same URL. 3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SC_DuplicateBookmarksWithSameURL) { 3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 327f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title0 = IndexedURLTitle(0); 328f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title1 = IndexedURLTitle(1); 3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, title0, GURL(kGenericURL)) != NULL); 3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, title1, GURL(kGenericURL)) != NULL); 3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 371817. 3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_RenameBMName) { 3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 340f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(1); 3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* bookmark = AddURL(0, title, GURL(kGenericURL)); 3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(bookmark != NULL); 3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 346f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string new_title = IndexedURLTitle(2); 3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetTitle(0, bookmark, new_title); 3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 371822. 3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_RenameBMURL) { 3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(1)); 3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* bookmark = AddURL(0, kGenericURLTitle, url); 3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(bookmark != NULL); 3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL new_url = GURL(IndexedURL(2)); 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetURL(0, bookmark, new_url) != NULL); 3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 371818 - Renaming the same bookmark name twice. 3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SC_TwiceRenamingBookmarkName) { 3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 376f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(1); 3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* bookmark = AddURL(0, title, GURL(kGenericURL)); 3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(bookmark != NULL); 3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 382f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string new_title = IndexedURLTitle(2); 3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetTitle(0, bookmark, new_title); 3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetTitle(0, bookmark, title); 3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 371823 - Renaming the same bookmark URL twice. 3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SC_TwiceRenamingBookmarkURL) { 3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(1)); 3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* bookmark = AddURL(0, kGenericURLTitle, url); 4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(bookmark != NULL); 4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL new_url = GURL(IndexedURL(2)); 4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetURL(0, bookmark, new_url) != NULL); 4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetURL(0, bookmark, url) != NULL); 4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 371824. 4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_RenameBMFolder) { 4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 4175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 419f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedFolderName(1); 4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder = AddFolder(0, title); 4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL( 4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 0, folder, 0, kGenericURLTitle, GURL(kGenericURL)) != NULL); 4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 426f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string new_title = IndexedFolderName(2); 4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetTitle(0, folder, new_title); 4285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 371825. 4335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_RenameEmptyBMFolder) { 4345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 4355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 4365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 437f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedFolderName(1); 4385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder = AddFolder(0, title); 4395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 4405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 4415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 442f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string new_title = IndexedFolderName(2); 4435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetTitle(0, folder, new_title); 4445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 4455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 4465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 371826. 4495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 4505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SC_RenameBMFolderWithLongHierarchy) { 4515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 4525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 4535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 454f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedFolderName(1); 4555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder = AddFolder(0, title); 4565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folder != NULL); 4575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 120; ++i) { 4585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (base::RandDouble() > 0.15) { 459f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i); 4605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 4615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, folder, i, title, url) != NULL); 4625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 463f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedSubfolderName(i); 4645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddFolder(0, folder, i, title) != NULL); 4655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 4685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 4695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 470f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string new_title = IndexedFolderName(2); 4715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetTitle(0, folder, new_title); 4725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 4735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 4745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 371827. 4775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 4785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SC_RenameBMFolderThatHasParentAndChildren) { 4795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 4805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 4815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder = AddFolder(0, kGenericFolderName); 4835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folder != NULL); 4845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 1; i < 15; ++i) { 485f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i); 4865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 4875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, i, title, url) != NULL); 4885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 489f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedSubfolderName(1); 4905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* subfolder = AddFolder(0, folder, 0, title); 4915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 120; ++i) { 4925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (base::RandDouble() > 0.15) { 493f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i); 4945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 4955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, subfolder, i, title, url) != NULL); 4965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 497f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedSubsubfolderName(i); 4985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddFolder(0, subfolder, i, title) != NULL); 4995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 5025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 5035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 504f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string new_title = IndexedSubfolderName(2); 5055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetTitle(0, subfolder, new_title); 5065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 5075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 5085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 371828. 5115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_RenameBMNameAndURL) { 5125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 5135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 5145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(1)); 516f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(1); 5175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* bookmark = AddURL(0, title, url); 5185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(bookmark != NULL); 5195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 5205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 5215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL new_url = GURL(IndexedURL(2)); 523f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string new_title = IndexedURLTitle(2); 5245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bookmark = SetURL(0, bookmark, new_url); 5255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(bookmark != NULL); 5265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetTitle(0, bookmark, new_title); 5275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 5285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 5295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 371832. 5325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 5335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SC_DeleteBMEmptyAccountAfterwards) { 5345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 5355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 5365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL( 5385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 0, kGenericURLTitle, GURL(kGenericURL)) != NULL); 5395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 5405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 5415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Remove(0, GetBookmarkBarNode(0), 0); 5435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 5445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 5455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 371833. 5485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 5495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SC_DelBMNonEmptyAccountAfterwards) { 5505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 5515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 5525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 20; ++i) { 554f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i); 5555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 5565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, i, title, url) != NULL); 5575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 5595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 5605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Remove(0, GetBookmarkBarNode(0), 0); 5625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 5635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 5645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 371835. 5675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 5685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SC_DelFirstBMUnderBMFoldNonEmptyFoldAfterwards) { 5695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 5705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 5715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder = AddFolder(0, kGenericFolderName); 5735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folder != NULL); 5745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 10; ++i) { 575f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i); 5765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 5775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, folder, i, title, url) != NULL); 5785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 5805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 5815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Remove(0, folder, 0); 5835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 5845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 5855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 371836. 5885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 5895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SC_DelLastBMUnderBMFoldNonEmptyFoldAfterwards) { 5905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 5915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 5925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder = AddFolder(0, kGenericFolderName); 5945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folder != NULL); 5955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 10; ++i) { 596f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i); 5975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 5985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, folder, i, title, url) != NULL); 5995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 6015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 6025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Remove(0, folder, folder->child_count() - 1); 6045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 6055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 6065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 371856. 6095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 6105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SC_DelMiddleBMUnderBMFoldNonEmptyFoldAfterwards) { 6115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 6125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 6135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder = AddFolder(0, kGenericFolderName); 6155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folder != NULL); 6165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 10; ++i) { 617f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i); 6185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 6195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, folder, i, title, url) != NULL); 6205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 6225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 6235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Remove(0, folder, 4); 6255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 6265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 6275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 371857. 6305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 6315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SC_DelBMsUnderBMFoldEmptyFolderAfterwards) { 6325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 6335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 6345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder = AddFolder(0, kGenericFolderName); 6365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folder != NULL); 6375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 10; ++i) { 638f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i); 6395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 6405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, folder, i, title, url) != NULL); 6415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 6435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 6445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int child_count = folder->child_count(); 6465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < child_count; ++i) { 6475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Remove(0, folder, 0); 6485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 6505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 6515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 371858. 6545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 6555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SC_DelEmptyBMFoldEmptyAccountAfterwards) { 6565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 6575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 6585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddFolder(0, kGenericFolderName) != NULL); 6605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 6615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 6625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Remove(0, GetBookmarkBarNode(0), 0); 6645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 6655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 6665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 371869. 6695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 6705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SC_DelEmptyBMFoldNonEmptyAccountAfterwards) { 6715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 6725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 6735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddFolder(0, kGenericFolderName) != NULL); 6755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 1; i < 15; ++i) { 6765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (base::RandDouble() > 0.6) { 677f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i); 6785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 6795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, i, title, url) != NULL); 6805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 681f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedFolderName(i); 6825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddFolder(0, i, title) != NULL); 6835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 6865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 6875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Remove(0, GetBookmarkBarNode(0), 0); 6895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 6905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 6915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 371879. 6945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 6955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SC_DelBMFoldWithBMsNonEmptyAccountAfterwards) { 6965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 6975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 6985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, kGenericURLTitle, GURL(kGenericURL)) != NULL); 7005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder = AddFolder(0, 1, kGenericFolderName); 7015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folder != NULL); 7025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 2; i < 10; ++i) { 7035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (base::RandDouble() > 0.6) { 704f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i); 7055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 7065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, i, title, url) != NULL); 7075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 708f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedFolderName(i); 7095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddFolder(0, i, title) != NULL); 7105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 7115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 7125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 15; ++i) { 713f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i); 7145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 7155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, folder, i, title, url) != NULL); 7165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 7175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 7185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 7195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Remove(0, GetBookmarkBarNode(0), 1); 7215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 7225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 7235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 371880. 7265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 7275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SC_DelBMFoldWithBMsAndBMFoldsNonEmptyACAfterwards) { 7285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 7295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 7305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, kGenericURLTitle, GURL(kGenericURL)) != NULL); 7325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder = AddFolder(0, 1, kGenericFolderName); 7335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folder != NULL); 7345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 2; i < 10; ++i) { 7355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (base::RandDouble() > 0.6) { 736f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i); 7375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 7385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, i, title, url) != NULL); 7395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 740f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedFolderName(i); 7415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddFolder(0, i, title) != NULL); 7425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 7435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 7445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 10; ++i) { 7455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (base::RandDouble() > 0.6) { 746f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i); 7475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 7485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, folder, i, title, url) != NULL); 7495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 750f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedSubfolderName(i); 7515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* subfolder = 7525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddFolder(0, folder, i, title); 7535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(subfolder != NULL); 7545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (base::RandDouble() > 0.3) { 7555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int j = 0; j < 10; ++j) { 7565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (base::RandDouble() > 0.6) { 757f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(j); 7585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(j)); 7595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL( 7605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 0, subfolder, j, title, url) != NULL); 7615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 762f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedSubsubfolderName(j); 7635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddFolder( 7645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 0, subfolder, j, title) != NULL); 7655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 7665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 7675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 7685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 7695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 7705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 7715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 7725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Remove(0, GetBookmarkBarNode(0), 1); 7745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 7755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 7765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 371882. 7795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 7805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SC_DelBMFoldWithParentAndChildrenBMsAndBMFolds) { 7815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 7825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 7835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder = AddFolder(0, kGenericFolderName); 7855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folder != NULL); 7865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 1; i < 11; ++i) { 787f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i); 7885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 7895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, i, title, url) != NULL); 7905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 7915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* subfolder = 7925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddFolder(0, folder, 0, kGenericSubfolderName); 7935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(subfolder != NULL); 7945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 30; ++i) { 7955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (base::RandDouble() > 0.2) { 796f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i); 7975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 7985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, subfolder, i, title, url) != NULL); 7995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 800f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedSubsubfolderName(i); 8015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddFolder(0, subfolder, i, title) != NULL); 8025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 8035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 8045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 8055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 8065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Remove(0, folder, 0); 8085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 8095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 8105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 371931. 8135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 8145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SC_ReverseTheOrderOfTwoBMs) { 8155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 8165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 8175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url0 = GURL(IndexedURL(0)); 8195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url1 = GURL(IndexedURL(1)); 820f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title0 = IndexedURLTitle(0); 821f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title1 = IndexedURLTitle(1); 8225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* bookmark0 = AddURL(0, 0, title0, url0); 8235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* bookmark1 = AddURL(0, 1, title1, url1); 8245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(bookmark0 != NULL); 8255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(bookmark1 != NULL); 8265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 8275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 8285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Move(0, bookmark0, GetBookmarkBarNode(0), 2); 8305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 8315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 8325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 371933. 8355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_ReverseTheOrderOf10BMs) { 8365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 8375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 8385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 10; ++i) { 840f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i); 8415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 8425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, i, title, url) != NULL); 8435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 8445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 8455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 8465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ReverseChildOrder(0, GetBookmarkBarNode(0)); 8485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 8495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 8505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 371954. 8531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// flaky on Windows: http://crbug.com/412169 8541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(OS_WIN) 8551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define MAYBE_SC_MovingBMsFromBMBarToBMFolder DISABLED_SC_MovingBMsFromBMBarToBMFolder 8561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#else 8571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define MAYBE_SC_MovingBMsFromBMBarToBMFolder SC_MovingBMsFromBMBarToBMFolder 8581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif 8595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 8601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci MAYBE_SC_MovingBMsFromBMBarToBMFolder) { 8615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 8625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 8635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, kGenericURLTitle, GURL(kGenericURL)) != NULL); 8655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder = AddFolder(0, 1, kGenericFolderName); 8665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folder != NULL); 8675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 2; i < 10; ++i) { 868f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i); 8695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 8705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, i, title, url) != NULL); 8715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 8725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 8735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 8745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int num_bookmarks_to_move = 8765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetBookmarkBarNode(0)->child_count() - 2; 8775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < num_bookmarks_to_move; ++i) { 8785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Move( 8795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 0, GetBookmarkBarNode(0)->GetChild(2), folder, i); 8805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 8815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 8825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 8835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 371957. 8861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// flaky on Windows: http://crbug.com/412169 8871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(OS_WIN) 8881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define MAYBE_SC_MovingBMsFromBMFoldToBMBar DISABLED_SC_MovingBMsFromBMFoldToBMBar 8891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#else 8901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define MAYBE_SC_MovingBMsFromBMFoldToBMBar SC_MovingBMsFromBMFoldToBMBar 8911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif 8925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 8931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci MAYBE_SC_MovingBMsFromBMFoldToBMBar) { 8945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 8955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 8965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, kGenericURLTitle, GURL(kGenericURL)) != NULL); 8985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder = AddFolder(0, 1, kGenericFolderName); 8995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folder != NULL); 9005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 10; ++i) { 901f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i); 9025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 9035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, folder, i, title, url) != NULL); 9045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 9055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 9065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 9075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int num_bookmarks_to_move = folder->child_count() - 2; 9095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < num_bookmarks_to_move; ++i) { 9105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Move(0, folder->GetChild(0), GetBookmarkBarNode(0), i); 9115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 9125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 9135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 9145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 371961. 9175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 9185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SC_MovingBMsFromParentBMFoldToChildBMFold) { 9195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 9205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 9215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder = AddFolder(0, kGenericFolderName); 9235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folder != NULL); 9245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 3; ++i) { 925f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i); 9265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 9275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, folder, i, title, url) != NULL); 9285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 9295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* subfolder = 9305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddFolder(0, folder, 3, kGenericSubfolderName); 9315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(subfolder != NULL); 9325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 10; ++i) { 933f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i + 3); 9345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i + 3)); 9355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, subfolder, i, title, url) != NULL); 9365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 9375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 9385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 9395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 3; ++i) { 9415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 9425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Move(0, GetUniqueNodeByURL(0, url), subfolder, i + 10); 9435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 9445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 9455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 9465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 371964. 9495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 9505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SC_MovingBMsFromChildBMFoldToParentBMFold) { 9515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 9525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 9535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder = AddFolder(0, kGenericFolderName); 9555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folder != NULL); 9565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 3; ++i) { 957f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i); 9585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 9595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, folder, i, title, url) != NULL); 9605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 9615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* subfolder = 9625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddFolder(0, folder, 3, kGenericSubfolderName); 9635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(subfolder != NULL); 9645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 5; ++i) { 965f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i + 3); 9665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i + 3)); 9675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, subfolder, i, title, url) != NULL); 9685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 9695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 9705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 9715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 3; ++i) { 9735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i + 3)); 9745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Move(0, GetUniqueNodeByURL(0, url), folder, i + 4); 9755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 9765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 9775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 9785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 371967. 9815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_HoistBMs10LevelUp) { 9825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 9835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 9845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder = GetBookmarkBarNode(0); 9865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder_L0 = NULL; 9875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder_L10 = NULL; 9885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int level = 0; level < 15; ++level) { 9895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int num_bookmarks = base::RandInt(0, 9); 9905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < num_bookmarks; ++i) { 991f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i); 9925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 9935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, folder, i, title, url) != NULL); 9945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 995f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedFolderName(level); 9965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) folder = AddFolder(0, folder, folder->child_count(), title); 9975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folder != NULL); 9985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (level == 0) folder_L0 = folder; 9995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (level == 10) folder_L10 = folder; 10005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 10015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 3; ++i) { 1002f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i + 10); 10035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i + 10)); 10045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, folder_L10, i, title, url) != NULL); 10055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 10065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 10075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 10085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url10 = GURL(IndexedURL(10)); 10105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Move(0, GetUniqueNodeByURL( 10115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 0, url10), folder_L0, folder_L0->child_count()); 10125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url11 = GURL(IndexedURL(11)); 10135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Move(0, GetUniqueNodeByURL(0, url11), folder_L0, 0); 10145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url12 = GURL(IndexedURL(12)); 10155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Move(0, GetUniqueNodeByURL(0, url12), folder_L0, 1); 10165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 10175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 10185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 10195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 371968. 10215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Flaky. http://crbug.com/107744. 1022c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_SinkBMs10LevelDown) { 10235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 10245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 10255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder = GetBookmarkBarNode(0); 10275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder_L0 = NULL; 10285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder_L10 = NULL; 10295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int level = 0; level < 15; ++level) { 10305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int num_bookmarks = base::RandInt(0, 9); 10315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < num_bookmarks; ++i) { 1032f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i); 10335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 10345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, folder, i, title, url) != NULL); 10355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1036f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedFolderName(level); 10375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) folder = AddFolder(0, folder, folder->child_count(), title); 10385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folder != NULL); 10395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (level == 0) folder_L0 = folder; 10405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (level == 10) folder_L10 = folder; 10415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 10425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 3; ++i) { 1043f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i + 10); 10445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i + 10)); 10455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, folder_L0, 0, title, url) != NULL); 10465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 10475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 10485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 10495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url10 = GURL(IndexedURL(10)); 10515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Move(0, GetUniqueNodeByURL(0, url10), folder_L10, folder_L10->child_count()); 10525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url11 = GURL(IndexedURL(11)); 10535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Move(0, GetUniqueNodeByURL(0, url11), folder_L10, 0); 10545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url12 = GURL(IndexedURL(12)); 10555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Move(0, GetUniqueNodeByURL(0, url12), folder_L10, 1); 10565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 10575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 10585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 10595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 371980. 10615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 10625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SC_SinkEmptyBMFold5LevelsDown) { 10635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 10645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 10655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder = GetBookmarkBarNode(0); 10675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder_L5 = NULL; 10685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int level = 0; level < 15; ++level) { 10695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int num_bookmarks = base::RandInt(0, 9); 10705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < num_bookmarks; ++i) { 1071f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i); 10725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 10735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, folder, i, title, url) != NULL); 10745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1075f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedFolderName(level); 10765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) folder = AddFolder( 10775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 0, folder, folder->child_count(), title); 10785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folder != NULL); 10795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (level == 5) folder_L5 = folder; 10805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 10815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) folder = AddFolder( 10825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 0, GetBookmarkBarNode(0)->child_count(), kGenericFolderName); 10835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folder != NULL); 10845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 10855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 10865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Move(0, folder, folder_L5, folder_L5->child_count()); 10885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 10895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 10905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 10915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 371997. 10935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 10945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SC_SinkNonEmptyBMFold5LevelsDown) { 10955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 10965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 10975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder = GetBookmarkBarNode(0); 10995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder_L5 = NULL; 11005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int level = 0; level < 6; ++level) { 11015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int num_bookmarks = base::RandInt(0, 9); 11025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < num_bookmarks; ++i) { 1103f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i); 11045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 11055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, folder, i, title, url) != NULL); 11065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1107f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedFolderName(level); 11085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) folder = AddFolder(0, folder, folder->child_count(), title); 11095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folder != NULL); 11105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (level == 5) folder_L5 = folder; 11115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 11125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) folder = AddFolder( 11135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 0, GetBookmarkBarNode(0)->child_count(), kGenericFolderName); 11145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folder != NULL); 11155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 10; ++i) { 1116f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i); 11175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 11185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, folder, i, title, url) != NULL); 11195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 11205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 11215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 11225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Move(0, folder, folder_L5, folder_L5->child_count()); 11245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 11255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 11265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 11275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 372006. 11295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 11305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SC_HoistFolder5LevelsUp) { 11315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 11325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 11335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder = GetBookmarkBarNode(0); 11355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder_L5 = NULL; 11365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int level = 0; level < 6; ++level) { 11375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int num_bookmarks = base::RandInt(0, 9); 11385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < num_bookmarks; ++i) { 1139f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i); 11405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 11415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, folder, i, title, url) != NULL); 11425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1143f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedFolderName(level); 11445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) folder = AddFolder( 11455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 0, folder, folder->child_count(), title); 11465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folder != NULL); 11475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (level == 5) folder_L5 = folder; 11485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 11495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) folder = AddFolder( 11505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 0, folder_L5, folder_L5->child_count(), kGenericFolderName); 11515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folder != NULL); 11525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 10; ++i) { 1153f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i); 11545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 11555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, folder, i, title, url) != NULL); 11565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 11575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 11585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 11595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Move(0, folder, GetBookmarkBarNode(0), GetBookmarkBarNode(0)->child_count()); 11615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 11625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 11635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 11645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 372026. 11665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 11675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SC_ReverseTheOrderOfTwoBMFolders) { 11685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 11695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 11705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 2; ++i) { 1172f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedFolderName(i); 11735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder = AddFolder(0, i, title); 11745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folder != NULL); 11755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int j = 0; j < 10; ++j) { 1176f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(j); 11775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(j)); 11785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, folder, j, title, url) != NULL); 11795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 11805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 11815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 11825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 11835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ReverseChildOrder(0, GetBookmarkBarNode(0)); 11855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 11865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 11875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 11885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 372028. 11905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 11915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SC_ReverseTheOrderOfTenBMFolders) { 11925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 11935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 11945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 10; ++i) { 1196f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedFolderName(i); 11975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder = AddFolder(0, i, title); 11985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folder != NULL); 11995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int j = 0; j < 10; ++j) { 1200f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(1000 * i + j); 12015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(j)); 12025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, folder, j, title, url) != NULL); 12035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 12045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 12055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 12065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 12075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ReverseChildOrder(0, GetBookmarkBarNode(0)); 12095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 12105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 12115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 12125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 373379. 12145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 12155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MC_BiDirectionalPushAddingBM) { 12165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 12175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 12185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DisableVerifier(); 12205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 2; ++i) { 1221f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title0 = IndexedURLTitle(2*i); 12225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url0 = GURL(IndexedURL(2*i)); 12235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, title0, url0) != NULL); 1224f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title1 = IndexedURLTitle(2*i+1); 12255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url1 = GURL(IndexedURL(2*i+1)); 12265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(1, title1, url1) != NULL); 12275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 12285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 12295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatch()); 12305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(ContainsDuplicateBookmarks(0)); 12315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 12325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 373503. 12345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 12355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MC_BiDirectionalPush_AddingSameBMs) { 12365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 12375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 12385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Note: When a racy commit is done with identical bookmarks, it is possible 12405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // for duplicates to exist after sync completes. See http://crbug.com/19769. 12415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DisableVerifier(); 12425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 2; ++i) { 1243f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i); 12445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 12455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, title, url) != NULL); 12465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(1, title, url) != NULL); 12475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 12485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 12495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatch()); 12505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 12515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 373506. 12535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 12545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MC_BootStrapEmptyStateEverywhere) { 12555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 12565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 12575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 12585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 12595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 373505. 12615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 12625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MC_Merge_CaseInsensitivity_InNames) { 12635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; 12645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DisableVerifier(); 12655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1266f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) const BookmarkNode* folder0 = AddFolder(0, "Folder"); 12675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folder0 != NULL); 1268f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ASSERT_TRUE(AddURL(0, folder0, 0, "Bookmark 0", GURL(kGenericURL)) != NULL); 1269f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ASSERT_TRUE(AddURL(0, folder0, 1, "Bookmark 1", GURL(kGenericURL)) != NULL); 1270f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ASSERT_TRUE(AddURL(0, folder0, 2, "Bookmark 2", GURL(kGenericURL)) != NULL); 12715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1272f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) const BookmarkNode* folder1 = AddFolder(1, "fOlDeR"); 12735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folder1 != NULL); 1274f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ASSERT_TRUE(AddURL(1, folder1, 0, "bOoKmArK 0", GURL(kGenericURL)) != NULL); 1275f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ASSERT_TRUE(AddURL(1, folder1, 1, "BooKMarK 1", GURL(kGenericURL)) != NULL); 1276f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ASSERT_TRUE(AddURL(1, folder1, 2, "bOOKMARK 2", GURL(kGenericURL)) != NULL); 12775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 12795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 12805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatch()); 12815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(ContainsDuplicateBookmarks(0)); 12825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 12835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 373508. 12855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 12865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MC_SimpleMergeOfDifferentBMModels) { 12875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; 12885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DisableVerifier(); 12895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 3; ++i) { 1291f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i); 12925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 12935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, i, title, url) != NULL); 12945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(1, i, title, url) != NULL); 12955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 12965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 3; i < 10; ++i) { 1298f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title0 = IndexedURLTitle(i); 12995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url0 = GURL(IndexedURL(i)); 13005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, i, title0, url0) != NULL); 1301f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title1 = IndexedURLTitle(i+7); 13025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url1 = GURL(IndexedURL(i+7)); 13035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(1, i, title1, url1) != NULL); 13045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 13055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 13075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 13085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatch()); 13095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(ContainsDuplicateBookmarks(0)); 13105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 13115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 386586. 13135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 13145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MC_MergeSimpleBMHierarchyUnderBMBar) { 13155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; 13165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DisableVerifier(); 13175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 3; ++i) { 1319f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i); 13205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 13215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, i, title, url) != NULL); 13225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(1, i, title, url) != NULL); 13235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 13245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 3; i < 10; ++i) { 1326f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i); 13275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 13285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(1, i, title, url) != NULL); 13295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 13305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 13325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 13335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatch()); 13345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(ContainsDuplicateBookmarks(0)); 13355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 13365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 386589. 13385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 13395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MC_MergeSimpleBMHierarchyEqualSetsUnderBMBar) { 13405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; 13415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DisableVerifier(); 13425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 3; ++i) { 1344f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i); 13455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 13465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, i, title, url) != NULL); 13475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(1, i, title, url) != NULL); 13485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 13495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 13515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 13525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatch()); 13535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(ContainsDuplicateBookmarks(0)); 13545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 13555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 373504 - Merge bookmark folders with different bookmarks. 13575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 13585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MC_MergeBMFoldersWithDifferentBMs) { 13595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; 13605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DisableVerifier(); 13615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder0 = AddFolder(0, kGenericFolderName); 13635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folder0 != NULL); 13645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder1 = AddFolder(1, kGenericFolderName); 13655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folder1 != NULL); 13665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 2; ++i) { 1367f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title0 = IndexedURLTitle(2*i); 13685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url0 = GURL(IndexedURL(2*i)); 13695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, folder0, i, title0, url0) != NULL); 1370f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title1 = IndexedURLTitle(2*i+1); 13715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url1 = GURL(IndexedURL(2*i+1)); 13725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(1, folder1, i, title1, url1) != NULL); 13735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 13745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 13755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 13765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatch()); 13775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(ContainsDuplicateBookmarks(0)); 13785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 13795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Scribe ID - 373509 - Merge moderately complex bookmark models. 13815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 13825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MC_MergeDifferentBMModelsModeratelyComplex) { 13835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; 13845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DisableVerifier(); 13855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 25; ++i) { 1387f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title0 = IndexedURLTitle(i); 13885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url0 = GURL(IndexedURL(i)); 13895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, i, title0, url0) != NULL); 1390f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title1 = IndexedURLTitle(i+50); 13915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url1 = GURL(IndexedURL(i+50)); 13925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(1, i, title1, url1) != NULL); 13935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 13945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 25; i < 30; ++i) { 1395f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title0 = IndexedFolderName(i); 13965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder0 = AddFolder(0, i, title0); 13975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folder0 != NULL); 1398f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title1 = IndexedFolderName(i+50); 13995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder1 = AddFolder(1, i, title1); 14005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folder1 != NULL); 14015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int j = 0; j < 5; ++j) { 1402f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title0 = IndexedURLTitle(i+5*j); 14035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url0 = GURL(IndexedURL(i+5*j)); 14045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, folder0, j, title0, url0) != NULL); 1405f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title1 = IndexedURLTitle(i+5*j+50); 14065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url1 = GURL(IndexedURL(i+5*j+50)); 14075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(1, folder1, j, title1, url1) != NULL); 14085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 14095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 14105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 100; i < 125; ++i) { 1411f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i); 14125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 14135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, title, url) != NULL); 14145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(1, title, url) != NULL); 14155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 14165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 14175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 14185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatch()); 14195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(ContainsDuplicateBookmarks(0)); 14205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 14215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TCM ID - 3675271 - Merge simple bookmark subset under bookmark folder. 14235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 14245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MC_MergeSimpleBMHierarchySubsetUnderBMFolder) { 14255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; 14265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DisableVerifier(); 14275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 2; ++i) { 14295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder = AddFolder(i, kGenericFolderName); 14305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folder != NULL); 14315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int j = 0; j < 4; ++j) { 14325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (base::RandDouble() < 0.5) { 1433f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(j); 14345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(j)); 14355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(i, folder, j, title, url) != NULL); 14365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 1437f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedFolderName(j); 14385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddFolder(i, folder, j, title) != NULL); 14395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 14405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 14415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 14425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 14435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 14445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatch()); 14455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(ContainsDuplicateBookmarks(0)); 14465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 14475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TCM ID - 3727284 - Merge subsets of bookmark under bookmark bar. 14495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 14505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MC_MergeSimpleBMHierarchySubsetUnderBookmarkBar) { 14515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; 14525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DisableVerifier(); 14535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 4; ++i) { 1455f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i); 14565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 14575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, i, title, url) != NULL); 14585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 14595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int j = 0; j < 2; ++j) { 1461f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(j); 14625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(j)); 14635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(1, j, title, url) != NULL); 14645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 14655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 14675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 14685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatch()); 14695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(ContainsDuplicateBookmarks(0)); 14705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(ContainsDuplicateBookmarks(1)); 14715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 14725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TCM ID - 3659294 - Merge simple bookmark hierarchy under bookmark folder. 14745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 14755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MC_Merge_SimpleBMHierarchy_Under_BMFolder) { 14765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; 14775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DisableVerifier(); 14785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder0 = AddFolder(0, 0, kGenericFolderName); 14805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folder0 != NULL); 14815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL( 14825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 0, folder0, 0, IndexedURLTitle(1), GURL(IndexedURL(1))) != NULL); 14835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddFolder(0, folder0, 1, IndexedSubfolderName(2)) != NULL); 14845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL( 14855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 0, folder0, 2, IndexedURLTitle(3), GURL(IndexedURL(3))) != NULL); 14865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddFolder(0, folder0, 3, IndexedSubfolderName(4)) != NULL); 14875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder1 = AddFolder(1, 0, kGenericFolderName); 14895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folder1 != NULL); 14905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddFolder(1, folder1, 0, IndexedSubfolderName(0)) != NULL); 14915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddFolder(1, folder1, 1, IndexedSubfolderName(2)) != NULL); 14925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL( 14935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1, folder1, 2, IndexedURLTitle(3), GURL(IndexedURL(3))) != NULL); 14945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddFolder(1, folder1, 3, IndexedSubfolderName(5)) != NULL); 14955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL( 14965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1, folder1, 4, IndexedURLTitle(1), GURL(IndexedURL(1))) != NULL); 14975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 14995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 15005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatch()); 15015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(ContainsDuplicateBookmarks(0)); 15025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 15035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TCM ID - 3711273 - Merge disjoint sets of bookmark hierarchy under bookmark 15055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// folder. 15065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 15075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MC_Merge_SimpleBMHierarchy_DisjointSets_Under_BMFolder) { 15085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; 15095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DisableVerifier(); 15105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder0 = 15125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddFolder(0, 0, kGenericFolderName); 15135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folder0 != NULL); 15145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL( 15155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 0, folder0, 0, IndexedURLTitle(1), GURL(IndexedURL(1))) != NULL); 15165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddFolder(0, folder0, 1, IndexedSubfolderName(2)) != NULL); 15175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL( 15185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 0, folder0, 2, IndexedURLTitle(3), GURL(IndexedURL(3))) != NULL); 15195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddFolder(0, folder0, 3, IndexedSubfolderName(4)) != NULL); 15205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder1 = AddFolder(1, 0, kGenericFolderName); 15225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folder1 != NULL); 15235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddFolder(1, folder1, 0, IndexedSubfolderName(5)) != NULL); 15245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddFolder(1, folder1, 1, IndexedSubfolderName(6)) != NULL); 15255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL( 15265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1, folder1, 2, IndexedURLTitle(7), GURL(IndexedURL(7))) != NULL); 15275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL( 15285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1, folder1, 3, IndexedURLTitle(8), GURL(IndexedURL(8))) != NULL); 15295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 15315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 15325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatch()); 15335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(ContainsDuplicateBookmarks(0)); 15345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 15355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TCM ID - 3639296 - Merge disjoint sets of bookmark hierarchy under bookmark 15375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// bar. 15385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 15395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MC_Merge_SimpleBMHierarchy_DisjointSets_Under_BookmarkBar) { 15405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; 15415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DisableVerifier(); 15425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 3; ++i) { 1544f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i+1); 15455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i+1)); 15465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, i, title, url) != NULL); 15475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 15485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int j = 0; j < 3; ++j) { 1550f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(j+4); 15515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(j+4)); 15525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, j, title, url) != NULL); 15535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 15545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 15565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 15575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatch()); 15585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(ContainsDuplicateBookmarks(0)); 15595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 15605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TCM ID - 3616282 - Merge sets of duplicate bookmarks under bookmark bar. 15625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 15635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MC_Merge_SimpleBMHierarchy_DuplicateBMs_Under_BMBar) { 15645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; 15655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DisableVerifier(); 15665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Let's add duplicate set of bookmark {1,2,2,3,3,3,4,4,4,4} to client0. 15685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int node_index = 0; 15695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 1; i < 5 ; ++i) { 15705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int j = 0; j < i; ++j) { 1571f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i); 15725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 15735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, node_index, title, url) != NULL); 15745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ++node_index; 15755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 15765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 15775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Let's add a set of bookmarks {1,2,3,4} to client1. 15785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 4; ++i) { 1579f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i+1); 15805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i+1)); 15815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(1, i, title, url) != NULL); 15825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 15835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 15855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 15865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatch()); 15875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 1; i < 5 ; ++i) { 15895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(CountBookmarksWithTitlesMatching(1, IndexedURLTitle(i)) == i); 15905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 15915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 15925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TCM ID - 6593872. 15945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, DisableBookmarks) { 15955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 15965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 15975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(1)->DisableSyncForDatatype(syncer::BOOKMARKS)); 15995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddFolder(1, kGenericFolderName) != NULL); 16005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 16015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(AllModelsMatch()); 16025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(1)->EnableSyncForDatatype(syncer::BOOKMARKS)); 16045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 16055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatch()); 16065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 16075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TCM ID - 7343544. 16095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, DisableSync) { 16105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 16115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 16125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(1)->DisableSyncForAllDatatypes()); 16145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddFolder(0, IndexedFolderName(0)) != NULL); 1615e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ASSERT_TRUE(AwaitCommitActivityCompletion(GetSyncService((0)))); 16165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(AllModelsMatch()); 16175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddFolder(1, IndexedFolderName(1)) != NULL); 16195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(AllModelsMatch()); 16205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(1)->EnableSyncForAllDatatypes()); 16225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 16235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatch()); 16245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 16255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TCM ID - 3662298 - Test adding duplicate folder - Both with different BMs 16275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// underneath. 16285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, MC_DuplicateFolders) { 16295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; 16305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DisableVerifier(); 16315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder0 = AddFolder(0, kGenericFolderName); 16335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folder0 != NULL); 16345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder1 = AddFolder(1, kGenericFolderName); 16355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folder1 != NULL); 16365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 5; ++i) { 1637f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title0 = IndexedURLTitle(i); 16385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url0 = GURL(IndexedURL(i)); 16395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, folder0, i, title0, url0) != NULL); 1640f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title1 = IndexedURLTitle(i+5); 16415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url1 = GURL(IndexedURL(i+5)); 16425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(1, folder1, i, title1, url1) != NULL); 16435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 16445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 16465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 16475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatch()); 16485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(ContainsDuplicateBookmarks(0)); 16495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 16505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1651010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// This test fails when run with FakeServer and FakeServerInvalidationService. 1652010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(LegacyTwoClientBookmarksSyncTest, MC_DeleteBookmark) { 16535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 16545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(1)->DisableSyncForDatatype(syncer::BOOKMARKS)); 16555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const GURL bar_url("http://example.com/bar"); 16575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const GURL other_url("http://example.com/other"); 16585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1659f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ASSERT_TRUE(AddURL(0, GetBookmarkBarNode(0), 0, "bar", bar_url) != NULL); 1660f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ASSERT_TRUE(AddURL(0, GetOtherNode(0), 0, "other", other_url) != NULL); 16615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1662e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ASSERT_TRUE(AwaitCommitActivityCompletion(GetSyncService((0)))); 16635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(HasNodeWithURL(0, bar_url)); 16655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(HasNodeWithURL(0, other_url)); 16665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(HasNodeWithURL(1, bar_url)); 16675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(HasNodeWithURL(1, other_url)); 16685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Remove(0, GetBookmarkBarNode(0), 0); 1670e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ASSERT_TRUE(AwaitCommitActivityCompletion(GetSyncService((0)))); 16715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(HasNodeWithURL(0, bar_url)); 16735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(HasNodeWithURL(0, other_url)); 16745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(1)->EnableSyncForDatatype(syncer::BOOKMARKS)); 16765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 16775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(HasNodeWithURL(0, bar_url)); 16795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(HasNodeWithURL(0, other_url)); 16805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(HasNodeWithURL(1, bar_url)); 16815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(HasNodeWithURL(1, other_url)); 16825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 16835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TCM ID - 3719307 - Test a scenario of updating the name of the same bookmark 16855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// from two clients at the same time. 16865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 16875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MC_BookmarkNameChangeConflict) { 16885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 16895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder0 = AddFolder(0, kGenericFolderName); 16915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folder0 != NULL); 16925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 3; ++i) { 1693f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i); 16945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 16955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, folder0, i, title, url) != NULL); 16965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 16975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 16985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 16995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(ContainsDuplicateBookmarks(0)); 17005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DisableVerifier(); 17025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url(IndexedURL(0)); 1703f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) SetTitle(0, GetUniqueNodeByURL(0, url), "Title++"); 1704f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) SetTitle(1, GetUniqueNodeByURL(1, url), "Title--"); 17055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 17075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatch()); 17085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(ContainsDuplicateBookmarks(0)); 17095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 17105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TCM ID - 3672299 - Test a scenario of updating the URL of the same bookmark 17125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// from two clients at the same time. 17135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 17145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MC_BookmarkURLChangeConflict) { 17155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 17165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folder0 = AddFolder(0, kGenericFolderName); 17185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folder0 != NULL); 17195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 3; ++i) { 1720f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i); 17215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 17225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, folder0, i, title, url) != NULL); 17235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 17245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 17255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 17265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(ContainsDuplicateBookmarks(0)); 17275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DisableVerifier(); 17295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url(IndexedURL(0)); 17305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetURL( 17315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 0, GetUniqueNodeByURL(0, url), GURL("http://www.google.com/00"))); 17325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetURL( 17335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1, GetUniqueNodeByURL(1, url), GURL("http://www.google.com/11"))); 17345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 17365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatch()); 17375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(ContainsDuplicateBookmarks(0)); 17385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 17395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TCM ID - 3699290 - Test a scenario of updating the BM Folder name from two 17415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// clients at the same time. 17425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 17435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MC_FolderNameChangeConflict) { 17445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; 17455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DisableVerifier(); 17465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folderA[2]; 17485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folderB[2]; 17495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* folderC[2]; 17505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Create empty folder A on both clients. 17525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) folderA[0] = AddFolder(0, IndexedFolderName(0)); 17535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folderA[0] != NULL); 17545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) folderA[1] = AddFolder(1, IndexedFolderName(0)); 17555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folderA[1] != NULL); 17565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Create folder B with bookmarks on both clients. 17585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) folderB[0] = AddFolder(0, IndexedFolderName(1)); 17595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folderB[0] != NULL); 17605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) folderB[1] = AddFolder(1, IndexedFolderName(1)); 17615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folderB[1] != NULL); 17625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 3; ++i) { 1763f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(i); 17645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(i)); 17655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, folderB[0], i, title, url) != NULL); 17665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 17675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Create folder C with bookmarks and subfolders on both clients. 17695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) folderC[0] = AddFolder(0, IndexedFolderName(2)); 17705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folderC[0] != NULL); 17715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) folderC[1] = AddFolder(1, IndexedFolderName(2)); 17725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(folderC[1] != NULL); 17735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < 3; ++i) { 1774f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string folder_name = IndexedSubfolderName(i); 17755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* subfolder = AddFolder(0, folderC[0], i, folder_name); 17765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(subfolder != NULL); 17775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int j = 0; j < 3; ++j) { 1778f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string title = IndexedURLTitle(j); 17795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = GURL(IndexedURL(j)); 17805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, subfolder, j, title, url) != NULL); 17815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 17825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 17835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 17855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 17865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatch()); 17875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(ContainsDuplicateBookmarks(0)); 17885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Simultaneously rename folder A on both clients. 1790f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) SetTitle(0, folderA[0], "Folder A++"); 1791f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) SetTitle(1, folderA[1], "Folder A--"); 17925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 17935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatch()); 17945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(ContainsDuplicateBookmarks(0)); 17955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Simultaneously rename folder B on both clients. 1797f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) SetTitle(0, folderB[0], "Folder B++"); 1798f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) SetTitle(1, folderB[1], "Folder B--"); 17995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 18005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatch()); 18015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(ContainsDuplicateBookmarks(0)); 18025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Simultaneously rename folder C on both clients. 1804f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) SetTitle(0, folderC[0], "Folder C++"); 1805f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) SetTitle(1, folderC[1], "Folder C--"); 18065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 18075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatch()); 18085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(ContainsDuplicateBookmarks(0)); 18095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 18105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 18125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SingleClientEnabledEncryption) { 18135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 18145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 18155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_TRUE(EnableEncryption(0)); 18175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 18185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_TRUE(IsEncryptionComplete(0)); 18195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_TRUE(IsEncryptionComplete(1)); 18205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 18215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 18225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 18245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SingleClientEnabledEncryptionAndChanged) { 18255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 18265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 18275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_TRUE(EnableEncryption(0)); 18295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, IndexedURLTitle(0), GURL(IndexedURL(0))) != NULL); 18305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 18315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_TRUE(IsEncryptionComplete(0)); 18325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_TRUE(IsEncryptionComplete(1)); 18335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 18345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 18355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 18375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BothClientsEnabledEncryption) { 18385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 18395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 18405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_TRUE(EnableEncryption(0)); 18425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_TRUE(EnableEncryption(1)); 18435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 18445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_TRUE(IsEncryptionComplete(0)); 18455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_TRUE(IsEncryptionComplete(1)); 18465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 18475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 18485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 18505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SingleClientEnabledEncryptionBothChanged) { 18515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 18525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 18535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_TRUE(EnableEncryption(0)); 18555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 18565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_TRUE(IsEncryptionComplete(0)); 18575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_TRUE(IsEncryptionComplete(1)); 18585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, IndexedURLTitle(0), GURL(IndexedURL(0))) != NULL); 18595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, IndexedURLTitle(1), GURL(IndexedURL(1))) != NULL); 18605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 18615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 18625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_TRUE(IsEncryptionComplete(0)); 18635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_TRUE(IsEncryptionComplete(1)); 18645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 18655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 18675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SingleClientEnabledEncryptionAndChangedMultipleTimes) { 18685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 18695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 18705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, IndexedURLTitle(0), GURL(IndexedURL(0))) != NULL); 18725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_TRUE(EnableEncryption(0)); 18735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 18745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_TRUE(IsEncryptionComplete(0)); 18755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_TRUE(IsEncryptionComplete(1)); 18765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 18775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, IndexedURLTitle(1), GURL(IndexedURL(1))) != NULL); 18795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddFolder(0, IndexedFolderName(0)) != NULL); 18805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 18815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 18825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 18835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 18855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FirstClientEnablesEncryptionWithPassSecondChanges) { 18865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 18875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 18885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Add initial bookmarks. 18905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, 0, IndexedURLTitle(0), GURL(IndexedURL(0))) != NULL); 18915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, 1, IndexedURLTitle(1), GURL(IndexedURL(1))) != NULL); 18925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, 2, IndexedURLTitle(2), GURL(IndexedURL(2))) != NULL); 18935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 18945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 18955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Set a passphrase and enable encryption on Client 0. Client 1 will not 18975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // understand the bookmark updates. 18985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetEncryptionPassphrase(0, kValidPassphrase, ProfileSyncService::EXPLICIT); 1899e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ASSERT_TRUE(AwaitPassphraseAccepted(GetSyncService((0)))); 19005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_TRUE(EnableEncryption(0)); 19015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 19025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_TRUE(IsEncryptionComplete(0)); 19035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_TRUE(IsEncryptionComplete(1)); 1904e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ASSERT_TRUE(GetSyncService((1))->IsPassphraseRequired()); 19055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Client 1 adds bookmarks between the first two and between the second two. 19075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, 1, IndexedURLTitle(3), GURL(IndexedURL(3))) != NULL); 19085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, 3, IndexedURLTitle(4), GURL(IndexedURL(4))) != NULL); 19095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(AllModelsMatchVerifier()); 19105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(AllModelsMatch()); 19115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Set the passphrase. Everything should resolve. 1913e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ASSERT_TRUE(AwaitPassphraseRequired(GetSyncService((1)))); 19145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetDecryptionPassphrase(1, kValidPassphrase)); 1915e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ASSERT_TRUE(AwaitPassphraseAccepted(GetSyncService((1)))); 19165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 19175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(AllModelsMatch()); 19185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(0, 19195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetClient(1)->GetLastSessionSnapshot().num_encryption_conflicts()); 19205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Ensure everything is syncing normally by appending a final bookmark. 19225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(1, 5, IndexedURLTitle(5), GURL(IndexedURL(5))) != NULL); 19235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(1)->AwaitMutualSyncCycleCompletion(GetClient(0))); 19245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(AllModelsMatch()); 19255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(0, 19265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetClient(1)->GetLastSessionSnapshot().num_encryption_conflicts()); 19275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 19285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Deliberately racy rearranging of bookmarks to test that our conflict resolver 19305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// code results in a consistent view across machines (no matter what the final 19315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// order is). 19325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, RacyPositionChanges) { 19335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 19345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 19355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Add initial bookmarks. 19375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) size_t num_bookmarks = 5; 19385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (size_t i = 0; i < num_bookmarks; ++i) { 19395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AddURL(0, i, IndexedURLTitle(i), GURL(IndexedURL(i))) != NULL); 19405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 19415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Once we make diverging changes the verifer is helpless. 19435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 19445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 19455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DisableVerifier(); 19465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Make changes on client 0. 19485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (size_t i = 0; i < num_bookmarks; ++i) { 19495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* node = GetUniqueNodeByURL(0, GURL(IndexedURL(i))); 19505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int rand_pos = base::RandInt(0, num_bookmarks-1); 19515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DVLOG(1) << "Moving client 0's bookmark " << i << " to position " 19525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << rand_pos; 19535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Move(0, node, node->parent(), rand_pos); 19545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 19555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Make changes on client 1. 19575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (size_t i = 0; i < num_bookmarks; ++i) { 19585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* node = GetUniqueNodeByURL(1, GURL(IndexedURL(i))); 19595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int rand_pos = base::RandInt(0, num_bookmarks-1); 19605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DVLOG(1) << "Moving client 1's bookmark " << i << " to position " 19615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << rand_pos; 19625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Move(1, node, node->parent(), rand_pos); 19635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 19645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 19665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatch()); 19675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Now make changes to client 1 first. 19695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (size_t i = 0; i < num_bookmarks; ++i) { 19705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* node = GetUniqueNodeByURL(1, GURL(IndexedURL(i))); 19715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int rand_pos = base::RandInt(0, num_bookmarks-1); 19725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DVLOG(1) << "Moving client 1's bookmark " << i << " to position " 19735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << rand_pos; 19745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Move(1, node, node->parent(), rand_pos); 19755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 19765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Make changes on client 0. 19785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (size_t i = 0; i < num_bookmarks; ++i) { 19795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* node = GetUniqueNodeByURL(0, GURL(IndexedURL(i))); 19805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int rand_pos = base::RandInt(0, num_bookmarks-1); 19815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DVLOG(1) << "Moving client 0's bookmark " << i << " to position " 19825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << rand_pos; 19835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Move(0, node, node->parent(), rand_pos); 19845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 19855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 19875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatch()); 19885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 19895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Trigger the server side creation of Synced Bookmarks. Ensure both clients 19915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// remain syncing afterwards. Add bookmarks to the synced bookmarks folder 19925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// and ensure both clients receive the boomkmark. 1993c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen MurdochIN_PROC_BROWSER_TEST_F(LegacyTwoClientBookmarksSyncTest, 1994c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch CreateSyncedBookmarks) { 19955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 19965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 19975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TriggerCreateSyncedBookmarks(); 19995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Add a bookmark on Client 0 and ensure it syncs over. This will also trigger 20015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // both clients downloading the new Synced Bookmarks folder. 2002f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ASSERT_TRUE(AddURL(0, "Google", GURL("http://www.google.com"))); 20035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 20045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatch()); 20055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Now add a bookmark within the Synced Bookmarks folder and ensure it syncs 20075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // over. 20085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* synced_bookmarks = GetSyncedBookmarksNode(0); 20095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(synced_bookmarks); 2010f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ASSERT_TRUE(AddURL(0, synced_bookmarks, 0, "Google2", 20115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL("http://www.google2.com"))); 20125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 20135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AllModelsMatch()); 20145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2015c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 2016c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, 2017c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) BookmarkAllNodesRemovedEvent) { 2018c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 2019c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 2020c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(AllModelsMatchVerifier()); 2021c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 2022c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Starting state: 2023c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // other_node 2024c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // -> folder0 2025c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // -> tier1_a 2026c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // -> http://mail.google.com 2027c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // -> http://www.google.com 2028c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // -> http://news.google.com 2029c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // -> http://yahoo.com 2030c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // -> http://www.cnn.com 2031c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // bookmark_bar 2032c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // -> empty_folder 2033c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // -> folder1 2034c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // -> http://yahoo.com 2035c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // -> http://gmail.com 2036c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 2037f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) const BookmarkNode* folder0 = AddFolder(0, GetOtherNode(0), 0, "folder0"); 2038f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) const BookmarkNode* tier1_a = AddFolder(0, folder0, 0, "tier1_a"); 2039f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ASSERT_TRUE(AddURL(0, folder0, 1, "News", GURL("http://news.google.com"))); 2040f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ASSERT_TRUE(AddURL(0, folder0, 2, "Yahoo", GURL("http://www.yahoo.com"))); 2041f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ASSERT_TRUE(AddURL(0, tier1_a, 0, "Gmai", GURL("http://mail.google.com"))); 2042f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ASSERT_TRUE(AddURL(0, tier1_a, 1, "Google", GURL("http://www.google.com"))); 2043c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE( 2044f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) AddURL(0, GetOtherNode(0), 1, "CNN", GURL("http://www.cnn.com"))); 2045c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 2046f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ASSERT_TRUE(AddFolder(0, GetBookmarkBarNode(0), 0, "empty_folder")); 2047c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const BookmarkNode* folder1 = 2048f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) AddFolder(0, GetBookmarkBarNode(0), 1, "folder1"); 2049f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ASSERT_TRUE(AddURL(0, folder1, 0, "Yahoo", GURL("http://www.yahoo.com"))); 2050c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE( 2051f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) AddURL(0, GetBookmarkBarNode(0), 2, "Gmai", GURL("http://gmail.com"))); 2052c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 2053c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 2054c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(AllModelsMatch()); 2055c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 2056c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Remove all 2057c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) RemoveAll(0); 2058c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 2059c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 2060c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Verify other node has no children now. 2061c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(0, GetOtherNode(0)->child_count()); 2062c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(0, GetBookmarkBarNode(0)->child_count()); 2063c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(AllModelsMatch()); 2064c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 20651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 20661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Verifies that managed bookmarks (installed by policy) don't get synced. 20671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciIN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, ManagedBookmarks) { 20681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Make sure the first Profile has an overridden policy provider. 20691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_CALL(policy_provider_, IsInitializationComplete(testing::_)) 20701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci .WillRepeatedly(testing::Return(true)); 20711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci policy::ProfilePolicyConnectorFactory::GetInstance()->PushProviderForTesting( 20721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci &policy_provider_); 20731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 20741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Set up sync. 20751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 20761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_TRUE(AllModelsMatchVerifier()); 20771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 20781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Verify that there are no managed bookmarks at startup in either profile. 20791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // The Managed Bookmarks folder should not be visible at this stage. 20801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const BookmarkNode* managed_node0 = GetManagedNode(0); 20811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_TRUE(managed_node0->empty()); 20821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_FALSE(managed_node0->IsVisible()); 20831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const BookmarkNode* managed_node1 = GetManagedNode(1); 20841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_TRUE(managed_node1->empty()); 20851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_FALSE(managed_node1->IsVisible()); 20861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 20871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Verify that the bookmark bar node is empty on both profiles too. 20881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const BookmarkNode* bar_node0 = GetBookmarkBarNode(0); 20891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_TRUE(bar_node0->empty()); 20901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_TRUE(bar_node0->IsVisible()); 20911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const BookmarkNode* bar_node1 = GetBookmarkBarNode(1); 20921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_TRUE(bar_node1->empty()); 20931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_TRUE(bar_node1->IsVisible()); 20941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 20951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Verify that adding a bookmark is observed by the second Profile. 20961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GURL google_url("http://www.google.com"); 20971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_TRUE(AddURL(0, "Google", google_url) != NULL); 20981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 20991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_TRUE(AllModelsMatchVerifier()); 21001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_EQ(1, bar_node0->child_count()); 21011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_EQ(1, bar_node1->child_count()); 21021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 21031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Set the ManagedBookmarks policy for the first Profile, 21041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // which will add one new managed bookmark. 21051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::DictionaryValue* bookmark = new base::DictionaryValue(); 21061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bookmark->SetString("name", "Managed bookmark"); 21071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bookmark->SetString("url", "youtube.com"); 21081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::ListValue* list = new base::ListValue(); 21091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci list->Append(bookmark); 21101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci policy::PolicyMap policy; 21111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci policy.Set(policy::key::kManagedBookmarks, 21121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, 21131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci list, NULL); 21141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci policy_provider_.UpdateChromePolicy(policy); 21151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::RunLoop().RunUntilIdle(); 21161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 21171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Now add another user bookmark and wait for it to sync. 21181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_TRUE(AddURL(0, "Google 2", google_url) != NULL); 21191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 21201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_TRUE(AllModelsMatchVerifier()); 21211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 21221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_FALSE(GetSyncService(0)->HasUnrecoverableError()); 21231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_FALSE(GetSyncService(1)->HasUnrecoverableError()); 21241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 21251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Verify that the managed bookmark exists in the local model of the first 21261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Profile, and has a child node. 21271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_EQ(1, managed_node0->child_count()); 21281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_TRUE(managed_node0->IsVisible()); 21291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(GURL("http://youtube.com/"), managed_node0->GetChild(0)->url()); 21301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 21311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Verify that the second Profile didn't get this node. 21321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_EQ(0, managed_node1->child_count()); 21331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 2134