Index: google_apis/gcm/gcm_client_impl.h |
diff --git a/google_apis/gcm/gcm_client_impl.h b/google_apis/gcm/gcm_client_impl.h |
deleted file mode 100644 |
index e543d73bc4facde4555e3f6a951a80cc51640a3c..0000000000000000000000000000000000000000 |
--- a/google_apis/gcm/gcm_client_impl.h |
+++ /dev/null |
@@ -1,301 +0,0 @@ |
-// Copyright 2013 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 GOOGLE_APIS_GCM_GCM_CLIENT_IMPL_H_ |
-#define GOOGLE_APIS_GCM_GCM_CLIENT_IMPL_H_ |
- |
-#include <map> |
-#include <string> |
-#include <vector> |
- |
-#include "base/compiler_specific.h" |
-#include "base/memory/ref_counted.h" |
-#include "base/memory/weak_ptr.h" |
-#include "base/stl_util.h" |
-#include "google_apis/gcm/base/mcs_message.h" |
-#include "google_apis/gcm/engine/gcm_store.h" |
-#include "google_apis/gcm/engine/gservices_settings.h" |
-#include "google_apis/gcm/engine/mcs_client.h" |
-#include "google_apis/gcm/engine/registration_request.h" |
-#include "google_apis/gcm/engine/unregistration_request.h" |
-#include "google_apis/gcm/gcm_client.h" |
-#include "google_apis/gcm/monitoring/gcm_stats_recorder_impl.h" |
-#include "google_apis/gcm/protocol/android_checkin.pb.h" |
-#include "google_apis/gcm/protocol/checkin.pb.h" |
-#include "net/base/net_log.h" |
-#include "net/url_request/url_request_context_getter.h" |
- |
-class GURL; |
- |
-namespace base { |
-class Clock; |
-class Time; |
-} // namespace base |
- |
-namespace mcs_proto { |
-class DataMessageStanza; |
-} // namespace mcs_proto |
- |
-namespace net { |
-class HttpNetworkSession; |
-} // namespace net |
- |
-namespace gcm { |
- |
-class CheckinRequest; |
-class ConnectionFactory; |
-class GCMClientImplTest; |
- |
-// Helper class for building GCM internals. Allows tests to inject fake versions |
-// as necessary. |
-class GCM_EXPORT GCMInternalsBuilder { |
- public: |
- GCMInternalsBuilder(); |
- virtual ~GCMInternalsBuilder(); |
- |
- virtual scoped_ptr<base::Clock> BuildClock(); |
- virtual scoped_ptr<MCSClient> BuildMCSClient( |
- const std::string& version, |
- base::Clock* clock, |
- ConnectionFactory* connection_factory, |
- GCMStore* gcm_store, |
- GCMStatsRecorder* recorder); |
- virtual scoped_ptr<ConnectionFactory> BuildConnectionFactory( |
- const std::vector<GURL>& endpoints, |
- const net::BackoffEntry::Policy& backoff_policy, |
- scoped_refptr<net::HttpNetworkSession> network_session, |
- net::NetLog* net_log, |
- GCMStatsRecorder* recorder); |
-}; |
- |
-// Implements the GCM Client. It is used to coordinate MCS Client (communication |
-// with MCS) and other pieces of GCM infrastructure like Registration and |
-// Checkins. It also allows for registering user delegates that host |
-// applications that send and receive messages. |
-class GCM_EXPORT GCMClientImpl |
- : public GCMClient, public GCMStatsRecorder::Delegate { |
- public: |
- explicit GCMClientImpl(scoped_ptr<GCMInternalsBuilder> internals_builder); |
- virtual ~GCMClientImpl(); |
- |
- // Overridden from GCMClient: |
- virtual void Initialize( |
- const ChromeBuildInfo& chrome_build_info, |
- const base::FilePath& store_path, |
- const std::vector<std::string>& account_ids, |
- const scoped_refptr<base::SequencedTaskRunner>& blocking_task_runner, |
- const scoped_refptr<net::URLRequestContextGetter>& |
- url_request_context_getter, |
- scoped_ptr<Encryptor> encryptor, |
- GCMClient::Delegate* delegate) OVERRIDE; |
- virtual void Start() OVERRIDE; |
- virtual void Stop() OVERRIDE; |
- virtual void CheckOut() OVERRIDE; |
- virtual void Register(const std::string& app_id, |
- const std::vector<std::string>& sender_ids) OVERRIDE; |
- virtual void Unregister(const std::string& app_id) OVERRIDE; |
- virtual void Send(const std::string& app_id, |
- const std::string& receiver_id, |
- const OutgoingMessage& message) OVERRIDE; |
- virtual void SetRecording(bool recording) OVERRIDE; |
- virtual void ClearActivityLogs() OVERRIDE; |
- virtual GCMStatistics GetStatistics() const OVERRIDE; |
- virtual void OnActivityRecorded() OVERRIDE; |
- |
- private: |
- // State representation of the GCMClient. |
- // Any change made to this enum should have corresponding change in the |
- // GetStateString(...) function. |
- enum State { |
- // Uninitialized. |
- UNINITIALIZED, |
- // Initialized, |
- INITIALIZED, |
- // GCM store loading is in progress. |
- LOADING, |
- // Initial device checkin is in progress. |
- INITIAL_DEVICE_CHECKIN, |
- // Ready to accept requests. |
- READY, |
- }; |
- |
- // The check-in info for the user. Returned by the server. |
- struct GCM_EXPORT CheckinInfo { |
- CheckinInfo() : android_id(0), secret(0) {} |
- bool IsValid() const { return android_id != 0 && secret != 0; } |
- void Reset() { |
- android_id = 0; |
- secret = 0; |
- } |
- |
- uint64 android_id; |
- uint64 secret; |
- }; |
- |
- // Collection of pending registration requests. Keys are app IDs, while values |
- // are pending registration requests to obtain a registration ID for |
- // requesting application. |
- typedef std::map<std::string, RegistrationRequest*> |
- PendingRegistrationRequests; |
- |
- // Collection of pending unregistration requests. Keys are app IDs, while |
- // values are pending unregistration requests to disable the registration ID |
- // currently assigned to the application. |
- typedef std::map<std::string, UnregistrationRequest*> |
- PendingUnregistrationRequests; |
- |
- friend class GCMClientImplTest; |
- |
- // Returns text representation of the enum State. |
- std::string GetStateString() const; |
- |
- // Callbacks for the MCSClient. |
- // Receives messages and dispatches them to relevant user delegates. |
- void OnMessageReceivedFromMCS(const gcm::MCSMessage& message); |
- // Receives confirmation of sent messages or information about errors. |
- void OnMessageSentToMCS(int64 user_serial_number, |
- const std::string& app_id, |
- const std::string& message_id, |
- MCSClient::MessageSendStatus status); |
- // Receives information about mcs_client_ errors. |
- void OnMCSError(); |
- |
- // Runs after GCM Store load is done to trigger continuation of the |
- // initialization. |
- void OnLoadCompleted(scoped_ptr<GCMStore::LoadResult> result); |
- // Initializes mcs_client_, which handles the connection to MCS. |
- void InitializeMCSClient(scoped_ptr<GCMStore::LoadResult> result); |
- // Complets the first time device checkin. |
- void OnFirstTimeDeviceCheckinCompleted(const CheckinInfo& checkin_info); |
- // Starts a login on mcs_client_. |
- void StartMCSLogin(); |
- // Resets state to before initialization. |
- void ResetState(); |
- // Sets state to ready. This will initiate the MCS login and notify the |
- // delegates. |
- void OnReady(); |
- |
- // Starts a first time device checkin. |
- void StartCheckin(); |
- // Completes the device checkin request by parsing the |checkin_response|. |
- // Function also cleans up the pending checkin. |
- void OnCheckinCompleted( |
- const checkin_proto::AndroidCheckinResponse& checkin_response); |
- |
- // Callback passed to GCMStore::SetGServicesSettings. |
- void SetGServicesSettingsCallback(bool success); |
- |
- // Schedules next periodic device checkin and makes sure there is at most one |
- // pending checkin at a time. This function is meant to be called after a |
- // successful checkin. |
- void SchedulePeriodicCheckin(); |
- // Gets the time until next checkin. |
- base::TimeDelta GetTimeToNextCheckin() const; |
- // Callback for setting last checkin time in the |gcm_store_|. |
- void SetLastCheckinTimeCallback(bool success); |
- |
- // Callback for persisting device credentials in the |gcm_store_|. |
- void SetDeviceCredentialsCallback(bool success); |
- |
- // Callback for persisting registration info in the |gcm_store_|. |
- void UpdateRegistrationCallback(bool success); |
- |
- // Completes the registration request. |
- void OnRegisterCompleted(const std::string& app_id, |
- const std::vector<std::string>& sender_ids, |
- RegistrationRequest::Status status, |
- const std::string& registration_id); |
- |
- // Completes the unregistration request. |
- void OnUnregisterCompleted(const std::string& app_id, |
- UnregistrationRequest::Status status); |
- |
- // Completes the GCM store destroy request. |
- void OnGCMStoreDestroyed(bool success); |
- |
- // Handles incoming data message and dispatches it the delegate of this class. |
- void HandleIncomingMessage(const gcm::MCSMessage& message); |
- |
- // Fires OnMessageReceived event on the delegate of this class, based on the |
- // details in |data_message_stanza| and |message_data|. |
- void HandleIncomingDataMessage( |
- const mcs_proto::DataMessageStanza& data_message_stanza, |
- MessageData& message_data); |
- |
- // Fires OnMessageSendError event on the delegate of this calss, based on the |
- // details in |data_message_stanza| and |message_data|. |
- void HandleIncomingSendError( |
- const mcs_proto::DataMessageStanza& data_message_stanza, |
- MessageData& message_data); |
- |
- // Builder for the GCM internals (mcs client, etc.). |
- scoped_ptr<GCMInternalsBuilder> internals_builder_; |
- |
- // Recorder that logs GCM activities. |
- GCMStatsRecorderImpl recorder_; |
- |
- // State of the GCM Client Implementation. |
- State state_; |
- |
- GCMClient::Delegate* delegate_; |
- |
- // Device checkin info (android ID and security token used by device). |
- CheckinInfo device_checkin_info_; |
- |
- // Clock used for timing of retry logic. Passed in for testing. Owned by |
- // GCMClientImpl. |
- scoped_ptr<base::Clock> clock_; |
- |
- // Information about the chrome build. |
- // TODO(fgorski): Check if it can be passed in constructor and made const. |
- ChromeBuildInfo chrome_build_info_; |
- |
- // Persistent data store for keeping device credentials, messages and user to |
- // serial number mappings. |
- scoped_ptr<GCMStore> gcm_store_; |
- |
- scoped_refptr<net::HttpNetworkSession> network_session_; |
- net::BoundNetLog net_log_; |
- scoped_ptr<ConnectionFactory> connection_factory_; |
- scoped_refptr<net::URLRequestContextGetter> url_request_context_getter_; |
- |
- // Controls receiving and sending of packets and reliable message queueing. |
- scoped_ptr<MCSClient> mcs_client_; |
- |
- scoped_ptr<CheckinRequest> checkin_request_; |
- std::vector<std::string> account_ids_; |
- |
- // Cached registration info. |
- RegistrationInfoMap registrations_; |
- |
- // Currently pending registration requests. GCMClientImpl owns the |
- // RegistrationRequests. |
- PendingRegistrationRequests pending_registration_requests_; |
- STLValueDeleter<PendingRegistrationRequests> |
- pending_registration_requests_deleter_; |
- |
- // Currently pending unregistration requests. GCMClientImpl owns the |
- // UnregistrationRequests. |
- PendingUnregistrationRequests pending_unregistration_requests_; |
- STLValueDeleter<PendingUnregistrationRequests> |
- pending_unregistration_requests_deleter_; |
- |
- // G-services settings that were provided by MCS. |
- GServicesSettings gservices_settings_; |
- |
- // Time of the last successful checkin. |
- base::Time last_checkin_time_; |
- |
- // Factory for creating references when scheduling periodic checkin. |
- base::WeakPtrFactory<GCMClientImpl> periodic_checkin_ptr_factory_; |
- |
- // Factory for creating references in callbacks. |
- base::WeakPtrFactory<GCMClientImpl> weak_ptr_factory_; |
- |
- DISALLOW_COPY_AND_ASSIGN(GCMClientImpl); |
-}; |
- |
-} // namespace gcm |
- |
-#endif // GOOGLE_APIS_GCM_GCM_CLIENT_IMPL_H_ |