chromium/components/invalidation/impl/fcm_invalidation_service.h

// Copyright 2019 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_INVALIDATION_IMPL_FCM_INVALIDATION_SERVICE_H_
#define COMPONENTS_INVALIDATION_IMPL_FCM_INVALIDATION_SERVICE_H_

#include <memory>
#include <optional>
#include <string>

#include "base/functional/callback.h"
#include "base/memory/raw_ptr.h"
#include "base/sequence_checker.h"
#include "components/gcm_driver/instance_id/instance_id.h"
#include "components/invalidation/impl/fcm_invalidation_listener.h"
#include "components/invalidation/impl/invalidator_registrar_with_memory.h"
#include "components/invalidation/public/invalidation_handler.h"
#include "components/invalidation/public/invalidation_service.h"

class PrefService;
class PrefRegistrySimple;

namespace instance_id {
class InstanceIDDriver;
}

namespace invalidation {

class FCMNetworkHandler;
class PerUserTopicSubscriptionManager;

FCMNetworkHandlerCallback;

PerUserTopicSubscriptionManagerCallback;

FCMInvalidationListenerCallback;

// The InvalidationService wraps the C++ Invalidation Client (FCM) library.
class FCMInvalidationService : public InvalidationService,
                               public IdentityProvider::Observer,
                               public FCMInvalidationListener::Delegate {};

}  // namespace invalidation

#endif  // COMPONENTS_INVALIDATION_IMPL_FCM_INVALIDATION_SERVICE_H_