12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- // Copyright 2015 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #ifndef COMPONENTS_GCM_DRIVER_INSTANCE_ID_INSTANCE_ID_DRIVER_H_
- #define COMPONENTS_GCM_DRIVER_INSTANCE_ID_INSTANCE_ID_DRIVER_H_
- #include <map>
- #include <memory>
- #include <string>
- #include "base/memory/raw_ptr.h"
- namespace gcm {
- class GCMDriver;
- } // namespace gcm
- namespace instance_id {
- class InstanceID;
- // Bridge between Instance ID users in Chrome and the platform-specific
- // implementation.
- //
- // Create instances of this class with |InstanceIDProfileServiceFactory|.
- class InstanceIDDriver {
- public:
- explicit InstanceIDDriver(gcm::GCMDriver* gcm_driver);
- InstanceIDDriver(const InstanceIDDriver&) = delete;
- InstanceIDDriver& operator=(const InstanceIDDriver&) = delete;
- virtual ~InstanceIDDriver();
- // Returns the InstanceID that provides the Instance ID service for the given
- // application. The lifetime of the InstanceID will be managed by this class.
- // App IDs are arbitrary strings that typically look like "chrome.foo.bar".
- virtual InstanceID* GetInstanceID(const std::string& app_id);
- // Removes the InstanceID when it is not longer needed, i.e. the app is being
- // uninstalled.
- virtual void RemoveInstanceID(const std::string& app_id);
- // Returns true if the InstanceID for the given application has been created.
- // This is currently only used for testing purpose.
- virtual bool ExistsInstanceID(const std::string& app_id) const;
- private:
- // Owned by GCMProfileServiceFactory, which is a dependency of
- // InstanceIDProfileServiceFactory, which owns this.
- raw_ptr<gcm::GCMDriver> gcm_driver_;
- std::map<std::string, std::unique_ptr<InstanceID>> instance_id_map_;
- };
- } // namespace instance_id
- #endif // COMPONENTS_GCM_DRIVER_INSTANCE_ID_INSTANCE_ID_DRIVER_H_
|