| // 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 <string> |
| |
| #include "base/macros.h" |
| #include "base/memory/scoped_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. |
| class InstanceIDDriver { |
| public: |
| // Returns whether InstanceID is enabled. |
| static bool IsInstanceIDEnabled(); |
| |
| explicit InstanceIDDriver(gcm::GCMDriver* gcm_driver); |
| virtual ~InstanceIDDriver(); |
| |
| // Returns the InstanceID that provides the Instance ID service for the given |
| // application. The lifetime of InstanceID will be managed by this class. |
| InstanceID* GetInstanceID(const std::string& app_id); |
| |
| // Removes the InstanceID when it is not longer needed, i.e. the app is being |
| // uninstalled. |
| 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. |
| bool ExistsInstanceID(const std::string& app_id) const; |
| |
| private: |
| // Owned by GCMProfileServiceFactory, which is a dependency of |
| // InstanceIDProfileServiceFactory, which owns this. |
| gcm::GCMDriver* gcm_driver_; |
| |
| std::map<std::string, scoped_ptr<InstanceID>> instance_id_map_; |
| |
| DISALLOW_COPY_AND_ASSIGN(InstanceIDDriver); |
| }; |
| |
| } // namespace instance_id |
| |
| #endif // COMPONENTS_GCM_DRIVER_INSTANCE_ID_INSTANCE_ID_DRIVER_H_ |