Index: components/gcm_driver/gcm_driver_desktop.h |
diff --git a/components/gcm_driver/gcm_driver.h b/components/gcm_driver/gcm_driver_desktop.h |
similarity index 55% |
copy from components/gcm_driver/gcm_driver.h |
copy to components/gcm_driver/gcm_driver_desktop.h |
index 897dbfa51975ce883b18bdb3440d06e11c20e2c5..1a6d8826dbf7a0fdb1cc1007c88332f97b57a3c3 100644 |
--- a/components/gcm_driver/gcm_driver.h |
+++ b/components/gcm_driver/gcm_driver_desktop.h |
@@ -2,20 +2,19 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#ifndef COMPONENTS_GCM_DRIVER_GCM_DRIVER_H_ |
-#define COMPONENTS_GCM_DRIVER_GCM_DRIVER_H_ |
+#ifndef COMPONENTS_GCM_DRIVER_GCM_DRIVER_DESKTOP_H_ |
+#define COMPONENTS_GCM_DRIVER_GCM_DRIVER_DESKTOP_H_ |
#include <map> |
#include <string> |
#include <vector> |
-#include "base/basictypes.h" |
-#include "base/callback.h" |
#include "base/compiler_specific.h" |
+#include "base/macros.h" |
#include "base/memory/ref_counted.h" |
#include "base/memory/scoped_ptr.h" |
#include "base/memory/weak_ptr.h" |
-#include "components/gcm_driver/default_gcm_app_handler.h" |
+#include "components/gcm_driver/gcm_driver.h" |
#include "google_apis/gaia/identity_provider.h" |
#include "google_apis/gcm/gcm_client.h" |
@@ -37,19 +36,10 @@ namespace gcm { |
class GCMAppHandler; |
class GCMClientFactory; |
-// A bridge between the GCM users in Chrome and the GCMClient layer. |
-class GCMDriver : public IdentityProvider::Observer { |
+// GCMDriver implementation for desktop and Chrome OS, using GCMClient. |
+class GCMDriverDesktop : public GCMDriver, public IdentityProvider::Observer { |
public: |
- typedef std::map<std::string, GCMAppHandler*> GCMAppHandlerMap; |
- typedef base::Callback<void(const std::string& registration_id, |
- GCMClient::Result result)> RegisterCallback; |
- typedef base::Callback<void(const std::string& message_id, |
- GCMClient::Result result)> SendCallback; |
- typedef base::Callback<void(GCMClient::Result result)> UnregisterCallback; |
- typedef base::Callback<void(const GCMClient::GCMStatistics& stats)> |
- GetGCMStatisticsCallback; |
- |
- GCMDriver( |
+ GCMDriverDesktop( |
scoped_ptr<GCMClientFactory> gcm_client_factory, |
scoped_ptr<IdentityProvider> identity_provider, |
const GCMClient::ChromeBuildInfo& chrome_build_info, |
@@ -58,81 +48,39 @@ class GCMDriver : public IdentityProvider::Observer { |
const scoped_refptr<base::SequencedTaskRunner>& ui_thread, |
const scoped_refptr<base::SequencedTaskRunner>& io_thread, |
const scoped_refptr<base::SequencedTaskRunner>& blocking_task_runner); |
- virtual ~GCMDriver(); |
+ virtual ~GCMDriverDesktop(); |
- // Enables/disables GCM service. |
- void Enable(); |
- void Disable(); |
+ // GCMDriver overrides: |
+ virtual void Shutdown() OVERRIDE; |
+ virtual void AddAppHandler(const std::string& app_id, |
+ GCMAppHandler* handler) OVERRIDE; |
+ virtual void RemoveAppHandler(const std::string& app_id) OVERRIDE; |
- // This method must be called before destroying the GCMDriver. Once it has |
- // been called, no other GCMDriver methods may be used. |
- virtual void Shutdown(); |
- |
- // Adds a handler for a given app. |
- virtual void AddAppHandler(const std::string& app_id, GCMAppHandler* handler); |
- |
- // Remove the handler for a given app. |
- virtual void RemoveAppHandler(const std::string& app_id); |
- |
- // Registers |sender_id| for an app. A registration ID will be returned by |
- // the GCM server. |
- // |app_id|: application ID. |
- // |sender_ids|: list of IDs of the servers that are allowed to send the |
- // messages to the application. These IDs are assigned by the |
- // Google API Console. |
- // |callback|: to be called once the asynchronous operation is done. |
+ // GCMDriver implementation: |
+ virtual void Enable() OVERRIDE; |
+ virtual void Disable() OVERRIDE; |
virtual void Register(const std::string& app_id, |
const std::vector<std::string>& sender_ids, |
- const RegisterCallback& callback); |
- |
- // Unregisters an app from using GCM. |
- // |app_id|: application ID. |
- // |callback|: to be called once the asynchronous operation is done. |
+ const RegisterCallback& callback) OVERRIDE; |
virtual void Unregister(const std::string& app_id, |
- const UnregisterCallback& callback); |
- |
- // Sends a message to a given receiver. |
- // |app_id|: application ID. |
- // |receiver_id|: registration ID of the receiver party. |
- // |message|: message to be sent. |
- // |callback|: to be called once the asynchronous operation is done. |
+ const UnregisterCallback& callback) OVERRIDE; |
virtual void Send(const std::string& app_id, |
const std::string& receiver_id, |
const GCMClient::OutgoingMessage& message, |
- const SendCallback& callback); |
- |
- // For testing purpose. |
- GCMClient* GetGCMClientForTesting() const; |
- |
- // Returns true if the service was started. |
- bool IsStarted() const; |
- |
- // Returns true if the gcm client is ready. |
- bool IsGCMClientReady() const; |
- |
- // Get GCM client internal states and statistics. |
- // If clear_logs is true then activity logs will be cleared before the stats |
- // are returned. |
- void GetGCMStatistics(const GetGCMStatisticsCallback& callback, |
- bool clear_logs); |
- |
- // Enables/disables GCM activity recording, and then returns the stats. |
- void SetGCMRecording(const GetGCMStatisticsCallback& callback, |
- bool recording); |
- |
- // Returns the user name if the profile is signed in. Empty string otherwise. |
- std::string SignedInUserName() const; |
- |
- // IdentityProvider::Observer: |
+ const SendCallback& callback) OVERRIDE; |
+ virtual GCMClient* GetGCMClientForTesting() const OVERRIDE; |
+ virtual bool IsStarted() const OVERRIDE; |
+ virtual bool IsGCMClientReady() const OVERRIDE; |
+ virtual void GetGCMStatistics(const GetGCMStatisticsCallback& callback, |
+ bool clear_logs) OVERRIDE; |
+ virtual void SetGCMRecording(const GetGCMStatisticsCallback& callback, |
+ bool recording) OVERRIDE; |
+ virtual std::string SignedInUserName() const OVERRIDE; |
+ |
+ // IdentityProvider::Observer implementation: |
virtual void OnActiveAccountLogin() OVERRIDE; |
virtual void OnActiveAccountLogout() OVERRIDE; |
- const GCMAppHandlerMap& app_handlers() const { return app_handlers_; } |
- |
- protected: |
- // Used for constructing fake GCMDriver for testing purpose. |
- GCMDriver(); |
- |
private: |
class DelayedTaskController; |
class IOWorker; |
@@ -178,9 +126,6 @@ class GCMDriver : public IdentityProvider::Observer { |
const GCMClient::SendErrorDetails& send_error_details); |
void GCMClientReady(); |
- // Returns the handler for the given app. |
- GCMAppHandler* GetAppHandler(const std::string& app_id); |
- |
void GetGCMStatisticsFinished(GCMClient::GCMStatistics stats); |
// Flag to indicate if GCM is enabled. |
@@ -203,13 +148,6 @@ class GCMDriver : public IdentityProvider::Observer { |
// thread. |
scoped_ptr<IOWorker> io_worker_; |
- // App handler map (from app_id to handler pointer). |
- // The handler is not owned. |
- GCMAppHandlerMap app_handlers_; |
- |
- // The default handler when no app handler can be found in the map. |
- DefaultGCMAppHandler default_app_handler_; |
- |
// Callback map (from app_id to callback) for Register. |
std::map<std::string, RegisterCallback> register_callbacks_; |
@@ -223,11 +161,11 @@ class GCMDriver : public IdentityProvider::Observer { |
GetGCMStatisticsCallback request_gcm_statistics_callback_; |
// Used to pass a weak pointer to the IO worker. |
- base::WeakPtrFactory<GCMDriver> weak_ptr_factory_; |
+ base::WeakPtrFactory<GCMDriverDesktop> weak_ptr_factory_; |
- DISALLOW_COPY_AND_ASSIGN(GCMDriver); |
+ DISALLOW_COPY_AND_ASSIGN(GCMDriverDesktop); |
}; |
} // namespace gcm |
-#endif // COMPONENTS_GCM_DRIVER_GCM_DRIVER_H_ |
+#endif // COMPONENTS_GCM_DRIVER_GCM_DRIVER_DESKTOP_H_ |