Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1616)

Unified Diff: components/gcm_driver/gcm_driver_desktop.h

Issue 278493002: Split GCMDriver into platform-specific implementations (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix trybots Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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_

Powered by Google App Engine
This is Rietveld 408576698