// Copyright 2013 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef COMPONENTS_SYNC_ENGINE_COMMIT_UTIL_H_
#define COMPONENTS_SYNC_ENGINE_COMMIT_UTIL_H_

#include <stdint.h>
#include <string>
#include <vector>

#include "components/sync/base/extensions_activity.h"
#include "components/sync/base/model_type.h"

namespace sync_pb {
class CommitMessage;
}

namespace syncer::commit_util {

// Adds bookmark extensions activity report to |message|.
void AddExtensionsActivityToMessage(
    ExtensionsActivity* activity,
    ExtensionsActivity::Records* extensions_activity_buffer,
    sync_pb::CommitMessage* message);

// Fills the config_params field of |message|.
void AddClientConfigParamsToMessage(
    ModelTypeSet enabled_types,
    bool proxy_tabs_datatype_enabled,
    bool cookie_jar_mismatch,
    bool single_client,
    bool single_client_with_standalone_invalidations,
    bool single_client_with_old_invalidations,
    const std::vector<std::string>& all_fcm_registration_tokens,
    const std::vector<std::string>&
        fcm_registration_tokens_for_interested_clients,
    sync_pb::CommitMessage* message);

}  // namespace syncer::commit_util

#endif  // COMPONENTS_SYNC_ENGINE_COMMIT_UTIL_H_
