Index: chrome/test/live_sync/single_client_bookmarks_sync_test.cc |
diff --git a/chrome/test/live_sync/single_client_bookmarks_sync_test.cc b/chrome/test/live_sync/single_client_bookmarks_sync_test.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b0c63207bc8fdcd6707cefa33addfd1d40e8ce5b |
--- /dev/null |
+++ b/chrome/test/live_sync/single_client_bookmarks_sync_test.cc |
@@ -0,0 +1,145 @@ |
+// 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 "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" |
+ |
+class SingleClientBookmarksSyncTest : public LiveSyncTest { |
+ public: |
+ SingleClientBookmarksSyncTest() : LiveSyncTest(SINGLE_CLIENT) {} |
+ virtual ~SingleClientBookmarksSyncTest() {} |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(SingleClientBookmarksSyncTest); |
+}; |
+ |
+IN_PROC_BROWSER_TEST_F(SingleClientBookmarksSyncTest, OfflineToOnline) { |
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; |
+ |
+ DisableNetwork(GetProfile(0)); |
+ const BookmarkNode* node = BookmarksHelper::AddFolder(0, L"title"); |
+ BookmarksHelper::SetTitle(0, node, L"new_title"); |
+ ASSERT_FALSE(GetClient(0)->AwaitSyncCycleCompletion("Offline state change.")); |
+ ASSERT_EQ(ProfileSyncService::Status::OFFLINE_UNSYNCED, |
+ GetClient(0)->GetStatus().summary); |
+ |
+ EnableNetwork(GetProfile(0)); |
+ ASSERT_TRUE(GetClient(0)->AwaitSyncCycleCompletion("Commit changes.")); |
+ ASSERT_EQ(ProfileSyncService::Status::READY, |
+ GetClient(0)->GetStatus().summary); |
+ ASSERT_TRUE(BookmarksHelper::ModelMatchesVerifier(0)); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(SingleClientBookmarksSyncTest, Sanity) { |
+ ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; |
+ |
+ // Starting state: |
+ // other_node |
+ // -> top |
+ // -> tier1_a |
+ // -> http://mail.google.com "tier1_a_url0" |
+ // -> http://www.pandora.com "tier1_a_url1" |
+ // -> http://www.facebook.com "tier1_a_url2" |
+ // -> tier1_b |
+ // -> http://www.nhl.com "tier1_b_url0" |
+ const BookmarkNode* top = BookmarksHelper::AddFolder( |
+ 0, BookmarksHelper::GetOtherNode(0), 0, L"top"); |
+ const BookmarkNode* tier1_a = BookmarksHelper::AddFolder( |
+ 0, top, 0, L"tier1_a"); |
+ const BookmarkNode* tier1_b = BookmarksHelper::AddFolder( |
+ 0, top, 1, L"tier1_b"); |
+ const BookmarkNode* tier1_a_url0 = BookmarksHelper::AddURL( |
+ 0, tier1_a, 0, L"tier1_a_url0", GURL("http://mail.google.com")); |
+ const BookmarkNode* tier1_a_url1 = BookmarksHelper::AddURL( |
+ 0, tier1_a, 1, L"tier1_a_url1", GURL("http://www.pandora.com")); |
+ const BookmarkNode* tier1_a_url2 = BookmarksHelper::AddURL( |
+ 0, tier1_a, 2, L"tier1_a_url2", GURL("http://www.facebook.com")); |
+ const BookmarkNode* tier1_b_url0 = BookmarksHelper::AddURL( |
+ 0, tier1_b, 0, L"tier1_b_url0", GURL("http://www.nhl.com")); |
+ |
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; |
+ ASSERT_TRUE(GetClient(0)->AwaitSyncCycleCompletion( |
+ "Waiting for initial sync completed.")); |
+ ASSERT_TRUE(BookmarksHelper::ModelMatchesVerifier(0)); |
+ |
+ // Ultimately we want to end up with the following model; but this test is |
+ // more about the journey than the destination. |
+ // |
+ // bookmark_bar |
+ // -> CNN (www.cnn.com) |
+ // -> tier1_a |
+ // -> tier1_a_url2 (www.facebook.com) |
+ // -> tier1_a_url1 (www.pandora.com) |
+ // -> Porsche (www.porsche.com) |
+ // -> Bank of America (www.bankofamerica.com) |
+ // -> Seattle Bubble |
+ // other_node |
+ // -> top |
+ // -> tier1_b |
+ // -> Wired News (www.wired.com) |
+ // -> tier2_b |
+ // -> tier1_b_url0 |
+ // -> tier3_b |
+ // -> Toronto Maple Leafs (mapleleafs.nhl.com) |
+ // -> Wynn (www.wynnlasvegas.com) |
+ // -> tier1_a_url0 |
+ const BookmarkNode* bar = BookmarksHelper::GetBookmarkBarNode(0); |
+ const BookmarkNode* cnn = BookmarksHelper::AddURL(0, bar, 0, L"CNN", |
+ GURL("http://www.cnn.com")); |
+ ASSERT_TRUE(cnn != NULL); |
+ BookmarksHelper::Move(0, tier1_a, bar, 1); |
+ ASSERT_TRUE(GetClient(0)->AwaitSyncCycleCompletion("Bookmark moved.")); |
+ ASSERT_TRUE(BookmarksHelper::ModelMatchesVerifier(0)); |
+ |
+ const BookmarkNode* porsche = BookmarksHelper::AddURL(0, bar, 2, L"Porsche", |
+ GURL("http://www.porsche.com")); |
+ // Rearrange stuff in tier1_a. |
+ ASSERT_EQ(tier1_a, tier1_a_url2->parent()); |
+ ASSERT_EQ(tier1_a, tier1_a_url1->parent()); |
+ BookmarksHelper::Move(0, tier1_a_url2, tier1_a, 0); |
+ BookmarksHelper::Move(0, tier1_a_url1, tier1_a, 2); |
+ ASSERT_TRUE(GetClient(0)->AwaitSyncCycleCompletion( |
+ "Rearrange stuff in tier1_a")); |
+ ASSERT_TRUE(BookmarksHelper::ModelMatchesVerifier(0)); |
+ |
+ ASSERT_EQ(1, tier1_a_url0->parent()->GetIndexOf(tier1_a_url0)); |
+ BookmarksHelper::Move(0, tier1_a_url0, bar, bar->child_count()); |
+ const BookmarkNode* boa = BookmarksHelper::AddURL(0, bar, bar->child_count(), |
+ L"Bank of America", GURL("https://www.bankofamerica.com")); |
+ ASSERT_TRUE(boa != NULL); |
+ BookmarksHelper::Move(0, tier1_a_url0, top, top->child_count()); |
+ const BookmarkNode* bubble = BookmarksHelper::AddURL( |
+ 0, bar, bar->child_count(), L"Seattle Bubble", |
+ GURL("http://seattlebubble.com")); |
+ ASSERT_TRUE(bubble != NULL); |
+ const BookmarkNode* wired = BookmarksHelper::AddURL(0, bar, 2, L"Wired News", |
+ GURL("http://www.wired.com")); |
+ const BookmarkNode* tier2_b = BookmarksHelper::AddFolder( |
+ 0, tier1_b, 0, L"tier2_b"); |
+ BookmarksHelper::Move(0, tier1_b_url0, tier2_b, 0); |
+ BookmarksHelper::Move(0, porsche, bar, 0); |
+ BookmarksHelper::SetTitle(0, wired, L"News Wired"); |
+ BookmarksHelper::SetTitle(0, porsche, L"ICanHazPorsche?"); |
+ ASSERT_TRUE(GetClient(0)->AwaitSyncCycleCompletion("Change title.")); |
+ ASSERT_TRUE(BookmarksHelper::ModelMatchesVerifier(0)); |
+ |
+ ASSERT_EQ(tier1_a_url0->id(), top->GetChild(top->child_count() - 1)->id()); |
+ BookmarksHelper::Remove(0, top, top->child_count() - 1); |
+ BookmarksHelper::Move(0, wired, tier1_b, 0); |
+ BookmarksHelper::Move(0, porsche, bar, 3); |
+ const BookmarkNode* tier3_b = BookmarksHelper::AddFolder( |
+ 0, tier2_b, 1, L"tier3_b"); |
+ const BookmarkNode* leafs = BookmarksHelper::AddURL( |
+ 0, tier1_a, 0, L"Toronto Maple Leafs", GURL("http://mapleleafs.nhl.com")); |
+ const BookmarkNode* wynn = BookmarksHelper::AddURL(0, bar, 1, L"Wynn", |
+ GURL("http://www.wynnlasvegas.com")); |
+ |
+ BookmarksHelper::Move(0, wynn, tier3_b, 0); |
+ BookmarksHelper::Move(0, leafs, tier3_b, 0); |
+ ASSERT_TRUE(GetClient(0)->AwaitSyncCycleCompletion( |
+ "Move after addition of bookmarks.")); |
+ ASSERT_TRUE(BookmarksHelper::ModelMatchesVerifier(0)); |
+} |