|
15 | 15 | #include "brave/components/brave_sync/brave_sync_service_observer.h"
|
16 | 16 | #include "brave/components/brave_sync/client/brave_sync_client_impl.h"
|
17 | 17 | #include "brave/components/brave_sync/client/client_ext_impl_data.h"
|
| 18 | +#include "brave/components/brave_sync/features.h" |
18 | 19 | #include "brave/components/brave_sync/jslib_const.h"
|
19 | 20 | #include "brave/components/brave_sync/jslib_messages.h"
|
20 | 21 | #include "brave/components/brave_sync/settings.h"
|
@@ -1632,50 +1633,128 @@ TEST_F(BraveSyncServiceTest, AddNonClonedBookmarkKeys) {
|
1632 | 1633 | EXPECT_TRUE(meta_version.empty());
|
1633 | 1634 | }
|
1634 | 1635 |
|
| 1636 | +namespace { |
| 1637 | + |
| 1638 | +void SetBraveMeta(const bookmarks::BookmarkNode* node, |
| 1639 | + const std::string& object_id, |
| 1640 | + const std::string& order, |
| 1641 | + const std::string& sync_timestamp, |
| 1642 | + const std::string& version) { |
| 1643 | + bookmarks::BookmarkNode* mutable_node = AsMutable(node); |
| 1644 | + mutable_node->SetMetaInfo("object_id", object_id); |
| 1645 | + mutable_node->SetMetaInfo("order", order); |
| 1646 | + mutable_node->SetMetaInfo("sync_timestamp", sync_timestamp); |
| 1647 | + mutable_node->SetMetaInfo("version", version); |
| 1648 | +} |
| 1649 | + |
| 1650 | +void GetAllNodes(const bookmarks::BookmarkNode* parent, |
| 1651 | + std::set<const bookmarks::BookmarkNode*>* all_nodes) { |
| 1652 | + for (size_t i = 0; i < parent->children().size(); ++i) { |
| 1653 | + const bookmarks::BookmarkNode* current_child = parent->children()[i].get(); |
| 1654 | + all_nodes->insert(current_child); |
| 1655 | + if (current_child->is_folder()) { |
| 1656 | + GetAllNodes(current_child, all_nodes); |
| 1657 | + } |
| 1658 | + } |
| 1659 | +} |
| 1660 | + |
| 1661 | +} // namespace |
| 1662 | + |
1635 | 1663 | TEST_F(BraveSyncServiceTest, MigrateDuplicatedBookmarksObjectIds) {
|
1636 | 1664 | AsMutable(model()->other_node())->SetMetaInfo("order", kOtherNodeOrder);
|
1637 | 1665 |
|
1638 | 1666 | const bookmarks::BookmarkNode* bookmark_a1 =
|
1639 | 1667 | model()->AddURL(model()->other_node(), 0, base::ASCIIToUTF16("A1"),
|
1640 | 1668 | GURL("https://a1.com"));
|
1641 | 1669 |
|
1642 |
| - AsMutable(bookmark_a1)->SetMetaInfo("object_id", "object_id_value"); |
1643 |
| - AsMutable(bookmark_a1)->SetMetaInfo("order", "255.255.255.3"); |
1644 |
| - AsMutable(bookmark_a1)->SetMetaInfo("sync_timestamp", "sync_timestamp_value"); |
1645 |
| - AsMutable(bookmark_a1)->SetMetaInfo("version", "version_value"); |
| 1670 | + SetBraveMeta(bookmark_a1, "object_id_value", "255.255.255.3", |
| 1671 | + "sync_timestamp_value", "version_value"); |
1646 | 1672 |
|
1647 | 1673 | model()->Copy(bookmark_a1, model()->other_node(), 1);
|
1648 | 1674 |
|
1649 |
| - const bookmarks::BookmarkNode* bookmark_copy = |
1650 |
| - model()->other_node()->children().at(1).get(); |
1651 |
| - |
1652 |
| - std::string meta_object_id; |
1653 |
| - EXPECT_TRUE(bookmark_copy->GetMetaInfo("object_id", &meta_object_id)); |
1654 |
| - EXPECT_EQ(meta_object_id, "object_id_value"); |
1655 |
| - std::string meta_order; |
1656 |
| - EXPECT_TRUE(bookmark_copy->GetMetaInfo("order", &meta_order)); |
1657 |
| - EXPECT_EQ(meta_order, "255.255.255.3"); |
1658 |
| - std::string meta_sync_timestamp; |
1659 |
| - EXPECT_TRUE( |
1660 |
| - bookmark_copy->GetMetaInfo("sync_timestamp", &meta_sync_timestamp)); |
1661 |
| - EXPECT_EQ(meta_sync_timestamp, "sync_timestamp_value"); |
1662 |
| - std::string meta_version; |
1663 |
| - EXPECT_TRUE(bookmark_copy->GetMetaInfo("version", &meta_version)); |
1664 |
| - EXPECT_EQ(meta_version, "version_value"); |
| 1675 | + model()->Copy(bookmark_a1, model()->other_node(), 2); |
| 1676 | + |
| 1677 | + const bookmarks::BookmarkNode* folder_f1 = |
| 1678 | + model()->AddFolder(model()->other_node(), 3, base::ASCIIToUTF16("F1")); |
| 1679 | + SetBraveMeta(folder_f1, "object_id_value", "255.255.255.5", |
| 1680 | + "sync_timestamp_value", "version_value"); |
| 1681 | + |
| 1682 | + const bookmarks::BookmarkNode* bookmark_b1 = model()->AddURL( |
| 1683 | + folder_f1, 0, base::ASCIIToUTF16("B1"), GURL("https://b1.com")); |
| 1684 | + SetBraveMeta(bookmark_b1, "object_id_value", "255.255.255.5.1", |
| 1685 | + "sync_timestamp_value", "version_value"); |
| 1686 | + |
| 1687 | + model()->Copy(folder_f1, model()->other_node(), 4); |
| 1688 | + model()->Copy(folder_f1, model()->other_node(), 5); |
| 1689 | + model()->Move(model()->other_node()->children()[5].get(), folder_f1, 0); |
| 1690 | + |
| 1691 | + std::set<const bookmarks::BookmarkNode*> all_nodes; |
| 1692 | + GetAllNodes(model()->other_node(), &all_nodes); |
| 1693 | + for (const bookmarks::BookmarkNode* node : all_nodes) { |
| 1694 | + // Verify fields after copying |
| 1695 | + std::string meta_object_id; |
| 1696 | + EXPECT_TRUE(node->GetMetaInfo("object_id", &meta_object_id)); |
| 1697 | + EXPECT_EQ(meta_object_id, "object_id_value"); |
| 1698 | + std::string meta_sync_timestamp; |
| 1699 | + EXPECT_TRUE(node->GetMetaInfo("sync_timestamp", &meta_sync_timestamp)); |
| 1700 | + EXPECT_EQ(meta_sync_timestamp, "sync_timestamp_value"); |
| 1701 | + std::string meta_version; |
| 1702 | + EXPECT_TRUE(node->GetMetaInfo("version", &meta_version)); |
| 1703 | + EXPECT_EQ(meta_version, "version_value"); |
| 1704 | + |
| 1705 | + // Simulate all bookmarks don`t have added time, as a worse case, |
| 1706 | + // but happened on live profile |
| 1707 | + AsMutable(node)->set_date_added(base::Time()); |
| 1708 | + } |
1665 | 1709 |
|
1666 | 1710 | sync_service()->AddNonClonedBookmarkKeys(model());
|
1667 | 1711 |
|
1668 | 1712 | // Do the migration
|
1669 |
| - BraveProfileSyncServiceImpl::MigrateDuplicatedBookmarksObjectIds(profile(), |
1670 |
| - model()); |
1671 |
| - bookmark_copy = model()->other_node()->children().at(1).get(); |
| 1713 | + bool result = |
| 1714 | + BraveProfileSyncServiceImpl::MigrateDuplicatedBookmarksObjectIds( |
| 1715 | + true, |
| 1716 | + profile(), |
| 1717 | + model()); |
| 1718 | + EXPECT_TRUE(result); |
| 1719 | + |
| 1720 | + // All the bookmarks after migration must not have sync meta info |
| 1721 | + all_nodes.clear(); |
| 1722 | + GetAllNodes(model()->other_node(), &all_nodes); |
| 1723 | + for (const bookmarks::BookmarkNode* bookmark : all_nodes) { |
| 1724 | + std::string migrated_object_id; |
| 1725 | + std::string migrated_order; |
| 1726 | + std::string migrated_sync_timestamp; |
| 1727 | + std::string migrated_version; |
| 1728 | + EXPECT_FALSE(bookmark->GetMetaInfo("object_id", &migrated_object_id)); |
| 1729 | + EXPECT_FALSE(bookmark->GetMetaInfo("order", &migrated_order)); |
| 1730 | + EXPECT_FALSE( |
| 1731 | + bookmark->GetMetaInfo("sync_timestamp", &migrated_sync_timestamp)); |
| 1732 | + EXPECT_FALSE(bookmark->GetMetaInfo("version", &migrated_version)); |
| 1733 | + } |
| 1734 | +} |
1672 | 1735 |
|
1673 |
| - std::string meta_migrated_object_id; |
1674 |
| - EXPECT_TRUE( |
1675 |
| - bookmark_copy->GetMetaInfo("object_id", &meta_migrated_object_id)); |
1676 |
| - EXPECT_NE(meta_migrated_object_id, "object_id_value"); |
| 1736 | +TEST_F(BraveSyncServiceTest, SyncDisabledMigrateDuplicatedBookmarksObjectIds) { |
| 1737 | + AsMutable(model()->other_node())->SetMetaInfo("order", kOtherNodeOrder); |
1677 | 1738 |
|
1678 |
| - std::string meta_migrated_order; |
1679 |
| - EXPECT_TRUE(bookmark_copy->GetMetaInfo("order", &meta_migrated_order)); |
1680 |
| - EXPECT_NE(meta_migrated_order, "255.255.255.3"); |
| 1739 | + const bookmarks::BookmarkNode* bookmark_a1 = |
| 1740 | + model()->AddURL(model()->other_node(), 0, base::ASCIIToUTF16("A1"), |
| 1741 | + GURL("https://a1.com")); |
| 1742 | + |
| 1743 | + SetBraveMeta(bookmark_a1, "object_id_value", "255.255.255.3", |
| 1744 | + "sync_timestamp_value", "version_value"); |
| 1745 | + |
| 1746 | + model()->Copy(bookmark_a1, model()->other_node(), 1); |
| 1747 | + |
| 1748 | + model()->Copy(bookmark_a1, model()->other_node(), 2); |
| 1749 | + |
| 1750 | + // Do the migration |
| 1751 | + bool result = |
| 1752 | + BraveProfileSyncServiceImpl::MigrateDuplicatedBookmarksObjectIds( |
| 1753 | + false, |
| 1754 | + profile(), |
| 1755 | + model()); |
| 1756 | + |
| 1757 | + // Should return false, because sync is disable |
| 1758 | + // Migration will be a no-op |
| 1759 | + EXPECT_FALSE(result); |
1681 | 1760 | }
|
0 commit comments