chromium/components/plus_addresses/sync_utils/plus_address_data_type_controller.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_PLUS_ADDRESSES_SYNC_UTILS_PLUS_ADDRESS_DATA_TYPE_CONTROLLER_H_
#define COMPONENTS_PLUS_ADDRESSES_SYNC_UTILS_PLUS_ADDRESS_DATA_TYPE_CONTROLLER_H_

#include <memory>

#include "base/memory/raw_ref.h"
#include "base/scoped_observation.h"
#include "components/sync/base/data_type.h"
#include "components/sync/service/data_type_controller.h"
#include "components/sync/service/sync_service_observer.h"
#include "components/variations/service/google_groups_manager.h"

class GoogleGroupsManager;

namespace signin {
class AccountManagedStatusFinder;
class IdentityManager;
}  // namespace signin

namespace syncer {
class SyncService;
}  // namespace syncer

namespace plus_addresses {

// Shared data type controller for PLUS_ADDRESS and PLUS_ADDRESS_SETTING.
// It is responsible for disabling the types when the feature is not enabled or
// the user type not supported.
// Tested by the sync integration tests.
class PlusAddressDataTypeController : public syncer::DataTypeController,
                                       public syncer::SyncServiceObserver {};

}  // namespace plus_addresses

#endif  // COMPONENTS_PLUS_ADDRESSES_SYNC_UTILS_PLUS_ADDRESS_DATA_TYPE_CONTROLLER_H_