Index: chrome/browser/sync/profile_sync_service_bookmark_unittest.cc |
diff --git a/chrome/browser/sync/profile_sync_service_bookmark_unittest.cc b/chrome/browser/sync/profile_sync_service_bookmark_unittest.cc |
index b678b6e43bfc3f6204eb901063d83483bb2cd832..3f8f10350df1878975ca62c642975acbc2a23098 100644 |
--- a/chrome/browser/sync/profile_sync_service_bookmark_unittest.cc |
+++ b/chrome/browser/sync/profile_sync_service_bookmark_unittest.cc |
@@ -43,7 +43,7 @@ |
#include "sync/internal_api/public/write_node.h" |
#include "sync/internal_api/public/write_transaction.h" |
#include "sync/internal_api/syncapi_internal.h" |
-#include "sync/syncable/mutable_entry.h" |
+#include "sync/syncable/mutable_entry.h" // TODO(tim): Remove. Bug 131130. |
#include "testing/gmock/include/gmock/gmock.h" |
#include "testing/gtest/include/gtest/gtest.h" |
@@ -374,17 +374,16 @@ |
// the sync model directly after ModelAssociation. This function can be |
// invoked prior to model association to set up first-time sync model |
// association scenarios. |
- int64 AddBookmarkToShare(syncer::WriteTransaction* trans, |
+ int64 AddBookmarkToShare(syncer::WriteTransaction *trans, |
int64 parent_id, |
- const std::string& title, |
- const std::string& url) { |
+ std::string title) { |
EXPECT_FALSE(model_associator_); |
syncer::ReadNode parent(trans); |
EXPECT_EQ(BaseNode::INIT_OK, parent.InitByIdLookup(parent_id)); |
sync_pb::BookmarkSpecifics specifics; |
- specifics.set_url(url); |
+ specifics.set_url("http://www.google.com/search?q=" + title); |
specifics.set_title(title); |
syncer::WriteNode node(trans); |
@@ -789,12 +788,12 @@ |
{ |
syncer::WriteTransaction trans(FROM_HERE, test_user_share_.user_share()); |
for (int i = 0; i < kNumFolders; ++i) { |
- int64 folder_id = |
- AddFolderToShare(&trans, base::StringPrintf("folder%05d", i)); |
+ int64 folder_id = AddFolderToShare(&trans, |
+ base::StringPrintf("folder%05d", i)); |
for (int j = 0; j < kNumBookmarksPerFolder; ++j) { |
- AddBookmarkToShare( |
- &trans, folder_id, base::StringPrintf("bookmark%05d", j), |
- base::StringPrintf("http://www.google.com/search?q=%05d", j)); |
+ AddBookmarkToShare(&trans, |
+ folder_id, |
+ base::StringPrintf("bookmark%05d", j)); |
} |
} |
} |
@@ -805,189 +804,6 @@ |
ExpectModelMatch(); |
} |
-// Tests bookmark association when nodes exists in the native model only. |
-// These entries should be copied to Sync directory during association process. |
-TEST_F(ProfileSyncServiceBookmarkTest, |
- InitialModelAssociateWithBookmarkModelNodes) { |
- LoadBookmarkModel(DELETE_EXISTING_STORAGE, DONT_SAVE_TO_STORAGE); |
- const BookmarkNode* folder = |
- model_->AddFolder(model_->other_node(), 0, base::ASCIIToUTF16("foobar")); |
- model_->AddFolder(folder, 0, base::ASCIIToUTF16("nested")); |
- model_->AddURL(folder, 0, base::ASCIIToUTF16("Internets #1 Pies Site"), |
- GURL("http://www.easypie.com/")); |
- model_->AddURL(folder, 1, base::ASCIIToUTF16("Airplanes"), |
- GURL("http://www.easyjet.com/")); |
- |
- StartSync(); |
- ExpectModelMatch(); |
-} |
- |
-// Tests bookmark association case when there is an entry in the delete journal |
-// that matches one of native bookmarks. |
-TEST_F(ProfileSyncServiceBookmarkTest, InitialModelAssociateWithDeleteJournal) { |
- LoadBookmarkModel(DELETE_EXISTING_STORAGE, DONT_SAVE_TO_STORAGE); |
- const BookmarkNode* folder = model_->AddFolder(model_->bookmark_bar_node(), 0, |
- base::ASCIIToUTF16("foobar")); |
- const BookmarkNode* bookmark = |
- model_->AddURL(folder, 0, base::ASCIIToUTF16("Airplanes"), |
- GURL("http://www.easyjet.com/")); |
- |
- CreatePermanentBookmarkNodes(); |
- |
- // Create entries matching the folder and the bookmark above. |
- int64 folder_id, bookmark_id; |
- { |
- syncer::WriteTransaction trans(FROM_HERE, test_user_share_.user_share()); |
- folder_id = AddFolderToShare(&trans, "foobar"); |
- bookmark_id = AddBookmarkToShare(&trans, folder_id, "Airplanes", |
- "http://www.easyjet.com/"); |
- } |
- |
- // Associate the bookmark sync node with the native model one and make |
- // it deleted. |
- { |
- syncer::WriteTransaction trans(FROM_HERE, test_user_share_.user_share()); |
- syncer::WriteNode node(&trans); |
- EXPECT_EQ(BaseNode::INIT_OK, node.InitByIdLookup(bookmark_id)); |
- |
- node.GetMutableEntryForTest()->PutLocalExternalId(bookmark->id()); |
- node.GetMutableEntryForTest()->PutServerIsDel(true); |
- node.GetMutableEntryForTest()->PutIsDel(true); |
- } |
- |
- ASSERT_TRUE(AssociateModels()); |
- ExpectModelMatch(); |
- |
- // The bookmark node should be deleted. |
- EXPECT_EQ(0, folder->child_count()); |
-} |
- |
-// Tests that the external ID is used to match the right folder amoung |
-// multiple folders with the same name during the native model traversal. |
-// Also tests that the external ID is used to match the right bookmark |
-// among multiple identical bookmarks when dealing with the delete journal. |
-TEST_F(ProfileSyncServiceBookmarkTest, |
- InitialModelAssociateVerifyExternalIdMatch) { |
- LoadBookmarkModel(DELETE_EXISTING_STORAGE, DONT_SAVE_TO_STORAGE); |
- const int kNumFolders = 10; |
- const int kNumBookmarks = 10; |
- const int kFolderToIncludeBookmarks = 7; |
- const int kBookmarkToDelete = 4; |
- |
- int64 folder_ids[kNumFolders]; |
- int64 bookmark_ids[kNumBookmarks]; |
- |
- // Create native folders and bookmarks with identical names. Only |
- // one of the folders contains bookmarks and others are empty. Here is the |
- // expected tree shape: |
- // Bookmarks bar |
- // +- folder (#0) |
- // +- folder (#1) |
- // ... |
- // +- folder (#7) <-- Only this folder contains bookmarks. |
- // +- bookmark (#0) |
- // +- bookmark (#1) |
- // ... |
- // +- bookmark (#4) <-- Only this one bookmark should be removed later. |
- // ... |
- // +- bookmark (#9) |
- // ... |
- // +- folder (#9) |
- |
- const BookmarkNode* parent_folder = nullptr; |
- for (int i = 0; i < kNumFolders; i++) { |
- const BookmarkNode* folder = model_->AddFolder( |
- model_->bookmark_bar_node(), i, base::ASCIIToUTF16("folder")); |
- folder_ids[i] = folder->id(); |
- if (i == kFolderToIncludeBookmarks) { |
- parent_folder = folder; |
- } |
- } |
- |
- for (int i = 0; i < kNumBookmarks; i++) { |
- const BookmarkNode* bookmark = |
- model_->AddURL(parent_folder, i, base::ASCIIToUTF16("bookmark"), |
- GURL("http://www.google.com/")); |
- bookmark_ids[i] = bookmark->id(); |
- } |
- |
- // Number of nodes in bookmark bar before association. |
- int total_node_count = model_->bookmark_bar_node()->GetTotalNodeCount(); |
- |
- CreatePermanentBookmarkNodes(); |
- |
- int64 sync_bookmark_id_to_delete = 0; |
- { |
- // Create sync folders matching native folders above. |
- int64 parent_id = 0; |
- syncer::WriteTransaction trans(FROM_HERE, test_user_share_.user_share()); |
- // Create in reverse order because AddFolderToShare passes NULL for |
- // |predecessor| argument. |
- for (int i = kNumFolders - 1; i >= 0; i--) { |
- int64 id = AddFolderToShare(&trans, "folder"); |
- |
- // Pre-map sync folders to native folders by setting |
- // external ID. This will verify that the association algorithm picks |
- // the right ones despite all of them having identical names. |
- // More specifically this will help to avoid cloning bookmarks from |
- // a wrong folder. |
- syncer::WriteNode node(&trans); |
- EXPECT_EQ(BaseNode::INIT_OK, node.InitByIdLookup(id)); |
- node.GetMutableEntryForTest()->PutLocalExternalId(folder_ids[i]); |
- |
- if (i == kFolderToIncludeBookmarks) { |
- parent_id = id; |
- } |
- } |
- |
- // Create sync bookmark matching native bookmarks above in reverse order |
- // because AddBookmarkToShare passes NULL for |predecessor| argument. |
- for (int i = kNumBookmarks - 1; i >= 0; i--) { |
- int id = AddBookmarkToShare(&trans, parent_id, "bookmark", |
- "http://www.google.com/"); |
- |
- // Pre-map sync bookmarks to native bookmarks by setting |
- // external ID. This will verify that the association algorithm picks |
- // the right ones despite all of them having identical names and URLs. |
- syncer::WriteNode node(&trans); |
- EXPECT_EQ(BaseNode::INIT_OK, node.InitByIdLookup(id)); |
- node.GetMutableEntryForTest()->PutLocalExternalId(bookmark_ids[i]); |
- |
- if (i == kBookmarkToDelete) { |
- sync_bookmark_id_to_delete = id; |
- } |
- } |
- } |
- |
- // Make one bookmark deleted. |
- { |
- syncer::WriteTransaction trans(FROM_HERE, test_user_share_.user_share()); |
- syncer::WriteNode node(&trans); |
- EXPECT_EQ(BaseNode::INIT_OK, |
- node.InitByIdLookup(sync_bookmark_id_to_delete)); |
- |
- node.GetMutableEntryForTest()->PutServerIsDel(true); |
- node.GetMutableEntryForTest()->PutIsDel(true); |
- } |
- |
- // Perform association. |
- ASSERT_TRUE(AssociateModels()); |
- ExpectModelMatch(); |
- |
- // Only one native node should have been deleted and no nodes cloned due to |
- // matching folder names. |
- EXPECT_EQ(kNumFolders, model_->bookmark_bar_node()->child_count()); |
- EXPECT_EQ(kNumBookmarks - 1, parent_folder->child_count()); |
- EXPECT_EQ(total_node_count - 1, |
- model_->bookmark_bar_node()->GetTotalNodeCount()); |
- |
- // Verify that the right bookmark got deleted and no bookmarks reordered. |
- for (int i = 0; i < parent_folder->child_count(); i++) { |
- int index_in_bookmark_ids = (i < kBookmarkToDelete) ? i : i + 1; |
- EXPECT_EQ(bookmark_ids[index_in_bookmark_ids], |
- parent_folder->GetChild(i)->id()); |
- } |
-} |
TEST_F(ProfileSyncServiceBookmarkTest, BookmarkModelOperations) { |
LoadBookmarkModel(DELETE_EXISTING_STORAGE, DONT_SAVE_TO_STORAGE); |