OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // TODO(akalin): This file is basically just a unit test for | 5 // TODO(akalin): This file is basically just a unit test for |
6 // BookmarkChangeProcessor. Write unit tests for | 6 // BookmarkChangeProcessor. Write unit tests for |
7 // BookmarkModelAssociator separately. | 7 // BookmarkModelAssociator separately. |
8 | 8 |
9 #include <map> | 9 #include <map> |
10 #include <queue> | 10 #include <queue> |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
147 changes_.insert(changes_.begin(), record); | 147 changes_.insert(changes_.begin(), record); |
148 } | 148 } |
149 | 149 |
150 // Set a new title value, and return the old value. | 150 // Set a new title value, and return the old value. |
151 std::wstring ModifyTitle(int64 id, const std::wstring& new_title) { | 151 std::wstring ModifyTitle(int64 id, const std::wstring& new_title) { |
152 syncer::WriteNode node(trans_); | 152 syncer::WriteNode node(trans_); |
153 EXPECT_EQ(BaseNode::INIT_OK, node.InitByIdLookup(id)); | 153 EXPECT_EQ(BaseNode::INIT_OK, node.InitByIdLookup(id)); |
154 std::string old_title = node.GetTitle(); | 154 std::string old_title = node.GetTitle(); |
155 node.SetTitle(new_title); | 155 node.SetTitle(new_title); |
156 SetModified(id); | 156 SetModified(id); |
157 return UTF8ToWide(old_title); | 157 return base::UTF8ToWide(old_title); |
158 } | 158 } |
159 | 159 |
160 // Set a new parent and predecessor value. Return the old parent id. | 160 // Set a new parent and predecessor value. Return the old parent id. |
161 // We could return the old predecessor id, but it turns out not to be | 161 // We could return the old predecessor id, but it turns out not to be |
162 // very useful for assertions. | 162 // very useful for assertions. |
163 int64 ModifyPosition(int64 id, int64 parent_id, int64 predecessor_id) { | 163 int64 ModifyPosition(int64 id, int64 parent_id, int64 predecessor_id) { |
164 syncer::ReadNode parent(trans_); | 164 syncer::ReadNode parent(trans_); |
165 EXPECT_EQ(BaseNode::INIT_OK, parent.InitByIdLookup(parent_id)); | 165 EXPECT_EQ(BaseNode::INIT_OK, parent.InitByIdLookup(parent_id)); |
166 syncer::WriteNode node(trans_); | 166 syncer::WriteNode node(trans_); |
167 EXPECT_EQ(BaseNode::INIT_OK, node.InitByIdLookup(id)); | 167 EXPECT_EQ(BaseNode::INIT_OK, node.InitByIdLookup(id)); |
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
360 EXPECT_EQ(BaseNode::INIT_OK, | 360 EXPECT_EQ(BaseNode::INIT_OK, |
361 predecessor_node.InitByIdLookup(last_child_id)); | 361 predecessor_node.InitByIdLookup(last_child_id)); |
362 predecessor = &predecessor_node; | 362 predecessor = &predecessor_node; |
363 } | 363 } |
364 syncer::WriteNode node(&trans); | 364 syncer::WriteNode node(&trans); |
365 if (!node.InitBookmarkByCreation(root, predecessor)) | 365 if (!node.InitBookmarkByCreation(root, predecessor)) |
366 return false; | 366 return false; |
367 node.SetIsFolder(true); | 367 node.SetIsFolder(true); |
368 node.GetMutableEntryForTest()->Put( | 368 node.GetMutableEntryForTest()->Put( |
369 syncer::syncable::UNIQUE_SERVER_TAG, permanent_tags[i]); | 369 syncer::syncable::UNIQUE_SERVER_TAG, permanent_tags[i]); |
370 node.SetTitle(UTF8ToWide(permanent_tags[i])); | 370 node.SetTitle(base::UTF8ToWide(permanent_tags[i])); |
371 node.SetExternalId(0); | 371 node.SetExternalId(0); |
372 last_child_id = node.GetId(); | 372 last_child_id = node.GetId(); |
373 } | 373 } |
374 return true; | 374 return true; |
375 } | 375 } |
376 | 376 |
377 void StartSync() { | 377 void StartSync() { |
378 test_user_share_.Reload(); | 378 test_user_share_.Reload(); |
379 | 379 |
380 ASSERT_TRUE(CreatePermanentBookmarkNodes()); | 380 ASSERT_TRUE(CreatePermanentBookmarkNodes()); |
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
522 | 522 |
523 void ExpectSyncerNodeUnknown(const BookmarkNode* node) { | 523 void ExpectSyncerNodeUnknown(const BookmarkNode* node) { |
524 int64 sync_id = model_associator_->GetSyncIdFromChromeId(node->id()); | 524 int64 sync_id = model_associator_->GetSyncIdFromChromeId(node->id()); |
525 EXPECT_EQ(sync_id, syncer::kInvalidId); | 525 EXPECT_EQ(sync_id, syncer::kInvalidId); |
526 } | 526 } |
527 | 527 |
528 void ExpectBrowserNodeTitle(int64 sync_id, const std::wstring& title) { | 528 void ExpectBrowserNodeTitle(int64 sync_id, const std::wstring& title) { |
529 const BookmarkNode* bnode = | 529 const BookmarkNode* bnode = |
530 model_associator_->GetChromeNodeFromSyncId(sync_id); | 530 model_associator_->GetChromeNodeFromSyncId(sync_id); |
531 ASSERT_TRUE(bnode); | 531 ASSERT_TRUE(bnode); |
532 EXPECT_EQ(bnode->GetTitle(), WideToUTF16Hack(title)); | 532 EXPECT_EQ(bnode->GetTitle(), base::WideToUTF16Hack(title)); |
533 } | 533 } |
534 | 534 |
535 void ExpectBrowserNodeURL(int64 sync_id, const std::string& url) { | 535 void ExpectBrowserNodeURL(int64 sync_id, const std::string& url) { |
536 const BookmarkNode* bnode = | 536 const BookmarkNode* bnode = |
537 model_associator_->GetChromeNodeFromSyncId(sync_id); | 537 model_associator_->GetChromeNodeFromSyncId(sync_id); |
538 ASSERT_TRUE(bnode); | 538 ASSERT_TRUE(bnode); |
539 EXPECT_EQ(GURL(url), bnode->url()); | 539 EXPECT_EQ(GURL(url), bnode->url()); |
540 } | 540 } |
541 | 541 |
542 void ExpectBrowserNodeParent(int64 sync_id, int64 parent_sync_id) { | 542 void ExpectBrowserNodeParent(int64 sync_id, int64 parent_sync_id) { |
(...skipping 716 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1259 int size, | 1259 int size, |
1260 int* running_count) { | 1260 int* running_count) { |
1261 DCHECK(node); | 1261 DCHECK(node); |
1262 DCHECK(data); | 1262 DCHECK(data); |
1263 DCHECK(node->is_folder()); | 1263 DCHECK(node->is_folder()); |
1264 for (int i = 0; i < size; ++i) { | 1264 for (int i = 0; i < size; ++i) { |
1265 const TestData& item = data[i]; | 1265 const TestData& item = data[i]; |
1266 if (item.url) { | 1266 if (item.url) { |
1267 const base::Time add_time = | 1267 const base::Time add_time = |
1268 start_time_ + base::TimeDelta::FromMinutes(*running_count); | 1268 start_time_ + base::TimeDelta::FromMinutes(*running_count); |
1269 model_->AddURLWithCreationTime(node, i, WideToUTF16Hack(item.title), | 1269 model_->AddURLWithCreationTime(node, i, base::WideToUTF16Hack(item.title), |
1270 GURL(item.url), add_time); | 1270 GURL(item.url), add_time); |
1271 } else { | 1271 } else { |
1272 model_->AddFolder(node, i, WideToUTF16Hack(item.title)); | 1272 model_->AddFolder(node, i, base::WideToUTF16Hack(item.title)); |
1273 } | 1273 } |
1274 (*running_count)++; | 1274 (*running_count)++; |
1275 } | 1275 } |
1276 } | 1276 } |
1277 | 1277 |
1278 void ProfileSyncServiceBookmarkTestWithData::CompareWithTestData( | 1278 void ProfileSyncServiceBookmarkTestWithData::CompareWithTestData( |
1279 const BookmarkNode* node, | 1279 const BookmarkNode* node, |
1280 const TestData* data, | 1280 const TestData* data, |
1281 int size, | 1281 int size, |
1282 int* running_count) { | 1282 int* running_count) { |
1283 DCHECK(node); | 1283 DCHECK(node); |
1284 DCHECK(data); | 1284 DCHECK(data); |
1285 DCHECK(node->is_folder()); | 1285 DCHECK(node->is_folder()); |
1286 ASSERT_EQ(size, node->child_count()); | 1286 ASSERT_EQ(size, node->child_count()); |
1287 for (int i = 0; i < size; ++i) { | 1287 for (int i = 0; i < size; ++i) { |
1288 const BookmarkNode* child_node = node->GetChild(i); | 1288 const BookmarkNode* child_node = node->GetChild(i); |
1289 const TestData& item = data[i]; | 1289 const TestData& item = data[i]; |
1290 GURL url = GURL(item.url == NULL ? "" : item.url); | 1290 GURL url = GURL(item.url == NULL ? "" : item.url); |
1291 BookmarkNode test_node(url); | 1291 BookmarkNode test_node(url); |
1292 test_node.SetTitle(WideToUTF16Hack(item.title)); | 1292 test_node.SetTitle(base::WideToUTF16Hack(item.title)); |
1293 EXPECT_EQ(child_node->GetTitle(), test_node.GetTitle()); | 1293 EXPECT_EQ(child_node->GetTitle(), test_node.GetTitle()); |
1294 if (item.url) { | 1294 if (item.url) { |
1295 EXPECT_FALSE(child_node->is_folder()); | 1295 EXPECT_FALSE(child_node->is_folder()); |
1296 EXPECT_TRUE(child_node->is_url()); | 1296 EXPECT_TRUE(child_node->is_url()); |
1297 EXPECT_EQ(child_node->url(), test_node.url()); | 1297 EXPECT_EQ(child_node->url(), test_node.url()); |
1298 const base::Time expected_time = | 1298 const base::Time expected_time = |
1299 start_time_ + base::TimeDelta::FromMinutes(*running_count); | 1299 start_time_ + base::TimeDelta::FromMinutes(*running_count); |
1300 EXPECT_EQ(expected_time.ToInternalValue(), | 1300 EXPECT_EQ(expected_time.ToInternalValue(), |
1301 child_node->date_added().ToInternalValue()); | 1301 child_node->date_added().ToInternalValue()); |
1302 } else { | 1302 } else { |
(...skipping 414 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1717 int64 id = adds.AddURL(kTitle, kUrl, | 1717 int64 id = adds.AddURL(kTitle, kUrl, |
1718 bookmark_bar_id(), 0); | 1718 bookmark_bar_id(), 0); |
1719 adds.ApplyPendingChanges(change_processor_.get()); | 1719 adds.ApplyPendingChanges(change_processor_.get()); |
1720 FakeServerChange updates(&trans); | 1720 FakeServerChange updates(&trans); |
1721 updates.ModifyCreationTime(id, kCreationTime); | 1721 updates.ModifyCreationTime(id, kCreationTime); |
1722 updates.ApplyPendingChanges(change_processor_.get()); | 1722 updates.ApplyPendingChanges(change_processor_.get()); |
1723 | 1723 |
1724 const BookmarkNode* node = model_->bookmark_bar_node()->GetChild(0); | 1724 const BookmarkNode* node = model_->bookmark_bar_node()->GetChild(0); |
1725 ASSERT_TRUE(node); | 1725 ASSERT_TRUE(node); |
1726 EXPECT_TRUE(node->is_url()); | 1726 EXPECT_TRUE(node->is_url()); |
1727 EXPECT_EQ(WideToUTF16Hack(kTitle), node->GetTitle()); | 1727 EXPECT_EQ(base::WideToUTF16Hack(kTitle), node->GetTitle()); |
1728 EXPECT_EQ(kUrl, node->url().possibly_invalid_spec()); | 1728 EXPECT_EQ(kUrl, node->url().possibly_invalid_spec()); |
1729 EXPECT_EQ(node->date_added(), base::Time::FromInternalValue(30)); | 1729 EXPECT_EQ(node->date_added(), base::Time::FromInternalValue(30)); |
1730 } | 1730 } |
1731 | 1731 |
1732 // Output transaction versions of |node| and nodes under it to |node_versions|. | 1732 // Output transaction versions of |node| and nodes under it to |node_versions|. |
1733 void GetTransactionVersions( | 1733 void GetTransactionVersions( |
1734 const BookmarkNode* root, | 1734 const BookmarkNode* root, |
1735 BookmarkNodeVersionMap* node_versions) { | 1735 BookmarkNodeVersionMap* node_versions) { |
1736 node_versions->clear(); | 1736 node_versions->clear(); |
1737 std::queue<const BookmarkNode*> nodes; | 1737 std::queue<const BookmarkNode*> nodes; |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1816 kBookmarkTransactionVersionKey, "41"); | 1816 kBookmarkTransactionVersionKey, "41"); |
1817 initial_versions[bookmark_bar->GetChild(0)->id()] = 41; | 1817 initial_versions[bookmark_bar->GetChild(0)->id()] = 41; |
1818 ExpectTransactionVersionMatch(model_->bookmark_bar_node(), initial_versions); | 1818 ExpectTransactionVersionMatch(model_->bookmark_bar_node(), initial_versions); |
1819 ExpectTransactionVersionMatch(model_->other_node(), initial_versions); | 1819 ExpectTransactionVersionMatch(model_->other_node(), initial_versions); |
1820 ExpectTransactionVersionMatch(model_->mobile_node(), initial_versions); | 1820 ExpectTransactionVersionMatch(model_->mobile_node(), initial_versions); |
1821 | 1821 |
1822 // Verify model version and version of changed bookmark are incremented and | 1822 // Verify model version and version of changed bookmark are incremented and |
1823 // versions of others remain same. | 1823 // versions of others remain same. |
1824 const BookmarkNode* changed_bookmark = | 1824 const BookmarkNode* changed_bookmark = |
1825 model_->bookmark_bar_node()->GetChild(0); | 1825 model_->bookmark_bar_node()->GetChild(0); |
1826 model_->SetTitle(changed_bookmark, WideToUTF16Hack(L"test")); | 1826 model_->SetTitle(changed_bookmark, base::WideToUTF16Hack(L"test")); |
1827 MessageLoop::current()->RunUntilIdle(); | 1827 MessageLoop::current()->RunUntilIdle(); |
1828 GetTransactionVersions(model_->root_node(), &new_versions); | 1828 GetTransactionVersions(model_->root_node(), &new_versions); |
1829 EXPECT_EQ(initial_versions[model_->root_node()->id()] + 2, | 1829 EXPECT_EQ(initial_versions[model_->root_node()->id()] + 2, |
1830 new_versions[model_->root_node()->id()]); | 1830 new_versions[model_->root_node()->id()]); |
1831 EXPECT_EQ(initial_versions[changed_bookmark->id()] + 1, | 1831 EXPECT_EQ(initial_versions[changed_bookmark->id()] + 1, |
1832 new_versions[changed_bookmark->id()]); | 1832 new_versions[changed_bookmark->id()]); |
1833 initial_versions.erase(changed_bookmark->id()); | 1833 initial_versions.erase(changed_bookmark->id()); |
1834 ExpectTransactionVersionMatch(model_->bookmark_bar_node(), initial_versions); | 1834 ExpectTransactionVersionMatch(model_->bookmark_bar_node(), initial_versions); |
1835 ExpectTransactionVersionMatch(model_->other_node(), initial_versions); | 1835 ExpectTransactionVersionMatch(model_->other_node(), initial_versions); |
1836 ExpectTransactionVersionMatch(model_->mobile_node(), initial_versions); | 1836 ExpectTransactionVersionMatch(model_->mobile_node(), initial_versions); |
1837 } | 1837 } |
1838 | 1838 |
1839 } // namespace | 1839 } // namespace |
1840 | 1840 |
1841 } // namespace browser_sync | 1841 } // namespace browser_sync |
OLD | NEW |