Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(165)

Issue 912693002: Use external ID to match native model nodes during bookmark association. (Closed)

Created:
5 years, 10 months ago by stanisc
Modified:
5 years, 10 months ago
Reviewers:
Nicolas Zea
CC:
chromium-reviews, tim+watch_chromium.org, pvalenzuela+watch_chromium.org, maxbogue+watch_chromium.org, zea+watch_chromium.org, maniscalco+watch_chromium.org
Base URL:
https://chromium.googlesource.com/chromium/src.git@master
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

Use external ID to match native model nodes during bookmark association. This is a resubmit of https://codereview.chromium.org/904083002 which was reverted due to an unrelated flaky test. There are no changes compared to the original patch, hence skipping the code review (zea@ was the original reviewer). Original patch description: The fix improves matching of nodes in BookmarkModelAssociator in situations where there are multiple bookmarks or folders with the same titles or URLs. This will address one particular scenario leading to bookmark duplication (see crbug.com/118105). 1) In BookmarkModelAssociator::BuildAssociations, when there are multiple native model nodes with matching title / URL, a secondary match on external ID is used to pick a preferred one; otherwise the first matching node is returned. The preferred match on external ID should be applicable in most situations except when the native model has been rebuilt from scratch. Picking a wrong folder during the association process results in duplicating the entire subtree within the wrong folder. This issue should be addressed now. 2) In BookmarkModelAssociator::ApplyDeletesFromSyncJournal the external ID match is now the primary criteria for selecting a native model node to be deleted. The previous implementation would pick an arbitrary native model node based on just the title / URL match anywhere in the node hierarchy. That would happen every time after deleting a bookmark or folder and recreating it in another place. Since external IDs might be reused, there is a secondary match on title and URL to ensure that the right node gets deleted. To avoid costly O(N*M) algorithm (where N is number of bookmarks and M is number of entries in delete journal), the implementation uses a set of external IDs to reduce the cost to O(N*logM). BUG=456228 TBR=zea@chromium.org Committed: https://crrev.com/8fab3e6090c48042d3d6810c1ef900e39bcc730c Cr-Commit-Position: refs/heads/master@{#317688}

Patch Set 1 : #

Unified diffs Side-by-side diffs Delta from patch set Stats (+312 lines, -82 lines) Patch
M chrome/browser/sync/glue/bookmark_model_associator.h View 1 chunk +0 lines, -4 lines 0 comments Download
M chrome/browser/sync/glue/bookmark_model_associator.cc View 9 chunks +116 lines, -69 lines 0 comments Download
M chrome/browser/sync/profile_sync_service_bookmark_unittest.cc View 4 chunks +193 lines, -9 lines 0 comments Download
M sync/internal_api/delete_journal.cc View 1 chunk +2 lines, -0 lines 0 comments Download
M sync/internal_api/public/delete_journal.h View 1 chunk +1 line, -0 lines 0 comments Download

Messages

Total messages: 6 (3 generated)
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/912693002/20001
5 years, 10 months ago (2015-02-24 00:01:33 UTC) #4
commit-bot: I haz the power
Committed patchset #1 (id:20001)
5 years, 10 months ago (2015-02-24 00:26:38 UTC) #5
commit-bot: I haz the power
5 years, 10 months ago (2015-02-24 00:27:52 UTC) #6
Message was sent while issue was closed.
Patchset 1 (id:??) landed as
https://crrev.com/8fab3e6090c48042d3d6810c1ef900e39bcc730c
Cr-Commit-Position: refs/heads/master@{#317688}

Powered by Google App Engine
This is Rietveld 408576698