| // 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 ModelTypeWorker 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_ |