blob: 0df1f706bf2aceaf910daf86e76aae733b65a94d [file] [log] [blame]
Rushan Suleymanovd5c5ef52020-07-30 13:07:241// Copyright 2020 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef COMPONENTS_SYNC_INVALIDATIONS_SYNC_INVALIDATIONS_SERVICE_IMPL_H_
6#define COMPONENTS_SYNC_INVALIDATIONS_SYNC_INVALIDATIONS_SERVICE_IMPL_H_
7
8#include <memory>
9#include <string>
10
Paula Vidas4f26b6662020-09-03 09:16:2311#include "components/sync/invalidations/interested_data_types_manager.h"
Rushan Suleymanovd5c5ef52020-07-30 13:07:2412#include "components/sync/invalidations/sync_invalidations_service.h"
13
14namespace gcm {
15class GCMDriver;
16}
17
18namespace instance_id {
19class InstanceIDDriver;
20}
21
22namespace syncer {
23class FCMHandler;
24class InvalidationsListener;
25
26// The non-test implementation of SyncInvalidationsService.
27class SyncInvalidationsServiceImpl : public SyncInvalidationsService {
28 public:
29 SyncInvalidationsServiceImpl(
30 gcm::GCMDriver* gcm_driver,
Marc Treibb1428bf2020-09-09 13:08:4231 instance_id::InstanceIDDriver* instance_id_driver);
Rushan Suleymanovd5c5ef52020-07-30 13:07:2432 ~SyncInvalidationsServiceImpl() override;
33
34 // SyncInvalidationsService implementation.
Paula Vidasc17e9d12020-09-10 15:22:1935 void SetActive(bool active) override;
Rushan Suleymanovd5c5ef52020-07-30 13:07:2436 void AddListener(InvalidationsListener* listener) override;
37 void RemoveListener(InvalidationsListener* listener) override;
Rushan Suleymanov74e7ee2592020-08-02 19:30:4038 void AddTokenObserver(FCMRegistrationTokenObserver* observer) override;
39 void RemoveTokenObserver(FCMRegistrationTokenObserver* observer) override;
Anton Bikineev1156b5f2021-05-15 22:35:3640 absl::optional<std::string> GetFCMRegistrationToken() const override;
Paula Vidas0e7f03f2020-09-15 17:49:5141 void SetInterestedDataTypesHandler(
42 InterestedDataTypesHandler* handler) override;
Anton Bikineev1156b5f2021-05-15 22:35:3643 absl::optional<ModelTypeSet> GetInterestedDataTypes() const override;
Paula Vidas0e7f03f2020-09-15 17:49:5144 void SetInterestedDataTypes(
45 const ModelTypeSet& data_types,
46 InterestedDataTypesAppliedCallback callback) override;
Rushan Suleymanovd5c5ef52020-07-30 13:07:2447
48 // KeyedService overrides.
49 void Shutdown() override;
50
Paula Vidasabc1ec252020-10-12 15:00:5851 // Used in integration tests.
52 FCMHandler* GetFCMHandlerForTesting();
53
Rushan Suleymanovd5c5ef52020-07-30 13:07:2454 private:
55 std::unique_ptr<FCMHandler> fcm_handler_;
Paula Vidas4f26b6662020-09-03 09:16:2356 InterestedDataTypesManager data_types_manager_;
Rushan Suleymanovd5c5ef52020-07-30 13:07:2457};
58
59} // namespace syncer
60
61#endif // COMPONENTS_SYNC_INVALIDATIONS_SYNC_INVALIDATIONS_SERVICE_IMPL_H_