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