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..06bb262fa6f7c433c9e44d2750bc86fa94ca4012 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,9 @@ class CheckinRequest; |
class ConnectionFactory; |
class GCMClientImplTest; |
+// Map with GServices settings. |
+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 { |
@@ -163,11 +166,14 @@ class GCM_EXPORT GCMClientImpl : public GCMClient { |
// 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); |
+ // 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, |
+ const CheckinInfo& checkin_info); |
// Callback for persisting device credentials in the |gcm_store_|. |
void SetDeviceCredentialsCallback(bool success); |
@@ -203,6 +209,12 @@ class GCM_EXPORT GCMClientImpl : public GCMClient { |
const mcs_proto::DataMessageStanza& data_message_stanza, |
MessageData& message_data); |
+ // Updates the GServicesSettings based on the |checkin_response|. |
+ void UpdateGServicesSettings( |
+ const checkin_proto::AndroidCheckinResponse& checkin_response); |
+ // Completes the GServicesSettings update request. |
+ void UpdateGServicesSettingsCallback(bool success); |
+ |
// Builder for the GCM internals (mcs client, etc.). |
scoped_ptr<GCMInternalsBuilder> internals_builder_; |
@@ -231,6 +243,9 @@ 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 g_services_settings_; |
+ |
// Controls receiving and sending of packets and reliable message queueing. |
scoped_ptr<MCSClient> mcs_client_; |