Skip to content

Commit 5a58f5c

Browse files
Merge pull request #4710 from brave/sync_fix_obj_id_dup
Sync fix bookmarks object id duplication
1 parent f2251ad commit 5a58f5c

4 files changed

+47
-0
lines changed

browser/profiles/brave_bookmark_model_loaded_observer.cc

+3
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,11 @@ void BraveBookmarkModelLoadedObserver::BookmarkModelLoaded(
3131
// it is handled in BraveProfileSyncServiceImpl::OnSyncReady
3232
if (brave_profile_service && !brave_profile_service->IsBraveSyncEnabled())
3333
BraveMigrateOtherNode(model);
34+
35+
BraveProfileSyncServiceImpl::AddNonClonedBookmarkKeys(model);
3436
#else
3537
BraveMigrateOtherNode(model);
3638
#endif
39+
3740
BookmarkModelLoadedObserver::BookmarkModelLoaded(model, ids_reassigned);
3841
}

components/brave_sync/brave_profile_sync_service_impl.cc

+11
Original file line numberDiff line numberDiff line change
@@ -516,6 +516,17 @@ void BraveProfileSyncServiceImpl::OnSyncReadyBookmarksModelLoaded() {
516516
BraveMigrateOtherNode(model_);
517517
}
518518

519+
// static
520+
void BraveProfileSyncServiceImpl::AddNonClonedBookmarkKeys(
521+
BookmarkModel* model) {
522+
DCHECK(model);
523+
DCHECK(model->loaded());
524+
model->AddNonClonedKey("object_id");
525+
model->AddNonClonedKey("order");
526+
model->AddNonClonedKey("sync_timestamp");
527+
model->AddNonClonedKey("version");
528+
}
529+
519530
syncer::ModelTypeSet BraveProfileSyncServiceImpl::GetPreferredDataTypes()
520531
const {
521532
// Force DEVICE_INFO type to have nudge cycle each time to fetch

components/brave_sync/brave_profile_sync_service_impl.h

+2
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,8 @@ class BraveProfileSyncServiceImpl
170170
BraveSyncClient* GetBraveSyncClient() override;
171171
#endif
172172

173+
static void AddNonClonedBookmarkKeys(BookmarkModel* model);
174+
173175
bool IsBraveSyncEnabled() const override;
174176

175177
syncer::ModelTypeSet GetPreferredDataTypes() const override;

components/brave_sync/brave_sync_service_unittest.cc

+31
Original file line numberDiff line numberDiff line change
@@ -1310,3 +1310,34 @@ TEST_F(BraveSyncServiceTest, DeviceIdV2MigrationDupDeviceId) {
13101310
base::BindOnce(&OnGetRecordsStub);
13111311
sync_service()->OnPollSyncCycle(std::move(on_get_records), &we);
13121312
}
1313+
1314+
TEST_F(BraveSyncServiceTest, AddNonClonedBookmarkKeys) {
1315+
sync_service()->AddNonClonedBookmarkKeys(model());
1316+
const bookmarks::BookmarkNode* bookmark_a1 =
1317+
model()->AddURL(model()->other_node(), 0, base::ASCIIToUTF16("A1"),
1318+
GURL("https://a1.com"));
1319+
1320+
AsMutable(bookmark_a1)->SetMetaInfo("object_id", "object_id_value");
1321+
AsMutable(bookmark_a1)->SetMetaInfo("order", "order_value");
1322+
AsMutable(bookmark_a1)->SetMetaInfo("sync_timestamp", "sync_timestamp_value");
1323+
AsMutable(bookmark_a1)->SetMetaInfo("version", "version_value");
1324+
1325+
model()->Copy(bookmark_a1, model()->other_node(), 1);
1326+
1327+
const bookmarks::BookmarkNode* bookmark_copy =
1328+
model()->other_node()->children().at(1).get();
1329+
1330+
std::string meta_object_id;
1331+
EXPECT_FALSE(bookmark_copy->GetMetaInfo("object_id", &meta_object_id));
1332+
EXPECT_TRUE(meta_object_id.empty());
1333+
std::string meta_order;
1334+
EXPECT_FALSE(bookmark_copy->GetMetaInfo("order", &meta_order));
1335+
EXPECT_TRUE(meta_order.empty());
1336+
std::string meta_sync_timestamp;
1337+
EXPECT_FALSE(
1338+
bookmark_copy->GetMetaInfo("sync_timestamp", &meta_sync_timestamp));
1339+
EXPECT_TRUE(meta_sync_timestamp.empty());
1340+
std::string meta_version;
1341+
EXPECT_FALSE(bookmark_copy->GetMetaInfo("version", &meta_version));
1342+
EXPECT_TRUE(meta_version.empty());
1343+
}

0 commit comments

Comments
 (0)