blob: 6e96984756084f5cbd791658d647466314ce952f [file] [log] [blame]
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/sync/engine/commit_util.h"
#include "components/sync/protocol/sync.pb.h"
namespace syncer {
namespace commit_util {
void AddExtensionsActivityToMessage(
ExtensionsActivity* activity,
ExtensionsActivity::Records* extensions_activity_buffer,
sync_pb::CommitMessage* message) {
// This isn't perfect, since the set of extensions activity may not correlate
// exactly with the items being committed. That's OK as long as we're looking
// for a rough estimate of extensions activity, not an precise mapping of
// which commits were triggered by which extension.
//
// We will push this list of extensions activity back into the
// ExtensionsActivityMonitor if this commit fails. That's why we must keep a
// copy of these records in the cycle.
activity->GetAndClearRecords(extensions_activity_buffer);
const ExtensionsActivity::Records& records = *extensions_activity_buffer;
for (const auto& [id, record] : records) {
sync_pb::ChromiumExtensionsActivity* activity_message =
message->add_extensions_activity();
activity_message->set_extension_id(record.extension_id);
activity_message->set_bookmark_writes_since_last_commit(
record.bookmark_write_count);
}
}
void AddClientConfigParamsToMessage(
ModelTypeSet enabled_types,
bool proxy_tabs_datatype_enabled,
bool cookie_jar_mismatch,
bool single_client,
const std::vector<std::string>& fcm_registration_tokens,
sync_pb::CommitMessage* message) {
sync_pb::ClientConfigParams* config_params = message->mutable_config_params();
DCHECK(Difference(enabled_types, ProtocolTypes()).Empty());
for (ModelType type : enabled_types) {
int field_number = GetSpecificsFieldNumberFromModelType(type);
config_params->mutable_enabled_type_ids()->Add(field_number);
}
config_params->set_tabs_datatype_enabled(proxy_tabs_datatype_enabled);
config_params->set_cookie_jar_mismatch(cookie_jar_mismatch);
config_params->set_single_client(single_client);
for (const std::string& token : fcm_registration_tokens) {
*config_params->add_devices_fcm_registration_tokens() = token;
}
}
} // namespace commit_util
} // namespace syncer