1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
|
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/sync/protocol/collaboration_metadata.h"
#include <cstddef>
#include <ostream>
#include <string>
#include "base/trace_event/memory_usage_estimator.h"
#include "components/sync/protocol/entity_metadata.pb.h"
#include "components/sync/protocol/sync_entity.pb.h"
#include "google_apis/gaia/gaia_id.h"
namespace syncer {
CollaborationMetadata::CollaborationMetadata(
const CollaborationMetadata& other) = default;
CollaborationMetadata& CollaborationMetadata::operator=(
const CollaborationMetadata& other) = default;
CollaborationMetadata::CollaborationMetadata(CollaborationMetadata&& other) =
default;
CollaborationMetadata& CollaborationMetadata::operator=(
CollaborationMetadata&& other) = default;
CollaborationMetadata::~CollaborationMetadata() = default;
// static
CollaborationMetadata CollaborationMetadata::FromRemoteProto(
const sync_pb::SyncEntity::CollaborationMetadata& remote_proto) {
return CollaborationMetadata(
/*created_by=*/GaiaId(
remote_proto.creation_attribution().obfuscated_gaia_id()),
/*last_updated_by=*/
GaiaId(remote_proto.last_update_attribution().obfuscated_gaia_id()),
CollaborationId(remote_proto.collaboration_id()));
}
// static
CollaborationMetadata CollaborationMetadata::FromLocalProto(
const sync_pb::EntityMetadata::CollaborationMetadata& local_proto) {
return CollaborationMetadata(
/*created_by=*/GaiaId(
local_proto.creation_attribution().obfuscated_gaia_id()),
/*last_updated_by=*/
GaiaId(local_proto.last_update_attribution().obfuscated_gaia_id()),
CollaborationId(local_proto.collaboration_id()));
}
// static
CollaborationMetadata CollaborationMetadata::ForLocalChange(
const GaiaId& changed_by,
const CollaborationId& collaboration_id) {
return CollaborationMetadata(
/*created_by=*/changed_by,
/*last_updated_by=*/changed_by, collaboration_id);
}
sync_pb::SyncEntity::CollaborationMetadata
CollaborationMetadata::ToRemoteProto() const {
sync_pb::SyncEntity::CollaborationMetadata remote_proto;
if (!created_by_.empty()) {
remote_proto.mutable_creation_attribution()->set_obfuscated_gaia_id(
created_by_.ToString());
}
if (!last_updated_by_.empty()) {
remote_proto.mutable_last_update_attribution()->set_obfuscated_gaia_id(
last_updated_by_.ToString());
}
remote_proto.set_collaboration_id(collaboration_id_.value());
return remote_proto;
}
sync_pb::EntityMetadata::CollaborationMetadata
CollaborationMetadata::ToLocalProto() const {
sync_pb::EntityMetadata::CollaborationMetadata local_proto;
if (!created_by_.empty()) {
local_proto.mutable_creation_attribution()->set_obfuscated_gaia_id(
created_by_.ToString());
}
if (!last_updated_by_.empty()) {
local_proto.mutable_last_update_attribution()->set_obfuscated_gaia_id(
last_updated_by_.ToString());
}
local_proto.set_collaboration_id(collaboration_id_.value());
return local_proto;
}
size_t CollaborationMetadata::EstimateMemoryUsage() const {
using base::trace_event::EstimateMemoryUsage;
return EstimateMemoryUsage(created_by_.ToString()) +
EstimateMemoryUsage(last_updated_by_.ToString()) +
EstimateMemoryUsage(collaboration_id_.value());
}
CollaborationMetadata::CollaborationMetadata(GaiaId created_by,
GaiaId last_updated_by,
CollaborationId collaboration_id)
: created_by_(std::move(created_by)),
last_updated_by_(std::move(last_updated_by)),
collaboration_id_(std::move(collaboration_id)) {}
void PrintTo(const CollaborationMetadata& collaboration_metadata,
std::ostream* os) {
*os << "{ collaboration_id: '"
<< collaboration_metadata.collaboration_id().value() << "', created_by: '"
<< collaboration_metadata.created_by() << "', last_updated_by: '"
<< collaboration_metadata.last_updated_by() << "'}";
}
} // namespace syncer
|