Chromium Code Reviews| 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 |
| index 4aa38ba3a8102a8bf21567b62760f1dc41d460c3..9253ebd0a9f8a5744d202699551b724daf5a80ec 100644 |
| --- a/google_apis/gcm/gcm_client_impl.h |
| +++ b/google_apis/gcm/gcm_client_impl.h |
| @@ -19,7 +19,7 @@ |
| #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/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" |
| @@ -39,6 +39,10 @@ class CheckinRequest; |
| class ConnectionFactory; |
| class GCMClientImplTest; |
| +// Map with GServices settings. |
| +// TODO(fgorski): Extract services handling to a separate struct/class. |
| +typedef std::map<std::string, std::string> GServicesSettingsMap; |
| + |
| // Helper class for building GCM internals. Allows tests to inject fake versions |
| // as necessary. |
| class GCM_EXPORT GCMInternalsBuilder { |
| @@ -162,12 +166,14 @@ class GCM_EXPORT GCMClientImpl : public GCMClient { |
| void OnReady(); |
| // Starts a first time device checkin. |
| - void StartCheckin(const CheckinInfo& checkin_info); |
| - // Completes the device checkin request. |
| - // |android_id| and |security_token| are expected to be non-zero or an error |
| - // is triggered. Function also cleans up the pending checkin. |
| - void OnCheckinCompleted(uint64 android_id, |
| - uint64 security_token); |
| + 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); |
| + // Schedules next device checkin, based on |last_checkin_time| and |
| + // checkin_interval specified in GServices settings. |
| + void SchedulePeriodicCheckin(const base::Time& last_checkin_time); |
| // Callback for persisting device credentials in the |gcm_store_|. |
| void SetDeviceCredentialsCallback(bool success); |
| @@ -203,6 +209,16 @@ class GCM_EXPORT GCMClientImpl : public GCMClient { |
| const mcs_proto::DataMessageStanza& data_message_stanza, |
| MessageData& message_data); |
| + // Updates the GServicesSettings based on the |checkin_response|. |
|
Nicolas Zea
2014/04/01 21:42:14
Mention that it assumes base::Time::Now() is the c
fgorski
2014/04/02 18:23:00
Done.
|
| + void UpdateGServicesSettings( |
| + const checkin_proto::AndroidCheckinResponse& checkin_response); |
| + // Completes the G-services settings update request. |
| + void UpdateGServicesSettingsCallback(bool success); |
| + |
| + // Calculates the Checkin interval based on the services settings or defaults |
| + // to a sensible value. Virtual for testing. |
| + virtual base::TimeDelta GetCheckinInterval() const; |
| + |
| // Builder for the GCM internals (mcs client, etc.). |
| scoped_ptr<GCMInternalsBuilder> internals_builder_; |
| @@ -231,6 +247,12 @@ class GCM_EXPORT GCMClientImpl : public GCMClient { |
| scoped_ptr<ConnectionFactory> connection_factory_; |
| scoped_refptr<net::URLRequestContextGetter> url_request_context_getter_; |
| + // Map with GServices settings, such us checkin_interval, checkin_url, etc. |
| + GServicesSettingsMap gservices_settings_; |
| + |
| + // Digest of the |gservices_settings|. |
| + std::string gservices_digest_; |
| + |
| // Controls receiving and sending of packets and reliable message queueing. |
| scoped_ptr<MCSClient> mcs_client_; |