Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3562)

Unified Diff: chrome/test/live_sync/two_client_bookmarks_sync_test.cc

Issue 7259005: Allow sync integration tests to operate on multiple datatypes: Preferences + Bookmarks (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 9 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/test/live_sync/two_client_bookmarks_sync_test.cc
diff --git a/chrome/test/live_sync/two_client_bookmarks_sync_test.cc b/chrome/test/live_sync/two_client_bookmarks_sync_test.cc
new file mode 100644
index 0000000000000000000000000000000000000000..aa5150f5588879c81ba58f38782681afeeece22d
--- /dev/null
+++ b/chrome/test/live_sync/two_client_bookmarks_sync_test.cc
@@ -0,0 +1,1848 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/rand_util.h"
+#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/sync/profile_sync_service_harness.h"
+#include "chrome/test/live_sync/bookmarks_helper.h"
+#include "chrome/test/live_sync/live_sync_test.h"
+
+const std::string kGenericURL = "http://www.host.ext:1234/path/filename";
+const std::wstring kGenericURLTitle = L"URL Title";
+const std::wstring kGenericFolderName = L"Folder Name";
+const std::wstring kGenericSubfolderName = L"Subfolder Name";
+const std::wstring kGenericSubsubfolderName = L"Subsubfolder Name";
+
+class TwoClientBookmarksSyncTest : public LiveSyncTest {
+ public:
+ TwoClientBookmarksSyncTest() : LiveSyncTest(TWO_CLIENT) {}
+ virtual ~TwoClientBookmarksSyncTest() {}
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(TwoClientBookmarksSyncTest);
+};
+
+const std::vector<unsigned char> GenericFavicon() {
+ return BookmarksHelper::CreateFavicon(254);
+}
+
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, Sanity) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ GURL google_url("http://www.google.com");
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, L"Google", google_url) != NULL);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AddURL(
+ 1, L"Yahoo", GURL("http://www.yahoo.com")) != NULL);
+ ASSERT_TRUE(GetClient(1)->AwaitMutualSyncCycleCompletion(GetClient(0)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ const BookmarkNode* new_folder =
+ BookmarksHelper::AddFolder(0, 2, L"New Folder");
+ BookmarksHelper::Move(
+ 0, BookmarksHelper::GetUniqueNodeByURL(0, google_url), new_folder, 0);
+ BookmarksHelper::SetTitle(
+ 0, BookmarksHelper::GetBookmarkBarNode(0)->GetChild(0), L"Yahoo!!");
+ ASSERT_TRUE(BookmarksHelper::AddURL(
+ 0, BookmarksHelper::GetBookmarkBarNode(0), 1, L"CNN",
+ GURL("http://www.cnn.com")) != NULL);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ ASSERT_TRUE(BookmarksHelper::AddURL(
+ 1, L"Facebook", GURL("http://www.facebook.com")) != NULL);
+ ASSERT_TRUE(GetClient(1)->AwaitMutualSyncCycleCompletion(GetClient(0)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ BookmarksHelper::SortChildren(1, BookmarksHelper::GetBookmarkBarNode(1));
+ ASSERT_TRUE(GetClient(1)->AwaitMutualSyncCycleCompletion(GetClient(0)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ DisableVerifier();
+ BookmarksHelper::SetTitle(
+ 0, BookmarksHelper::GetUniqueNodeByURL(0, google_url), L"Google++");
+ BookmarksHelper::SetTitle(
+ 1, BookmarksHelper::GetUniqueNodeByURL(1, google_url), L"Google--");
+ ASSERT_TRUE(AwaitQuiescence());
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
+}
+
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SimultaneousURLChanges) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ GURL initial_url("http://www.google.com");
+ GURL second_url("http://www.google.com/abc");
+ GURL third_url("http://www.google.com/def");
+ std::wstring title = L"Google";
+
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, title, initial_url) != NULL);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+
+ DisableVerifier();
+ ASSERT_TRUE(BookmarksHelper::SetURL(
+ 0, BookmarksHelper::GetUniqueNodeByURL(
+ 0, initial_url), second_url) != NULL);
+ ASSERT_TRUE(BookmarksHelper::SetURL(
+ 1, BookmarksHelper::GetUniqueNodeByURL(
+ 1, initial_url), third_url) != NULL);
+ ASSERT_TRUE(AwaitQuiescence());
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
+
+ BookmarksHelper::SetTitle(
+ 0, BookmarksHelper::GetBookmarkBarNode(0)->GetChild(0), L"Google1");
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
+}
+
+// Test Scribe ID - 370558.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_AddFirstFolder) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ ASSERT_TRUE(BookmarksHelper::AddFolder(0, kGenericFolderName) != NULL);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+// Test Scribe ID - 370559.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ SC_AddFirstBMWithoutFavicon) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ ASSERT_TRUE(BookmarksHelper::AddURL(
+ 0, kGenericURLTitle, GURL(kGenericURL)) != NULL);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+// Test Scribe ID - 370489.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ SC_AddFirstBMWithFavicon) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ const BookmarkNode* bookmark = BookmarksHelper::AddURL(
+ 0, kGenericURLTitle, GURL(kGenericURL));
+ ASSERT_TRUE(bookmark != NULL);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ BookmarksHelper::SetFavicon(0, bookmark, GenericFavicon());
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+// Test Scribe ID - 370560.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_AddNonHTTPBMs) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ ASSERT_TRUE(BookmarksHelper::AddURL(
+ 0, L"FTP URL", GURL("ftp://user:password@host:1234/path")) != NULL);
+ ASSERT_TRUE(BookmarksHelper::AddURL(
+ 0, L"File URL", GURL("file://host/path")) != NULL);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+// Test Scribe ID - 370561.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ SC_AddFirstBMUnderFolder) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ const BookmarkNode* folder =
+ BookmarksHelper::AddFolder(0, kGenericFolderName);
+ ASSERT_TRUE(folder != NULL);
+ ASSERT_TRUE(BookmarksHelper::AddURL(
+ 0, folder, 0, kGenericURLTitle, GURL(kGenericURL)) != NULL);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+// Test Scribe ID - 370562.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ SC_AddSeveralBMsUnderBMBarAndOtherBM) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ for (int i = 0; i < 20; ++i) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, i, title, url) != NULL);
+ ASSERT_TRUE(BookmarksHelper::AddURL(
+ 0, BookmarksHelper::GetOtherNode(0), i, title, url) != NULL);
+ }
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+// Test Scribe ID - 370563.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ SC_AddSeveralBMsAndFolders) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ for (int i = 0; i < 15; ++i) {
+ if (base::RandDouble() > 0.6) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, i, title, url) != NULL);
+ } else {
+ std::wstring title = BookmarksHelper::IndexedFolderName(i);
+ const BookmarkNode* folder = BookmarksHelper::AddFolder(0, i, title);
+ ASSERT_TRUE(folder != NULL);
+ if (base::RandDouble() > 0.4) {
+ for (int i = 0; i < 20; ++i) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(
+ BookmarksHelper::AddURL(0, folder, i, title, url) != NULL);
+ }
+ }
+ }
+ }
+ for (int i = 0; i < 10; i++) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(
+ 0, BookmarksHelper::GetOtherNode(0), i, title, url) != NULL);
+ }
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+// Test Scribe ID - 370641.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ SC_DuplicateBMWithDifferentURLSameName) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ GURL url0 = GURL(BookmarksHelper::IndexedURL(0));
+ GURL url1 = GURL(BookmarksHelper::IndexedURL(1));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, kGenericURLTitle, url0) != NULL);
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, kGenericURLTitle, url1) != NULL);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+// Test Scribe ID - 370639 - Add bookmarks with different name and same URL.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ SC_DuplicateBookmarksWithSameURL) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ std::wstring title0 = BookmarksHelper::IndexedURLTitle(0);
+ std::wstring title1 = BookmarksHelper::IndexedURLTitle(1);
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, title0, GURL(kGenericURL)) != NULL);
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, title1, GURL(kGenericURL)) != NULL);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+// Test Scribe ID - 371817.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_RenameBMName) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ std::wstring title = BookmarksHelper::IndexedURLTitle(1);
+ const BookmarkNode* bookmark =
+ BookmarksHelper::AddURL(0, title, GURL(kGenericURL));
+ ASSERT_TRUE(bookmark != NULL);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ std::wstring new_title = BookmarksHelper::IndexedURLTitle(2);
+ BookmarksHelper::SetTitle(0, bookmark, new_title);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+// Test Scribe ID - 371822.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_RenameBMURL) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ GURL url = GURL(BookmarksHelper::IndexedURL(1));
+ const BookmarkNode* bookmark =
+ BookmarksHelper::AddURL(0, kGenericURLTitle, url);
+ ASSERT_TRUE(bookmark != NULL);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ GURL new_url = GURL(BookmarksHelper::IndexedURL(2));
+ ASSERT_TRUE(BookmarksHelper::SetURL(0, bookmark, new_url) != NULL);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+
+// Test Scribe ID - 371818 - Renaming the same bookmark name twice.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ SC_TwiceRenamingBookmarkName) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ std::wstring title = BookmarksHelper::IndexedURLTitle(1);
+ const BookmarkNode* bookmark =
+ BookmarksHelper::AddURL(0, title, GURL(kGenericURL));
+ ASSERT_TRUE(bookmark != NULL);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ std::wstring new_title = BookmarksHelper::IndexedURLTitle(2);
+ BookmarksHelper::SetTitle(0, bookmark, new_title);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ BookmarksHelper::SetTitle(0, bookmark, title);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+// Test Scribe ID - 371823 - Renaming the same bookmark URL twice.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ SC_TwiceRenamingBookmarkURL) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ GURL url = GURL(BookmarksHelper::IndexedURL(1));
+ const BookmarkNode* bookmark =
+ BookmarksHelper::AddURL(0, kGenericURLTitle, url);
+ ASSERT_TRUE(bookmark != NULL);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ GURL new_url = GURL(BookmarksHelper::IndexedURL(2));
+ ASSERT_TRUE(BookmarksHelper::SetURL(0, bookmark, new_url) != NULL);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ ASSERT_TRUE(BookmarksHelper::SetURL(0, bookmark, url) != NULL);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+// Test Scribe ID - 371824.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_RenameBMFolder) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ std::wstring title = BookmarksHelper::IndexedFolderName(1);
+ const BookmarkNode* folder = BookmarksHelper::AddFolder(0, title);
+ ASSERT_TRUE(BookmarksHelper::AddURL(
+ 0, folder, 0, kGenericURLTitle, GURL(kGenericURL)) != NULL);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ std::wstring new_title = BookmarksHelper::IndexedFolderName(2);
+ BookmarksHelper::SetTitle(0, folder, new_title);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+// Test Scribe ID - 371825.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_RenameEmptyBMFolder) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ std::wstring title = BookmarksHelper::IndexedFolderName(1);
+ const BookmarkNode* folder = BookmarksHelper::AddFolder(0, title);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ std::wstring new_title = BookmarksHelper::IndexedFolderName(2);
+ BookmarksHelper::SetTitle(0, folder, new_title);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+// Test Scribe ID - 371826.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ SC_RenameBMFolderWithLongHierarchy) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ std::wstring title = BookmarksHelper::IndexedFolderName(1);
+ const BookmarkNode* folder = BookmarksHelper::AddFolder(0, title);
+ ASSERT_TRUE(folder != NULL);
+ for (int i = 0; i < 120; ++i) {
+ if (base::RandDouble() > 0.15) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, folder, i, title, url) != NULL);
+ } else {
+ std::wstring title = BookmarksHelper::IndexedSubfolderName(i);
+ ASSERT_TRUE(BookmarksHelper::AddFolder(0, folder, i, title) != NULL);
+ }
+ }
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ std::wstring new_title = BookmarksHelper::IndexedFolderName(2);
+ BookmarksHelper::SetTitle(0, folder, new_title);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+// Test Scribe ID - 371827.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ SC_RenameBMFolderThatHasParentAndChildren) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ const BookmarkNode* folder =
+ BookmarksHelper::AddFolder(0, kGenericFolderName);
+ ASSERT_TRUE(folder != NULL);
+ for (int i = 1; i < 15; ++i) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, i, title, url) != NULL);
+ }
+ std::wstring title = BookmarksHelper::IndexedSubfolderName(1);
+ const BookmarkNode* subfolder =
+ BookmarksHelper::AddFolder(0, folder, 0, title);
+ for (int i = 0; i < 120; ++i) {
+ if (base::RandDouble() > 0.15) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, subfolder, i, title, url) != NULL);
+ } else {
+ std::wstring title = BookmarksHelper::IndexedSubsubfolderName(i);
+ ASSERT_TRUE(BookmarksHelper::AddFolder(0, subfolder, i, title) != NULL);
+ }
+ }
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ std::wstring new_title = BookmarksHelper::IndexedSubfolderName(2);
+ BookmarksHelper::SetTitle(0, subfolder, new_title);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+// Test Scribe ID - 371828.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_RenameBMNameAndURL) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ GURL url = GURL(BookmarksHelper::IndexedURL(1));
+ std::wstring title = BookmarksHelper::IndexedURLTitle(1);
+ const BookmarkNode* bookmark = BookmarksHelper::AddURL(0, title, url);
+ ASSERT_TRUE(bookmark != NULL);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ GURL new_url = GURL(BookmarksHelper::IndexedURL(2));
+ std::wstring new_title = BookmarksHelper::IndexedURLTitle(2);
+ bookmark = BookmarksHelper::SetURL(0, bookmark, new_url);
+ ASSERT_TRUE(bookmark != NULL);
+ BookmarksHelper::SetTitle(0, bookmark, new_title);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+// Test Scribe ID - 371832.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ SC_DeleteBMEmptyAccountAfterwards) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ ASSERT_TRUE(BookmarksHelper::AddURL(
+ 0, kGenericURLTitle, GURL(kGenericURL)) != NULL);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ BookmarksHelper::Remove(0, BookmarksHelper::GetBookmarkBarNode(0), 0);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+// Test Scribe ID - 371833.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ SC_DelBMNonEmptyAccountAfterwards) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ for (int i = 0; i < 20; ++i) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, i, title, url) != NULL);
+ }
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ BookmarksHelper::Remove(0, BookmarksHelper::GetBookmarkBarNode(0), 0);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+// Test Scribe ID - 371835.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ SC_DelFirstBMUnderBMFoldNonEmptyFoldAfterwards) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ const BookmarkNode* folder =
+ BookmarksHelper::AddFolder(0, kGenericFolderName);
+ ASSERT_TRUE(folder != NULL);
+ for (int i = 0; i < 10; ++i) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, folder, i, title, url) != NULL);
+ }
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ BookmarksHelper::Remove(0, folder, 0);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+// Test Scribe ID - 371836.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ SC_DelLastBMUnderBMFoldNonEmptyFoldAfterwards) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ const BookmarkNode* folder =
+ BookmarksHelper::AddFolder(0, kGenericFolderName);
+ ASSERT_TRUE(folder != NULL);
+ for (int i = 0; i < 10; ++i) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, folder, i, title, url) != NULL);
+ }
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ BookmarksHelper::Remove(0, folder, folder->child_count() - 1);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+// Test Scribe ID - 371856.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ SC_DelMiddleBMUnderBMFoldNonEmptyFoldAfterwards) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ const BookmarkNode* folder =
+ BookmarksHelper::AddFolder(0, kGenericFolderName);
+ ASSERT_TRUE(folder != NULL);
+ for (int i = 0; i < 10; ++i) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, folder, i, title, url) != NULL);
+ }
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ BookmarksHelper::Remove(0, folder, 4);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+// Test Scribe ID - 371857.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ SC_DelBMsUnderBMFoldEmptyFolderAfterwards) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ const BookmarkNode* folder =
+ BookmarksHelper::AddFolder(0, kGenericFolderName);
+ ASSERT_TRUE(folder != NULL);
+ for (int i = 0; i < 10; ++i) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, folder, i, title, url) != NULL);
+ }
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ int child_count = folder->child_count();
+ for (int i = 0; i < child_count; ++i) {
+ BookmarksHelper::Remove(0, folder, 0);
+ }
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+// Test Scribe ID - 371858.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ SC_DelEmptyBMFoldEmptyAccountAfterwards) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ ASSERT_TRUE(BookmarksHelper::AddFolder(0, kGenericFolderName) != NULL);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ BookmarksHelper::Remove(0, BookmarksHelper::GetBookmarkBarNode(0), 0);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+// Test Scribe ID - 371869.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ SC_DelEmptyBMFoldNonEmptyAccountAfterwards) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ ASSERT_TRUE(BookmarksHelper::AddFolder(0, kGenericFolderName) != NULL);
+ for (int i = 1; i < 15; ++i) {
+ if (base::RandDouble() > 0.6) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, i, title, url) != NULL);
+ } else {
+ std::wstring title = BookmarksHelper::IndexedFolderName(i);
+ ASSERT_TRUE(BookmarksHelper::AddFolder(0, i, title) != NULL);
+ }
+ }
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ BookmarksHelper::Remove(0, BookmarksHelper::GetBookmarkBarNode(0), 0);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+// Test Scribe ID - 371879.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ SC_DelBMFoldWithBMsNonEmptyAccountAfterwards) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ ASSERT_TRUE(BookmarksHelper::AddURL(
+ 0, kGenericURLTitle, GURL(kGenericURL)) != NULL);
+ const BookmarkNode* folder =
+ BookmarksHelper::AddFolder(0, 1, kGenericFolderName);
+ ASSERT_TRUE(folder != NULL);
+ for (int i = 2; i < 10; ++i) {
+ if (base::RandDouble() > 0.6) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, i, title, url) != NULL);
+ } else {
+ std::wstring title = BookmarksHelper::IndexedFolderName(i);
+ ASSERT_TRUE(BookmarksHelper::AddFolder(0, i, title) != NULL);
+ }
+ }
+ for (int i = 0; i < 15; ++i) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, folder, i, title, url) != NULL);
+ }
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ BookmarksHelper::Remove(0, BookmarksHelper::GetBookmarkBarNode(0), 1);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+// Test Scribe ID - 371880.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ SC_DelBMFoldWithBMsAndBMFoldsNonEmptyACAfterwards) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ ASSERT_TRUE(BookmarksHelper::AddURL(
+ 0, kGenericURLTitle, GURL(kGenericURL)) != NULL);
+ const BookmarkNode* folder =
+ BookmarksHelper::AddFolder(0, 1, kGenericFolderName);
+ ASSERT_TRUE(folder != NULL);
+ for (int i = 2; i < 10; ++i) {
+ if (base::RandDouble() > 0.6) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, i, title, url) != NULL);
+ } else {
+ std::wstring title = BookmarksHelper::IndexedFolderName(i);
+ ASSERT_TRUE(BookmarksHelper::AddFolder(0, i, title) != NULL);
+ }
+ }
+ for (int i = 0; i < 10; ++i) {
+ if (base::RandDouble() > 0.6) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, folder, i, title, url) != NULL);
+ } else {
+ std::wstring title = BookmarksHelper::IndexedSubfolderName(i);
+ const BookmarkNode* subfolder =
+ BookmarksHelper::AddFolder(0, folder, i, title);
+ ASSERT_TRUE(subfolder != NULL);
+ if (base::RandDouble() > 0.3) {
+ for (int j = 0; j < 10; ++j) {
+ if (base::RandDouble() > 0.6) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(j);
+ GURL url = GURL(BookmarksHelper::IndexedURL(j));
+ ASSERT_TRUE(BookmarksHelper::AddURL(
+ 0, subfolder, j, title, url) != NULL);
+ } else {
+ std::wstring title = BookmarksHelper::IndexedSubsubfolderName(j);
+ ASSERT_TRUE(BookmarksHelper::AddFolder(
+ 0, subfolder, j, title) != NULL);
+ }
+ }
+ }
+ }
+ }
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ BookmarksHelper::Remove(0, BookmarksHelper::GetBookmarkBarNode(0), 1);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+// Test Scribe ID - 371882.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ SC_DelBMFoldWithParentAndChildrenBMsAndBMFolds) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ const BookmarkNode* folder =
+ BookmarksHelper::AddFolder(0, kGenericFolderName);
+ ASSERT_TRUE(folder != NULL);
+ for (int i = 1; i < 11; ++i) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, i, title, url) != NULL);
+ }
+ const BookmarkNode* subfolder =
+ BookmarksHelper::AddFolder(0, folder, 0, kGenericSubfolderName);
+ ASSERT_TRUE(subfolder != NULL);
+ for (int i = 0; i < 30; ++i) {
+ if (base::RandDouble() > 0.2) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, subfolder, i, title, url) != NULL);
+ } else {
+ std::wstring title = BookmarksHelper::IndexedSubsubfolderName(i);
+ ASSERT_TRUE(BookmarksHelper::AddFolder(0, subfolder, i, title) != NULL);
+ }
+ }
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ BookmarksHelper::Remove(0, folder, 0);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+// Test Scribe ID - 371931.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ SC_ReverseTheOrderOfTwoBMs) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ GURL url0 = GURL(BookmarksHelper::IndexedURL(0));
+ GURL url1 = GURL(BookmarksHelper::IndexedURL(1));
+ std::wstring title0 = BookmarksHelper::IndexedURLTitle(0);
+ std::wstring title1 = BookmarksHelper::IndexedURLTitle(1);
+ const BookmarkNode* bookmark0 = BookmarksHelper::AddURL(0, 0, title0, url0);
+ const BookmarkNode* bookmark1 = BookmarksHelper::AddURL(0, 1, title1, url1);
+ ASSERT_TRUE(bookmark0 != NULL);
+ ASSERT_TRUE(bookmark1 != NULL);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ BookmarksHelper::Move(
+ 0, bookmark0, BookmarksHelper::GetBookmarkBarNode(0), 2);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+// Test Scribe ID - 371933.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ SC_ReverseTheOrderOf10BMs) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ for (int i = 0; i < 10; ++i) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, i, title, url) != NULL);
+ }
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ BookmarksHelper::ReverseChildOrder(0, BookmarksHelper::GetBookmarkBarNode(0));
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+// Test Scribe ID - 371954.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ SC_MovingBMsFromBMBarToBMFolder) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ ASSERT_TRUE(BookmarksHelper::AddURL(
+ 0, kGenericURLTitle, GURL(kGenericURL)) != NULL);
+ const BookmarkNode* folder =
+ BookmarksHelper::AddFolder(0, 1, kGenericFolderName);
+ ASSERT_TRUE(folder != NULL);
+ for (int i = 2; i < 10; ++i) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, i, title, url) != NULL);
+ }
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ int num_bookmarks_to_move =
+ BookmarksHelper::GetBookmarkBarNode(0)->child_count() - 2;
+ for (int i = 0; i < num_bookmarks_to_move; ++i) {
+ BookmarksHelper::Move(
+ 0, BookmarksHelper::GetBookmarkBarNode(0)->GetChild(2), folder, i);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+ }
+}
+
+// Test Scribe ID - 371957.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ SC_MovingBMsFromBMFoldToBMBar) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ ASSERT_TRUE(BookmarksHelper::AddURL(
+ 0, kGenericURLTitle, GURL(kGenericURL)) != NULL);
+ const BookmarkNode* folder =
+ BookmarksHelper::AddFolder(0, 1, kGenericFolderName);
+ ASSERT_TRUE(folder != NULL);
+ for (int i = 0; i < 10; ++i) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, folder, i, title, url) != NULL);
+ }
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ int num_bookmarks_to_move = folder->child_count() - 2;
+ for (int i = 0; i < num_bookmarks_to_move; ++i) {
+ BookmarksHelper::Move(
+ 0, folder->GetChild(0), BookmarksHelper::GetBookmarkBarNode(0), i);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+ }
+}
+
+// Test Scribe ID - 371961.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ SC_MovingBMsFromParentBMFoldToChildBMFold) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ const BookmarkNode* folder =
+ BookmarksHelper::AddFolder(0, kGenericFolderName);
+ ASSERT_TRUE(folder != NULL);
+ for (int i = 0; i < 3; ++i) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, folder, i, title, url) != NULL);
+ }
+ const BookmarkNode* subfolder =
+ BookmarksHelper::AddFolder(0, folder, 3, kGenericSubfolderName);
+ ASSERT_TRUE(subfolder != NULL);
+ for (int i = 0; i < 10; ++i) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i + 3);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i + 3));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, subfolder, i, title, url) != NULL);
+ }
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ for (int i = 0; i < 3; ++i) {
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ BookmarksHelper::Move(
+ 0, BookmarksHelper::GetUniqueNodeByURL(0, url), subfolder, i + 10);
+ }
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+// Test Scribe ID - 371964.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ SC_MovingBMsFromChildBMFoldToParentBMFold) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ const BookmarkNode* folder =
+ BookmarksHelper::AddFolder(0, kGenericFolderName);
+ ASSERT_TRUE(folder != NULL);
+ for (int i = 0; i < 3; ++i) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, folder, i, title, url) != NULL);
+ }
+ const BookmarkNode* subfolder =
+ BookmarksHelper::AddFolder(0, folder, 3, kGenericSubfolderName);
+ ASSERT_TRUE(subfolder != NULL);
+ for (int i = 0; i < 5; ++i) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i + 3);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i + 3));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, subfolder, i, title, url) != NULL);
+ }
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ for (int i = 0; i < 3; ++i) {
+ GURL url = GURL(BookmarksHelper::IndexedURL(i + 3));
+ BookmarksHelper::Move(
+ 0, BookmarksHelper::GetUniqueNodeByURL(0, url), folder, i + 4);
+ }
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+// Test Scribe ID - 371967.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_HoistBMs10LevelUp) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ const BookmarkNode* folder = BookmarksHelper::GetBookmarkBarNode(0);
+ const BookmarkNode* folder_L0 = NULL;
+ const BookmarkNode* folder_L10 = NULL;
+ for (int level = 0; level < 15; ++level) {
+ int num_bookmarks = base::RandInt(0, 9);
+ for (int i = 0; i < num_bookmarks; ++i) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, folder, i, title, url) != NULL);
+ }
+ std::wstring title = BookmarksHelper::IndexedFolderName(level);
+ folder = BookmarksHelper::AddFolder(
+ 0, folder, folder->child_count(), title);
+ ASSERT_TRUE(folder != NULL);
+ if (level == 0) folder_L0 = folder;
+ if (level == 10) folder_L10 = folder;
+ }
+ for (int i = 0; i < 3; ++i) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i + 10);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i + 10));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, folder_L10, i, title, url) != NULL);
+ }
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ GURL url10 = GURL(BookmarksHelper::IndexedURL(10));
+ BookmarksHelper::Move(
+ 0, BookmarksHelper::GetUniqueNodeByURL(
+ 0, url10), folder_L0, folder_L0->child_count());
+ GURL url11 = GURL(BookmarksHelper::IndexedURL(11));
+ BookmarksHelper::Move(
+ 0, BookmarksHelper::GetUniqueNodeByURL(0, url11), folder_L0, 0);
+ GURL url12 = GURL(BookmarksHelper::IndexedURL(12));
+ BookmarksHelper::Move(
+ 0, BookmarksHelper::GetUniqueNodeByURL(0, url12), folder_L0, 1);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+// Test Scribe ID - 371968.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_SinkBMs10LevelDown) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ const BookmarkNode* folder = BookmarksHelper::GetBookmarkBarNode(0);
+ const BookmarkNode* folder_L0 = NULL;
+ const BookmarkNode* folder_L10 = NULL;
+ for (int level = 0; level < 15; ++level) {
+ int num_bookmarks = base::RandInt(0, 9);
+ for (int i = 0; i < num_bookmarks; ++i) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, folder, i, title, url) != NULL);
+ }
+ std::wstring title = BookmarksHelper::IndexedFolderName(level);
+ folder = BookmarksHelper::AddFolder(
+ 0, folder, folder->child_count(), title);
+ ASSERT_TRUE(folder != NULL);
+ if (level == 0) folder_L0 = folder;
+ if (level == 10) folder_L10 = folder;
+ }
+ for (int i = 0; i < 3; ++i) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i + 10);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i + 10));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, folder_L0, 0, title, url) != NULL);
+ }
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ GURL url10 = GURL(BookmarksHelper::IndexedURL(10));
+ BookmarksHelper::Move(
+ 0,
+ BookmarksHelper::GetUniqueNodeByURL(0, url10),
+ folder_L10,
+ folder_L10->child_count());
+ GURL url11 = GURL(BookmarksHelper::IndexedURL(11));
+ BookmarksHelper::Move(
+ 0, BookmarksHelper::GetUniqueNodeByURL(0, url11), folder_L10, 0);
+ GURL url12 = GURL(BookmarksHelper::IndexedURL(12));
+ BookmarksHelper::Move(
+ 0, BookmarksHelper::GetUniqueNodeByURL(0, url12), folder_L10, 1);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+// Test Scribe ID - 371980.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ SC_SinkEmptyBMFold5LevelsDown) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ const BookmarkNode* folder = BookmarksHelper::GetBookmarkBarNode(0);
+ const BookmarkNode* folder_L5 = NULL;
+ for (int level = 0; level < 15; ++level) {
+ int num_bookmarks = base::RandInt(0, 9);
+ for (int i = 0; i < num_bookmarks; ++i) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, folder, i, title, url) != NULL);
+ }
+ std::wstring title = BookmarksHelper::IndexedFolderName(level);
+ folder = BookmarksHelper::AddFolder(
+ 0, folder, folder->child_count(), title);
+ ASSERT_TRUE(folder != NULL);
+ if (level == 5) folder_L5 = folder;
+ }
+ folder = BookmarksHelper::AddFolder(
+ 0,
+ BookmarksHelper::GetBookmarkBarNode(0)->child_count(),
+ kGenericFolderName);
+ ASSERT_TRUE(folder != NULL);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ BookmarksHelper::Move(0, folder, folder_L5, folder_L5->child_count());
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+// Test Scribe ID - 371997.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ SC_SinkNonEmptyBMFold5LevelsDown) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ const BookmarkNode* folder = BookmarksHelper::GetBookmarkBarNode(0);
+ const BookmarkNode* folder_L5 = NULL;
+ for (int level = 0; level < 6; ++level) {
+ int num_bookmarks = base::RandInt(0, 9);
+ for (int i = 0; i < num_bookmarks; ++i) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, folder, i, title, url) != NULL);
+ }
+ std::wstring title = BookmarksHelper::IndexedFolderName(level);
+ folder = BookmarksHelper::AddFolder(
+ 0, folder, folder->child_count(), title);
+ ASSERT_TRUE(folder != NULL);
+ if (level == 5) folder_L5 = folder;
+ }
+ folder = BookmarksHelper::AddFolder(
+ 0,
+ BookmarksHelper::GetBookmarkBarNode(0)->child_count(),
+ kGenericFolderName);
+ ASSERT_TRUE(folder != NULL);
+ for (int i = 0; i < 10; ++i) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, folder, i, title, url) != NULL);
+ }
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ BookmarksHelper::Move(0, folder, folder_L5, folder_L5->child_count());
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+// Test Scribe ID - 372006.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ SC_HoistFolder5LevelsUp) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ const BookmarkNode* folder = BookmarksHelper::GetBookmarkBarNode(0);
+ const BookmarkNode* folder_L5 = NULL;
+ for (int level = 0; level < 6; ++level) {
+ int num_bookmarks = base::RandInt(0, 9);
+ for (int i = 0; i < num_bookmarks; ++i) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, folder, i, title, url) != NULL);
+ }
+ std::wstring title = BookmarksHelper::IndexedFolderName(level);
+ folder = BookmarksHelper::AddFolder(
+ 0, folder, folder->child_count(), title);
+ ASSERT_TRUE(folder != NULL);
+ if (level == 5) folder_L5 = folder;
+ }
+ folder = BookmarksHelper::AddFolder(
+ 0, folder_L5, folder_L5->child_count(), kGenericFolderName);
+ ASSERT_TRUE(folder != NULL);
+ for (int i = 0; i < 10; ++i) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, folder, i, title, url) != NULL);
+ }
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ BookmarksHelper::Move(0, folder, BookmarksHelper::GetBookmarkBarNode(0),
+ BookmarksHelper::GetBookmarkBarNode(0)->child_count());
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+// Test Scribe ID - 372026.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ SC_ReverseTheOrderOfTwoBMFolders) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ for (int i = 0; i < 2; ++i) {
+ std::wstring title = BookmarksHelper::IndexedFolderName(i);
+ const BookmarkNode* folder = BookmarksHelper::AddFolder(0, i, title);
+ ASSERT_TRUE(folder != NULL);
+ for (int j = 0; j < 10; ++j) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(j);
+ GURL url = GURL(BookmarksHelper::IndexedURL(j));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, folder, j, title, url) != NULL);
+ }
+ }
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ BookmarksHelper::ReverseChildOrder(0, BookmarksHelper::GetBookmarkBarNode(0));
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+// Test Scribe ID - 372028.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ SC_ReverseTheOrderOfTenBMFolders) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ for (int i = 0; i < 10; ++i) {
+ std::wstring title = BookmarksHelper::IndexedFolderName(i);
+ const BookmarkNode* folder = BookmarksHelper::AddFolder(0, i, title);
+ ASSERT_TRUE(folder != NULL);
+ for (int j = 0; j < 10; ++j) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(1000 * i + j);
+ GURL url = GURL(BookmarksHelper::IndexedURL(j));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, folder, j, title, url) != NULL);
+ }
+ }
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ BookmarksHelper::ReverseChildOrder(0, BookmarksHelper::GetBookmarkBarNode(0));
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+// Test Scribe ID - 373379.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ MC_BiDirectionalPushAddingBM) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ DisableVerifier();
+ for (int i = 0; i < 2; ++i) {
+ std::wstring title0 = BookmarksHelper::IndexedURLTitle(2*i);
+ GURL url0 = GURL(BookmarksHelper::IndexedURL(2*i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, title0, url0) != NULL);
+ std::wstring title1 = BookmarksHelper::IndexedURLTitle(2*i+1);
+ GURL url1 = GURL(BookmarksHelper::IndexedURL(2*i+1));
+ ASSERT_TRUE(BookmarksHelper::AddURL(1, title1, url1) != NULL);
+ }
+ ASSERT_TRUE(AwaitQuiescence());
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
+ ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(0));
+}
+
+// Test Scribe ID - 373503.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ MC_BiDirectionalPush_AddingSameBMs) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ // Note: When a racy commit is done with identical bookmarks, it is possible
+ // for duplicates to exist after sync completes. See http://crbug.com/19769.
+ DisableVerifier();
+ for (int i = 0; i < 2; ++i) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, title, url) != NULL);
+ ASSERT_TRUE(BookmarksHelper::AddURL(1, title, url) != NULL);
+ }
+ ASSERT_TRUE(AwaitQuiescence());
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
+}
+
+// Test Scribe ID - 373506.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ MC_BootStrapEmptyStateEverywhere) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(AwaitQuiescence());
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+// Test Scribe ID - 373505.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ MC_Merge_CaseInsensitivity_InNames) {
+ ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
+ DisableVerifier();
+
+ const BookmarkNode* folder0 = BookmarksHelper::AddFolder(0, L"Folder");
+ ASSERT_TRUE(folder0 != NULL);
+ ASSERT_TRUE(BookmarksHelper::AddURL(
+ 0, folder0, 0, L"Bookmark 0", GURL(kGenericURL)) != NULL);
+ ASSERT_TRUE(BookmarksHelper::AddURL(
+ 0, folder0, 1, L"Bookmark 1", GURL(kGenericURL)) != NULL);
+ ASSERT_TRUE(BookmarksHelper::AddURL(
+ 0, folder0, 2, L"Bookmark 2", GURL(kGenericURL)) != NULL);
+
+ const BookmarkNode* folder1 = BookmarksHelper::AddFolder(1, L"fOlDeR");
+ ASSERT_TRUE(folder1 != NULL);
+ ASSERT_TRUE(BookmarksHelper::AddURL(
+ 1, folder1, 0, L"bOoKmArK 0", GURL(kGenericURL)) != NULL);
+ ASSERT_TRUE(BookmarksHelper::AddURL(
+ 1, folder1, 1, L"BooKMarK 1", GURL(kGenericURL)) != NULL);
+ ASSERT_TRUE(BookmarksHelper::AddURL(
+ 1, folder1, 2, L"bOOKMARK 2", GURL(kGenericURL)) != NULL);
+
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(AwaitQuiescence());
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
+ ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(0));
+}
+
+// Test Scribe ID - 373508.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ MC_SimpleMergeOfDifferentBMModels) {
+ ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
+ DisableVerifier();
+
+ for (int i = 0; i < 3; ++i) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, i, title, url) != NULL);
+ ASSERT_TRUE(BookmarksHelper::AddURL(1, i, title, url) != NULL);
+ }
+
+ for (int i = 3; i < 10; ++i) {
+ std::wstring title0 = BookmarksHelper::IndexedURLTitle(i);
+ GURL url0 = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, i, title0, url0) != NULL);
+ std::wstring title1 = BookmarksHelper::IndexedURLTitle(i+7);
+ GURL url1 = GURL(BookmarksHelper::IndexedURL(i+7));
+ ASSERT_TRUE(BookmarksHelper::AddURL(1, i, title1, url1) != NULL);
+ }
+
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(AwaitQuiescence());
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
+ ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(0));
+}
+
+// Test Scribe ID - 386586.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ MC_MergeSimpleBMHierarchyUnderBMBar) {
+ ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
+ DisableVerifier();
+
+ for (int i = 0; i < 3; ++i) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, i, title, url) != NULL);
+ ASSERT_TRUE(BookmarksHelper::AddURL(1, i, title, url) != NULL);
+ }
+
+ for (int i = 3; i < 10; ++i) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(1, i, title, url) != NULL);
+ }
+
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(AwaitQuiescence());
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
+ ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(0));
+}
+
+// Test Scribe ID - 386589.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ MC_MergeSimpleBMHierarchyEqualSetsUnderBMBar) {
+ ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
+ DisableVerifier();
+
+ for (int i = 0; i < 3; ++i) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, i, title, url) != NULL);
+ ASSERT_TRUE(BookmarksHelper::AddURL(1, i, title, url) != NULL);
+ }
+
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(AwaitQuiescence());
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
+ ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(0));
+}
+
+// Test Scribe ID - 373504 - Merge bookmark folders with different bookmarks.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ MC_MergeBMFoldersWithDifferentBMs) {
+ ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
+ DisableVerifier();
+
+ const BookmarkNode* folder0 =
+ BookmarksHelper::AddFolder(0, kGenericFolderName);
+ ASSERT_TRUE(folder0 != NULL);
+ const BookmarkNode* folder1 =
+ BookmarksHelper::AddFolder(1, kGenericFolderName);
+ ASSERT_TRUE(folder1 != NULL);
+ for (int i = 0; i < 2; ++i) {
+ std::wstring title0 = BookmarksHelper::IndexedURLTitle(2*i);
+ GURL url0 = GURL(BookmarksHelper::IndexedURL(2*i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, folder0, i, title0, url0) != NULL);
+ std::wstring title1 = BookmarksHelper::IndexedURLTitle(2*i+1);
+ GURL url1 = GURL(BookmarksHelper::IndexedURL(2*i+1));
+ ASSERT_TRUE(BookmarksHelper::AddURL(1, folder1, i, title1, url1) != NULL);
+ }
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(AwaitQuiescence());
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
+ ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(0));
+}
+
+// Test Scribe ID - 373509 - Merge moderately complex bookmark models.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ MC_MergeDifferentBMModelsModeratelyComplex) {
+ ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
+ DisableVerifier();
+
+ for (int i = 0; i < 25; ++i) {
+ std::wstring title0 = BookmarksHelper::IndexedURLTitle(i);
+ GURL url0 = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, i, title0, url0) != NULL);
+ std::wstring title1 = BookmarksHelper::IndexedURLTitle(i+50);
+ GURL url1 = GURL(BookmarksHelper::IndexedURL(i+50));
+ ASSERT_TRUE(BookmarksHelper::AddURL(1, i, title1, url1) != NULL);
+ }
+ for (int i = 25; i < 30; ++i) {
+ std::wstring title0 = BookmarksHelper::IndexedFolderName(i);
+ const BookmarkNode* folder0 = BookmarksHelper::AddFolder(0, i, title0);
+ ASSERT_TRUE(folder0 != NULL);
+ std::wstring title1 = BookmarksHelper::IndexedFolderName(i+50);
+ const BookmarkNode* folder1 = BookmarksHelper::AddFolder(1, i, title1);
+ ASSERT_TRUE(folder1 != NULL);
+ for (int j = 0; j < 5; ++j) {
+ std::wstring title0 = BookmarksHelper::IndexedURLTitle(i+5*j);
+ GURL url0 = GURL(BookmarksHelper::IndexedURL(i+5*j));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, folder0, j, title0, url0) != NULL);
+ std::wstring title1 = BookmarksHelper::IndexedURLTitle(i+5*j+50);
+ GURL url1 = GURL(BookmarksHelper::IndexedURL(i+5*j+50));
+ ASSERT_TRUE(BookmarksHelper::AddURL(1, folder1, j, title1, url1) != NULL);
+ }
+ }
+ for (int i = 100; i < 125; ++i) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, title, url) != NULL);
+ ASSERT_TRUE(BookmarksHelper::AddURL(1, title, url) != NULL);
+ }
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(AwaitQuiescence());
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
+ ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(0));
+}
+
+// TCM ID - 3675271 - Merge simple bookmark subset under bookmark folder.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ MC_MergeSimpleBMHierarchySubsetUnderBMFolder) {
+ ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
+ DisableVerifier();
+
+ for (int i = 0; i < 2; ++i) {
+ const BookmarkNode* folder =
+ BookmarksHelper::AddFolder(i, kGenericFolderName);
+ ASSERT_TRUE(folder != NULL);
+ for (int j = 0; j < 4; ++j) {
+ if (base::RandDouble() < 0.5) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(j);
+ GURL url = GURL(BookmarksHelper::IndexedURL(j));
+ ASSERT_TRUE(BookmarksHelper::AddURL(i, folder, j, title, url) != NULL);
+ } else {
+ std::wstring title = BookmarksHelper::IndexedFolderName(j);
+ ASSERT_TRUE(BookmarksHelper::AddFolder(i, folder, j, title) != NULL);
+ }
+ }
+ }
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(AwaitQuiescence());
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
+ ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(0));
+}
+
+// TCM ID - 3727284 - Merge subsets of bookmark under bookmark bar.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ MC_MergeSimpleBMHierarchySubsetUnderBookmarkBar) {
+ ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
+ DisableVerifier();
+
+ for (int i = 0; i < 4; ++i) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, i, title, url) != NULL);
+ }
+
+ for (int j = 0; j < 2; ++j) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(j);
+ GURL url = GURL(BookmarksHelper::IndexedURL(j));
+ ASSERT_TRUE(BookmarksHelper::AddURL(1, j, title, url) != NULL);
+ }
+
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(AwaitQuiescence());
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
+ ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(0));
+ ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(1));
+}
+
+// TCM ID - 3659294 - Merge simple bookmark hierarchy under bookmark folder.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ MC_Merge_SimpleBMHierarchy_Under_BMFolder) {
+ ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
+ DisableVerifier();
+
+ const BookmarkNode* folder0 =
+ BookmarksHelper::AddFolder(0, 0, kGenericFolderName);
+ ASSERT_TRUE(folder0 != NULL);
+ ASSERT_TRUE(BookmarksHelper::AddURL(
+ 0, folder0, 0, BookmarksHelper::IndexedURLTitle(1),
+ GURL(BookmarksHelper::IndexedURL(1))) != NULL);
+ ASSERT_TRUE(BookmarksHelper::AddFolder(
+ 0, folder0, 1, BookmarksHelper::IndexedSubfolderName(2)) != NULL);
+ ASSERT_TRUE(BookmarksHelper::AddURL(
+ 0, folder0, 2, BookmarksHelper::IndexedURLTitle(3),
+ GURL(BookmarksHelper::IndexedURL(3))) != NULL);
+ ASSERT_TRUE(BookmarksHelper::AddFolder(
+ 0, folder0, 3, BookmarksHelper::IndexedSubfolderName(4)) != NULL);
+
+ const BookmarkNode* folder1 =
+ BookmarksHelper::AddFolder(1, 0, kGenericFolderName);
+ ASSERT_TRUE(folder1 != NULL);
+ ASSERT_TRUE(BookmarksHelper::AddFolder(
+ 1, folder1, 0, BookmarksHelper::IndexedSubfolderName(0)) != NULL);
+ ASSERT_TRUE(BookmarksHelper::AddFolder(
+ 1, folder1, 1, BookmarksHelper::IndexedSubfolderName(2)) != NULL);
+ ASSERT_TRUE(BookmarksHelper::AddURL(
+ 1, folder1, 2, BookmarksHelper::IndexedURLTitle(3),
+ GURL(BookmarksHelper::IndexedURL(3))) != NULL);
+ ASSERT_TRUE(BookmarksHelper::AddFolder(
+ 1, folder1, 3, BookmarksHelper::IndexedSubfolderName(5)) != NULL);
+ ASSERT_TRUE(BookmarksHelper::AddURL(
+ 1, folder1, 4, BookmarksHelper::IndexedURLTitle(1),
+ GURL(BookmarksHelper::IndexedURL(1))) != NULL);
+
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(AwaitQuiescence());
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
+ ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(0));
+}
+
+// TCM ID - 3711273 - Merge disjoint sets of bookmark hierarchy under bookmark
+// folder.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ MC_Merge_SimpleBMHierarchy_DisjointSets_Under_BMFolder) {
+ ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
+ DisableVerifier();
+
+ const BookmarkNode* folder0 =
+ BookmarksHelper::AddFolder(0, 0, kGenericFolderName);
+ ASSERT_TRUE(folder0 != NULL);
+ ASSERT_TRUE(BookmarksHelper::AddURL(
+ 0, folder0, 0, BookmarksHelper::IndexedURLTitle(1),
+ GURL(BookmarksHelper::IndexedURL(1))) != NULL);
+ ASSERT_TRUE(BookmarksHelper::AddFolder(
+ 0, folder0, 1, BookmarksHelper::IndexedSubfolderName(2)) != NULL);
+ ASSERT_TRUE(BookmarksHelper::AddURL(
+ 0, folder0, 2, BookmarksHelper::IndexedURLTitle(3),
+ GURL(BookmarksHelper::IndexedURL(3))) != NULL);
+ ASSERT_TRUE(BookmarksHelper::AddFolder(
+ 0, folder0, 3, BookmarksHelper::IndexedSubfolderName(4)) != NULL);
+
+ const BookmarkNode* folder1 =
+ BookmarksHelper::AddFolder(1, 0, kGenericFolderName);
+ ASSERT_TRUE(folder1 != NULL);
+ ASSERT_TRUE(BookmarksHelper::AddFolder(
+ 1, folder1, 0, BookmarksHelper::IndexedSubfolderName(5)) != NULL);
+ ASSERT_TRUE(BookmarksHelper::AddFolder(
+ 1, folder1, 1, BookmarksHelper::IndexedSubfolderName(6)) != NULL);
+ ASSERT_TRUE(BookmarksHelper::AddURL(
+ 1, folder1, 2, BookmarksHelper::IndexedURLTitle(7),
+ GURL(BookmarksHelper::IndexedURL(7))) != NULL);
+ ASSERT_TRUE(BookmarksHelper::AddURL(
+ 1, folder1, 3, BookmarksHelper::IndexedURLTitle(8),
+ GURL(BookmarksHelper::IndexedURL(8))) != NULL);
+
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(AwaitQuiescence());
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
+ ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(0));
+}
+
+// TCM ID - 3639296 - Merge disjoint sets of bookmark hierarchy under bookmark
+// bar.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ MC_Merge_SimpleBMHierarchy_DisjointSets_Under_BookmarkBar) {
+ ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
+ DisableVerifier();
+
+ for (int i = 0; i < 3; ++i) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i+1);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i+1));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, i, title, url) != NULL);
+ }
+
+ for (int j = 0; j < 3; ++j) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(j+4);
+ GURL url = GURL(BookmarksHelper::IndexedURL(j+4));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, j, title, url) != NULL);
+ }
+
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(AwaitQuiescence());
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
+ ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(0));
+}
+
+// TCM ID - 3616282 - Merge sets of duplicate bookmarks under bookmark bar.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ MC_Merge_SimpleBMHierarchy_DuplicateBMs_Under_BMBar) {
+ ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
+ DisableVerifier();
+
+ // Let's add duplicate set of bookmark {1,2,2,3,3,3,4,4,4,4} to client0.
+ int node_index = 0;
+ for (int i = 1; i < 5 ; ++i) {
+ for (int j = 0; j < i; ++j) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, node_index, title, url) != NULL);
+ ++node_index;
+ }
+ }
+ // Let's add a set of bookmarks {1,2,3,4} to client1.
+ for (int i = 0; i < 4; ++i) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i+1);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i+1));
+ ASSERT_TRUE(BookmarksHelper::AddURL(1, i, title, url) != NULL);
+ }
+
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(AwaitQuiescence());
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
+
+ for (int i = 1; i < 5 ; ++i) {
+ ASSERT_TRUE(BookmarksHelper::CountBookmarksWithTitlesMatching(
+ 1, BookmarksHelper::IndexedURLTitle(i)) == i);
+ }
+}
+
+// TCM ID - 6593872.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, DisableBookmarks) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ ASSERT_TRUE(GetClient(1)->DisableSyncForDatatype(syncable::BOOKMARKS));
+ ASSERT_TRUE(BookmarksHelper::AddFolder(1, kGenericFolderName) != NULL);
+ ASSERT_TRUE(AwaitQuiescence());
+ ASSERT_FALSE(BookmarksHelper::AllModelsMatch());
+
+ ASSERT_TRUE(GetClient(1)->EnableSyncForDatatype(syncable::BOOKMARKS));
+ ASSERT_TRUE(AwaitQuiescence());
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
+}
+
+// TCM ID - 7343544.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, DisableSync) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ ASSERT_TRUE(GetClient(1)->DisableSyncForAllDatatypes());
+ ASSERT_TRUE(BookmarksHelper::AddFolder(
+ 0, BookmarksHelper::IndexedFolderName(0)) != NULL);
+ ASSERT_TRUE(GetClient(0)->AwaitSyncCycleCompletion("Added a folder."));
+ ASSERT_FALSE(BookmarksHelper::AllModelsMatch());
+
+ ASSERT_TRUE(BookmarksHelper::AddFolder(
+ 1, BookmarksHelper::IndexedFolderName(1)) != NULL);
+ ASSERT_FALSE(BookmarksHelper::AllModelsMatch());
+
+ ASSERT_TRUE(GetClient(1)->EnableSyncForAllDatatypes());
+ ASSERT_TRUE(AwaitQuiescence());
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
+}
+
+// TCM ID - 3662298 - Test adding duplicate folder - Both with different BMs
+// underneath.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, MC_DuplicateFolders) {
+ ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
+ DisableVerifier();
+
+ const BookmarkNode* folder0 =
+ BookmarksHelper::AddFolder(0, kGenericFolderName);
+ ASSERT_TRUE(folder0 != NULL);
+ const BookmarkNode* folder1 =
+ BookmarksHelper::AddFolder(1, kGenericFolderName);
+ ASSERT_TRUE(folder1 != NULL);
+ for (int i = 0; i < 5; ++i) {
+ std::wstring title0 = BookmarksHelper::IndexedURLTitle(i);
+ GURL url0 = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, folder0, i, title0, url0) != NULL);
+ std::wstring title1 = BookmarksHelper::IndexedURLTitle(i+5);
+ GURL url1 = GURL(BookmarksHelper::IndexedURL(i+5));
+ ASSERT_TRUE(BookmarksHelper::AddURL(1, folder1, i, title1, url1) != NULL);
+ }
+
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(AwaitQuiescence());
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
+ ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(0));
+}
+
+// TCM ID - 3719307 - Test a scenario of updating the name of the same bookmark
+// from two clients at the same time.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ MC_BookmarkNameChangeConflict) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+
+ const BookmarkNode* folder0 =
+ BookmarksHelper::AddFolder(0, kGenericFolderName);
+ ASSERT_TRUE(folder0 != NULL);
+ for (int i = 0; i < 3; ++i) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, folder0, i, title, url) != NULL);
+ }
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+ ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(0));
+
+ DisableVerifier();
+ GURL url(BookmarksHelper::IndexedURL(0));
+ BookmarksHelper::SetTitle(
+ 0, BookmarksHelper::GetUniqueNodeByURL(0, url), L"Title++");
+ BookmarksHelper::SetTitle(
+ 1, BookmarksHelper::GetUniqueNodeByURL(1, url), L"Title--");
+
+ ASSERT_TRUE(AwaitQuiescence());
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
+ ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(0));
+}
+
+// TCM ID - 3672299 - Test a scenario of updating the URL of the same bookmark
+// from two clients at the same time.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ MC_BookmarkURLChangeConflict) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+
+ const BookmarkNode* folder0 =
+ BookmarksHelper::AddFolder(0, kGenericFolderName);
+ ASSERT_TRUE(folder0 != NULL);
+ for (int i = 0; i < 3; ++i) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, folder0, i, title, url) != NULL);
+ }
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+ ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(0));
+
+ DisableVerifier();
+ GURL url(BookmarksHelper::IndexedURL(0));
+ ASSERT_TRUE(BookmarksHelper::SetURL(0,
+ BookmarksHelper::GetUniqueNodeByURL(0, url),
+ GURL("http://www.google.com/00")));
+ ASSERT_TRUE(BookmarksHelper::SetURL(1,
+ BookmarksHelper::GetUniqueNodeByURL(1, url),
+ GURL("http://www.google.com/11")));
+
+ ASSERT_TRUE(AwaitQuiescence());
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
+ ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(0));
+}
+
+// TCM ID - 3699290 - Test a scenario of updating the BM Folder name from two
+// clients at the same time.
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ MC_FolderNameChangeConflict) {
+ ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
+ DisableVerifier();
+
+ const BookmarkNode* folderA[2];
+ const BookmarkNode* folderB[2];
+ const BookmarkNode* folderC[2];
+
+ // Create empty folder A on both clients.
+ folderA[0] =
+ BookmarksHelper::AddFolder(0, BookmarksHelper::IndexedFolderName(0));
+ ASSERT_TRUE(folderA[0] != NULL);
+ folderA[1] =
+ BookmarksHelper::AddFolder(1, BookmarksHelper::IndexedFolderName(0));
+ ASSERT_TRUE(folderA[1] != NULL);
+
+ // Create folder B with bookmarks on both clients.
+ folderB[0] =
+ BookmarksHelper::AddFolder(0, BookmarksHelper::IndexedFolderName(1));
+ ASSERT_TRUE(folderB[0] != NULL);
+ folderB[1] =
+ BookmarksHelper::AddFolder(1, BookmarksHelper::IndexedFolderName(1));
+ ASSERT_TRUE(folderB[1] != NULL);
+ for (int i = 0; i < 3; ++i) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(i);
+ GURL url = GURL(BookmarksHelper::IndexedURL(i));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, folderB[0], i, title, url) != NULL);
+ }
+
+ // Create folder C with bookmarks and subfolders on both clients.
+ folderC[0] =
+ BookmarksHelper::AddFolder(0, BookmarksHelper::IndexedFolderName(2));
+ ASSERT_TRUE(folderC[0] != NULL);
+ folderC[1] =
+ BookmarksHelper::AddFolder(1, BookmarksHelper::IndexedFolderName(2));
+ ASSERT_TRUE(folderC[1] != NULL);
+ for (int i = 0; i < 3; ++i) {
+ std::wstring folder_name = BookmarksHelper::IndexedSubfolderName(i);
+ const BookmarkNode* subfolder =
+ BookmarksHelper::AddFolder(0, folderC[0], i, folder_name);
+ ASSERT_TRUE(subfolder != NULL);
+ for (int j = 0; j < 3; ++j) {
+ std::wstring title = BookmarksHelper::IndexedURLTitle(j);
+ GURL url = GURL(BookmarksHelper::IndexedURL(j));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, subfolder, j, title, url) != NULL);
+ }
+ }
+
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(AwaitQuiescence());
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
+ ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(0));
+
+ // Simultaneously rename folder A on both clients.
+ BookmarksHelper::SetTitle(0, folderA[0], L"Folder A++");
+ BookmarksHelper::SetTitle(1, folderA[1], L"Folder A--");
+ ASSERT_TRUE(AwaitQuiescence());
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
+ ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(0));
+
+ // Simultaneously rename folder B on both clients.
+ BookmarksHelper::SetTitle(0, folderB[0], L"Folder B++");
+ BookmarksHelper::SetTitle(1, folderB[1], L"Folder B--");
+ ASSERT_TRUE(AwaitQuiescence());
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
+ ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(0));
+
+ // Simultaneously rename folder C on both clients.
+ BookmarksHelper::SetTitle(0, folderC[0], L"Folder C++");
+ BookmarksHelper::SetTitle(1, folderC[1], L"Folder C--");
+ ASSERT_TRUE(AwaitQuiescence());
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
+ ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(0));
+}
+
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ SingleClientEnabledEncryption) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ ASSERT_TRUE(BookmarksHelper::EnableEncryption(0));
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::IsEncrypted(0));
+ ASSERT_TRUE(BookmarksHelper::IsEncrypted(1));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ SingleClientEnabledEncryptionAndChanged) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ ASSERT_TRUE(BookmarksHelper::EnableEncryption(0));
+ ASSERT_TRUE(BookmarksHelper::AddURL(
+ 0,
+ BookmarksHelper::IndexedURLTitle(0),
+ GURL(BookmarksHelper::IndexedURL(0))) != NULL);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::IsEncrypted(0));
+ ASSERT_TRUE(BookmarksHelper::IsEncrypted(1));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ BothClientsEnabledEncryption) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ ASSERT_TRUE(BookmarksHelper::EnableEncryption(0));
+ ASSERT_TRUE(BookmarksHelper::EnableEncryption(1));
+ ASSERT_TRUE(AwaitQuiescence());
+ ASSERT_TRUE(BookmarksHelper::IsEncrypted(0));
+ ASSERT_TRUE(BookmarksHelper::IsEncrypted(1));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ SingleClientEnabledEncryptionBothChanged) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ ASSERT_TRUE(BookmarksHelper::EnableEncryption(0));
+ ASSERT_TRUE(AwaitQuiescence());
+ ASSERT_TRUE(BookmarksHelper::IsEncrypted(0));
+ ASSERT_TRUE(BookmarksHelper::IsEncrypted(1));
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, BookmarksHelper::IndexedURLTitle(0),
+ GURL(BookmarksHelper::IndexedURL(0))) != NULL);
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, BookmarksHelper::IndexedURLTitle(1),
+ GURL(BookmarksHelper::IndexedURL(1))) != NULL);
+ ASSERT_TRUE(AwaitQuiescence());
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+ ASSERT_TRUE(BookmarksHelper::IsEncrypted(0));
+ ASSERT_TRUE(BookmarksHelper::IsEncrypted(1));
+}
+
+IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
+ SingleClientEnabledEncryptionAndChangedMultipleTimes) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, BookmarksHelper::IndexedURLTitle(0),
+ GURL(BookmarksHelper::IndexedURL(0))) != NULL);
+ ASSERT_TRUE(BookmarksHelper::EnableEncryption(0));
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::IsEncrypted(0));
+ ASSERT_TRUE(BookmarksHelper::IsEncrypted(1));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+
+ ASSERT_TRUE(BookmarksHelper::AddURL(0, BookmarksHelper::IndexedURLTitle(1),
+ GURL(BookmarksHelper::IndexedURL(1))) != NULL);
+ ASSERT_TRUE(BookmarksHelper::AddFolder(
+ 0, BookmarksHelper::IndexedFolderName(0)) != NULL);
+ ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
+}
+
+// TODO(zea): Add first time sync functionality testing. In particular, when
+// there are encrypted types in first time sync we need to ensure we don't
+// duplicate bookmarks.

Powered by Google App Engine
This is Rietveld 408576698