chromium/components/browser_sync/common_controller_builder.h

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

#ifndef COMPONENTS_BROWSER_SYNC_COMMON_CONTROLLER_BUILDER_H_
#define COMPONENTS_BROWSER_SYNC_COMMON_CONTROLLER_BUILDER_H_

#include <memory>
#include <optional>
#include <utility>
#include <vector>

#include "base/check.h"
#include "base/memory/raw_ptr.h"
#include "base/task/sequenced_task_runner.h"
#include "build/build_config.h"
#include "build/buildflag.h"
#include "components/supervised_user/core/common/buildflags.h"
#include "components/sync/base/data_type.h"

class GoogleGroupsManager;
class PrefService;

namespace autofill {
class AutofillWebDataService;
}  // namespace autofill

namespace bookmarks {
class BookmarkModel;
}  // namespace bookmarks

namespace commerce {
class ProductSpecificationsService;
}  // namespace commerce

namespace consent_auditor {
class ConsentAuditor;
}  // namespace consent_auditor

namespace data_sharing {
class DataSharingService;
}  // namespace data_sharing

namespace favicon {
class FaviconService;
}  // namespace favicon

namespace history {
class HistoryService;
}  // namespace history

namespace password_manager {
class PasswordReceiverService;
class PasswordSenderService;
class PasswordStoreInterface;
}  // namespace password_manager

namespace plus_addresses {
class PlusAddressSettingService;
class PlusAddressWebDataService;
}  // namespace plus_addresses

namespace power_bookmarks {
class PowerBookmarkService;
}  // namespace power_bookmarks

namespace reading_list {
class DualReadingListModel;
}  // namespace reading_list

namespace send_tab_to_self {
class SendTabToSelfSyncService;
}  // namespace send_tab_to_self

namespace signin {
class IdentityManager;
}  // namespace signin

namespace supervised_user {
class SupervisedUserSettingsService;
}  // namespace supervised_user

namespace sync_bookmarks {
class BookmarkSyncService;
}  // namespace sync_bookmarks

namespace sync_preferences {
class PrefServiceSyncable;
}  // namespace sync_preferences

namespace sync_sessions {
class SessionSyncService;
}  // namespace sync_sessions

namespace syncer {
class DeviceInfoSyncService;
class DataTypeController;
class DataTypeControllerDelegate;
class DataTypeStoreService;
class SyncService;
class UserEventService;
}  // namespace syncer

namespace version_info {
enum class Channel;
}  // namespace version_info

namespace webauthn {
class PasskeyModel;
}  // namespace webauthn

namespace browser_sync {

// Class responsible for instantiating sync controllers (DataTypeController)
// for most sync datatypes / features. This includes datatypes that are
// supported or planned on all major platforms. Users of this class need to
// inject dependencies by invoking all setters (more on this below) and finally
// invoke `Build()` to instantiate controllers.
class CommonControllerBuilder {};

}  // namespace browser_sync

#endif  // COMPONENTS_BROWSER_SYNC_COMMON_CONTROLLER_BUILDER_H_