| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef COMPONENTS_GCM_DRIVER_GCM_DRIVER_H_ | 5 #ifndef COMPONENTS_GCM_DRIVER_GCM_DRIVER_H_ |
| 6 #define COMPONENTS_GCM_DRIVER_GCM_DRIVER_H_ | 6 #define COMPONENTS_GCM_DRIVER_GCM_DRIVER_H_ |
| 7 | 7 |
| 8 #include <map> | 8 #include <map> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <vector> | 10 #include <vector> |
| 11 | 11 |
| 12 #include "base/callback.h" | 12 #include "base/callback.h" |
| 13 #include "base/macros.h" | 13 #include "base/macros.h" |
| 14 #include "base/memory/ref_counted.h" |
| 14 #include "base/memory/weak_ptr.h" | 15 #include "base/memory/weak_ptr.h" |
| 15 #include "base/threading/thread_checker.h" | 16 #include "base/threading/thread_checker.h" |
| 16 #include "components/gcm_driver/common/gcm_messages.h" | 17 #include "components/gcm_driver/common/gcm_messages.h" |
| 18 #include "components/gcm_driver/crypto/gcm_encryption_provider.h" |
| 17 #include "components/gcm_driver/default_gcm_app_handler.h" | 19 #include "components/gcm_driver/default_gcm_app_handler.h" |
| 18 #include "components/gcm_driver/gcm_client.h" | 20 #include "components/gcm_driver/gcm_client.h" |
| 19 | 21 |
| 22 namespace base { |
| 23 class FilePath; |
| 24 class SequencedTaskRunner; |
| 25 } |
| 26 |
| 20 namespace gcm { | 27 namespace gcm { |
| 21 | 28 |
| 22 class GCMAppHandler; | 29 class GCMAppHandler; |
| 23 class GCMConnectionObserver; | 30 class GCMConnectionObserver; |
| 24 struct AccountMapping; | 31 struct AccountMapping; |
| 25 | 32 |
| 26 // Provides the InstanceID support via GCMDriver. | 33 // Provides the InstanceID support via GCMDriver. |
| 27 class InstanceIDHandler { | 34 class InstanceIDHandler { |
| 28 public: | 35 public: |
| 29 typedef base::Callback<void(const std::string& token, | 36 typedef base::Callback<void(const std::string& token, |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 65 }; | 72 }; |
| 66 | 73 |
| 67 // Bridge between GCM users in Chrome and the platform-specific implementation. | 74 // Bridge between GCM users in Chrome and the platform-specific implementation. |
| 68 class GCMDriver { | 75 class GCMDriver { |
| 69 public: | 76 public: |
| 70 typedef std::map<std::string, GCMAppHandler*> GCMAppHandlerMap; | 77 typedef std::map<std::string, GCMAppHandler*> GCMAppHandlerMap; |
| 71 typedef base::Callback<void(const std::string& registration_id, | 78 typedef base::Callback<void(const std::string& registration_id, |
| 72 GCMClient::Result result)> RegisterCallback; | 79 GCMClient::Result result)> RegisterCallback; |
| 73 typedef base::Callback<void(const std::string& message_id, | 80 typedef base::Callback<void(const std::string& message_id, |
| 74 GCMClient::Result result)> SendCallback; | 81 GCMClient::Result result)> SendCallback; |
| 82 typedef base::Callback<void(const std::string&)> GetPublicKeyCallback; |
| 75 typedef base::Callback<void(GCMClient::Result result)> UnregisterCallback; | 83 typedef base::Callback<void(GCMClient::Result result)> UnregisterCallback; |
| 76 typedef base::Callback<void(const GCMClient::GCMStatistics& stats)> | 84 typedef base::Callback<void(const GCMClient::GCMStatistics& stats)> |
| 77 GetGCMStatisticsCallback; | 85 GetGCMStatisticsCallback; |
| 78 | 86 |
| 79 GCMDriver(); | 87 GCMDriver( |
| 88 const base::FilePath& store_path, |
| 89 const scoped_refptr<base::SequencedTaskRunner>& blocking_task_runner); |
| 80 virtual ~GCMDriver(); | 90 virtual ~GCMDriver(); |
| 81 | 91 |
| 82 // Registers |sender_ids| for an app. A registration ID will be returned by | 92 // Registers |sender_ids| for an app. A registration ID will be returned by |
| 83 // the GCM server. On Android, only a single sender ID is supported, but | 93 // the GCM server. On Android, only a single sender ID is supported, but |
| 84 // instead multiple simultaneous registrations are allowed. | 94 // instead multiple simultaneous registrations are allowed. |
| 85 // |app_id|: application ID. | 95 // |app_id|: application ID. |
| 86 // |sender_ids|: list of IDs of the servers that are allowed to send the | 96 // |sender_ids|: list of IDs of the servers that are allowed to send the |
| 87 // messages to the application. These IDs are assigned by the | 97 // messages to the application. These IDs are assigned by the |
| 88 // Google API Console. | 98 // Google API Console. |
| 89 // |callback|: to be called once the asynchronous operation is done. | 99 // |callback|: to be called once the asynchronous operation is done. |
| (...skipping 20 matching lines...) Expand all Loading... |
| 110 // Sends a message to a given receiver. | 120 // Sends a message to a given receiver. |
| 111 // |app_id|: application ID. | 121 // |app_id|: application ID. |
| 112 // |receiver_id|: registration ID of the receiver party. | 122 // |receiver_id|: registration ID of the receiver party. |
| 113 // |message|: message to be sent. | 123 // |message|: message to be sent. |
| 114 // |callback|: to be called once the asynchronous operation is done. | 124 // |callback|: to be called once the asynchronous operation is done. |
| 115 void Send(const std::string& app_id, | 125 void Send(const std::string& app_id, |
| 116 const std::string& receiver_id, | 126 const std::string& receiver_id, |
| 117 const OutgoingMessage& message, | 127 const OutgoingMessage& message, |
| 118 const SendCallback& callback); | 128 const SendCallback& callback); |
| 119 | 129 |
| 130 // Get the public encryption key associated with |app_id|. If no keys have |
| 131 // been associated with |app_id| yet, they will be created. The |callback| |
| 132 // will be invoked when it is available. |
| 133 void GetPublicKey(const std::string& app_id, |
| 134 const GetPublicKeyCallback& callback); |
| 135 |
| 120 const GCMAppHandlerMap& app_handlers() const { return app_handlers_; } | 136 const GCMAppHandlerMap& app_handlers() const { return app_handlers_; } |
| 121 | 137 |
| 122 // This method must be called before destroying the GCMDriver. Once it has | 138 // This method must be called before destroying the GCMDriver. Once it has |
| 123 // been called, no other GCMDriver methods may be used. | 139 // been called, no other GCMDriver methods may be used. |
| 124 virtual void Shutdown(); | 140 virtual void Shutdown(); |
| 125 | 141 |
| 126 // Called when the user signs in to or out of a GAIA account. | 142 // Called when the user signs in to or out of a GAIA account. |
| 127 virtual void OnSignedIn() = 0; | 143 virtual void OnSignedIn() = 0; |
| 128 virtual void OnSignedOut() = 0; | 144 virtual void OnSignedOut() = 0; |
| 129 | 145 |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 267 | 283 |
| 268 // Callback map (from app_id to callback) for Register. | 284 // Callback map (from app_id to callback) for Register. |
| 269 std::map<std::string, RegisterCallback> register_callbacks_; | 285 std::map<std::string, RegisterCallback> register_callbacks_; |
| 270 | 286 |
| 271 // Callback map (from app_id to callback) for Unregister. | 287 // Callback map (from app_id to callback) for Unregister. |
| 272 std::map<std::string, UnregisterCallback> unregister_callbacks_; | 288 std::map<std::string, UnregisterCallback> unregister_callbacks_; |
| 273 | 289 |
| 274 // Callback map (from <app_id, message_id> to callback) for Send. | 290 // Callback map (from <app_id, message_id> to callback) for Send. |
| 275 std::map<std::pair<std::string, std::string>, SendCallback> send_callbacks_; | 291 std::map<std::pair<std::string, std::string>, SendCallback> send_callbacks_; |
| 276 | 292 |
| 293 // The encryption provider, used for key management and decryption of |
| 294 // encrypted, incoming messages. |
| 295 GCMEncryptionProvider encryption_provider_; |
| 296 |
| 277 // App handler map (from app_id to handler pointer). | 297 // App handler map (from app_id to handler pointer). |
| 278 // The handler is not owned. | 298 // The handler is not owned. |
| 279 GCMAppHandlerMap app_handlers_; | 299 GCMAppHandlerMap app_handlers_; |
| 280 | 300 |
| 281 // The default handler when no app handler can be found in the map. | 301 // The default handler when no app handler can be found in the map. |
| 282 DefaultGCMAppHandler default_app_handler_; | 302 DefaultGCMAppHandler default_app_handler_; |
| 283 | 303 |
| 284 base::WeakPtrFactory<GCMDriver> weak_ptr_factory_; | 304 base::WeakPtrFactory<GCMDriver> weak_ptr_factory_; |
| 285 | 305 |
| 286 DISALLOW_COPY_AND_ASSIGN(GCMDriver); | 306 DISALLOW_COPY_AND_ASSIGN(GCMDriver); |
| 287 }; | 307 }; |
| 288 | 308 |
| 289 } // namespace gcm | 309 } // namespace gcm |
| 290 | 310 |
| 291 #endif // COMPONENTS_GCM_DRIVER_GCM_DRIVER_H_ | 311 #endif // COMPONENTS_GCM_DRIVER_GCM_DRIVER_H_ |
| OLD | NEW |