| // Copyright 2019 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // This file contains various utility functions used by DataTypeWorker to |
| // preprocess remote bookmark updates, to deal with backward-compatibility of |
| // data and migrate updates such that they resemble updates from a modern |
| // client. |
| |
| #ifndef COMPONENTS_SYNC_ENGINE_BOOKMARK_UPDATE_PREPROCESSING_H_ |
| #define COMPONENTS_SYNC_ENGINE_BOOKMARK_UPDATE_PREPROCESSING_H_ |
| |
| #include <string> |
| |
| namespace sync_pb { |
| class SyncEntity; |
| class EntitySpecifics; |
| } // namespace sync_pb |
| |
| namespace syncer { |
| |
| // Populates `specifics->bookmark().unique_position()` from the various |
| // supported proto fields in `update_entity` and worst-case falls back to a |
| // random position. `specifics` must not be null. Returns true if |
| // `unique_position` has been changed. |
| bool AdaptUniquePositionForBookmark(const sync_pb::SyncEntity& update_entity, |
| sync_pb::EntitySpecifics* specifics); |
| |
| // Populates `specifics->bookmark().type()` (i.e. whether a bookmark is a |
| // folder) for the cases where the field isn't populated. |
| void AdaptTypeForBookmark(const sync_pb::SyncEntity& update_entity, |
| sync_pb::EntitySpecifics* specifics); |
| |
| // Populates `specifics->bookmark().legacy_canonicalized_title()` from the |
| // various supported sources, or no-op if specifics already have the field set. |
| // `specifics` must not be null. |
| void AdaptTitleForBookmark(const sync_pb::SyncEntity& update_entity, |
| sync_pb::EntitySpecifics* specifics, |
| bool specifics_were_encrypted); |
| |
| // Tries to populates `specifics->bookmark().guid()` from the various supported |
| // sources, or no-op if a) specifics already have the field set; or b) the GUID |
| // cannot be inferred. `specifics` must not be null. |
| void AdaptGuidForBookmark(const sync_pb::SyncEntity& update_entity, |
| sync_pb::EntitySpecifics* specifics); |
| |
| // GUID-inferring function exposed for testing. |
| std::string InferGuidForLegacyBookmarkForTesting( |
| const std::string& originator_cache_guid, |
| const std::string& originator_client_item_id); |
| |
| } // namespace syncer |
| |
| #endif // COMPONENTS_SYNC_ENGINE_BOOKMARK_UPDATE_PREPROCESSING_H_ |