#include "components/sync/model/client_tag_based_remote_update_handler.h"
#include <optional>
#include <utility>
#include <vector>
#include "base/check.h"
#include "base/containers/flat_set.h"
#include "base/logging.h"
#include "components/sync/base/data_type.h"
#include "components/sync/base/data_type_histogram.h"
#include "components/sync/base/time.h"
#include "components/sync/engine/commit_and_get_updates_types.h"
#include "components/sync/engine/data_type_processor_metrics.h"
#include "components/sync/model/conflict_resolution.h"
#include "components/sync/model/data_type_sync_bridge.h"
#include "components/sync/model/metadata_change_list.h"
#include "components/sync/model/processor_entity.h"
#include "components/sync/model/processor_entity_tracker.h"
#include "components/sync/protocol/data_type_state_helper.h"
#include "components/sync/protocol/entity_specifics.pb.h"
#include "components/sync/protocol/unique_position.pb.h"
namespace syncer {
namespace {
std::optional<sync_pb::UniquePosition> ExtractUniquePositionIfSupported(
const UpdateResponseData& update,
const DataTypeSyncBridge& bridge) { … }
}
ClientTagBasedRemoteUpdateHandler::ClientTagBasedRemoteUpdateHandler(
DataType type,
DataTypeSyncBridge* bridge,
ProcessorEntityTracker* entity_tracker)
: … { … }
std::optional<ModelError>
ClientTagBasedRemoteUpdateHandler::ProcessIncrementalUpdate(
const sync_pb::DataTypeState& data_type_state,
UpdateResponseDataList updates,
std::optional<sync_pb::GarbageCollectionDirective> gc_directive) { … }
ProcessorEntity* ClientTagBasedRemoteUpdateHandler::ProcessUpdate(
UpdateResponseData update,
EntityChangeList* entity_changes,
std::string* storage_key_to_clear) { … }
void ClientTagBasedRemoteUpdateHandler::ResolveConflict(
UpdateResponseData update,
ProcessorEntity* entity,
EntityChangeList* changes,
std::string* storage_key_to_clear) { … }
ProcessorEntity* ClientTagBasedRemoteUpdateHandler::CreateEntity(
const UpdateResponseData& update) { … }
}