Currently, there are inconsistencies between how the bridge defines its data (e.g. in GetData() and on other places) and what metadata it stores:
- a data entry is an URL for which a _typed_ visit exists
- it stores metadata for URLs for which _any_ visit exists.
The reason is technical, the bridge deals differently with explicit deletion and with implicit expiry. This bit gets currently only propagated to OnURLsDeleted() which gets triggered only when the last visit for an URL disappears. Thus, we delete metadata entries only when the last visit gets deleted.
The solution is to plumb this bit into OnURLsModified() as well and do the metadata deletion as soon as the last _typed_ visit gets deleted.
Comment 1 by jkrcal@chromium.org
, Jun 12 2018