| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef GOOGLE_APIS_GCM_GCM_CLIENT_IMPL_H_ | 5 #ifndef GOOGLE_APIS_GCM_GCM_CLIENT_IMPL_H_ |
| 6 #define GOOGLE_APIS_GCM_GCM_CLIENT_IMPL_H_ | 6 #define GOOGLE_APIS_GCM_GCM_CLIENT_IMPL_H_ |
| 7 | 7 |
| 8 #include <map> | 8 #include <map> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 66 const net::BackoffEntry::Policy& backoff_policy, | 66 const net::BackoffEntry::Policy& backoff_policy, |
| 67 scoped_refptr<net::HttpNetworkSession> network_session, | 67 scoped_refptr<net::HttpNetworkSession> network_session, |
| 68 net::NetLog* net_log, | 68 net::NetLog* net_log, |
| 69 GCMStatsRecorder* recorder); | 69 GCMStatsRecorder* recorder); |
| 70 }; | 70 }; |
| 71 | 71 |
| 72 // Implements the GCM Client. It is used to coordinate MCS Client (communication | 72 // Implements the GCM Client. It is used to coordinate MCS Client (communication |
| 73 // with MCS) and other pieces of GCM infrastructure like Registration and | 73 // with MCS) and other pieces of GCM infrastructure like Registration and |
| 74 // Checkins. It also allows for registering user delegates that host | 74 // Checkins. It also allows for registering user delegates that host |
| 75 // applications that send and receive messages. | 75 // applications that send and receive messages. |
| 76 class GCM_EXPORT GCMClientImpl : public GCMClient { | 76 class GCM_EXPORT GCMClientImpl |
| 77 : public GCMClient, public GCMStatsRecorder::Delegate { |
| 77 public: | 78 public: |
| 78 explicit GCMClientImpl(scoped_ptr<GCMInternalsBuilder> internals_builder); | 79 explicit GCMClientImpl(scoped_ptr<GCMInternalsBuilder> internals_builder); |
| 79 virtual ~GCMClientImpl(); | 80 virtual ~GCMClientImpl(); |
| 80 | 81 |
| 81 // Overridden from GCMClient: | 82 // Overridden from GCMClient: |
| 82 virtual void Initialize( | 83 virtual void Initialize( |
| 83 const checkin_proto::ChromeBuildProto& chrome_build_proto, | 84 const checkin_proto::ChromeBuildProto& chrome_build_proto, |
| 84 const base::FilePath& store_path, | 85 const base::FilePath& store_path, |
| 85 const std::vector<std::string>& account_ids, | 86 const std::vector<std::string>& account_ids, |
| 86 const scoped_refptr<base::SequencedTaskRunner>& blocking_task_runner, | 87 const scoped_refptr<base::SequencedTaskRunner>& blocking_task_runner, |
| 87 const scoped_refptr<net::URLRequestContextGetter>& | 88 const scoped_refptr<net::URLRequestContextGetter>& |
| 88 url_request_context_getter, | 89 url_request_context_getter, |
| 89 Delegate* delegate) OVERRIDE; | 90 GCMClient::Delegate* delegate) OVERRIDE; |
| 90 virtual void Load() OVERRIDE; | 91 virtual void Load() OVERRIDE; |
| 91 virtual void Stop() OVERRIDE; | 92 virtual void Stop() OVERRIDE; |
| 92 virtual void CheckOut() OVERRIDE; | 93 virtual void CheckOut() OVERRIDE; |
| 93 virtual void Register(const std::string& app_id, | 94 virtual void Register(const std::string& app_id, |
| 94 const std::vector<std::string>& sender_ids) OVERRIDE; | 95 const std::vector<std::string>& sender_ids) OVERRIDE; |
| 95 virtual void Unregister(const std::string& app_id) OVERRIDE; | 96 virtual void Unregister(const std::string& app_id) OVERRIDE; |
| 96 virtual void Send(const std::string& app_id, | 97 virtual void Send(const std::string& app_id, |
| 97 const std::string& receiver_id, | 98 const std::string& receiver_id, |
| 98 const OutgoingMessage& message) OVERRIDE; | 99 const OutgoingMessage& message) OVERRIDE; |
| 99 virtual void SetRecording(bool recording) OVERRIDE; | 100 virtual void SetRecording(bool recording) OVERRIDE; |
| 100 virtual void ClearActivityLogs() OVERRIDE; | 101 virtual void ClearActivityLogs() OVERRIDE; |
| 101 virtual GCMStatistics GetStatistics() const OVERRIDE; | 102 virtual GCMStatistics GetStatistics() const OVERRIDE; |
| 103 virtual void OnActivityRecorded() OVERRIDE; |
| 102 | 104 |
| 103 private: | 105 private: |
| 104 // State representation of the GCMClient. | 106 // State representation of the GCMClient. |
| 105 // Any change made to this enum should have corresponding change in the | 107 // Any change made to this enum should have corresponding change in the |
| 106 // GetStateString(...) function. | 108 // GetStateString(...) function. |
| 107 enum State { | 109 enum State { |
| 108 // Uninitialized. | 110 // Uninitialized. |
| 109 UNINITIALIZED, | 111 UNINITIALIZED, |
| 110 // Initialized, | 112 // Initialized, |
| 111 INITIALIZED, | 113 INITIALIZED, |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 228 | 230 |
| 229 // Builder for the GCM internals (mcs client, etc.). | 231 // Builder for the GCM internals (mcs client, etc.). |
| 230 scoped_ptr<GCMInternalsBuilder> internals_builder_; | 232 scoped_ptr<GCMInternalsBuilder> internals_builder_; |
| 231 | 233 |
| 232 // Recorder that logs GCM activities. | 234 // Recorder that logs GCM activities. |
| 233 GCMStatsRecorder recorder_; | 235 GCMStatsRecorder recorder_; |
| 234 | 236 |
| 235 // State of the GCM Client Implementation. | 237 // State of the GCM Client Implementation. |
| 236 State state_; | 238 State state_; |
| 237 | 239 |
| 238 Delegate* delegate_; | 240 GCMClient::Delegate* delegate_; |
| 239 | 241 |
| 240 // Device checkin info (android ID and security token used by device). | 242 // Device checkin info (android ID and security token used by device). |
| 241 CheckinInfo device_checkin_info_; | 243 CheckinInfo device_checkin_info_; |
| 242 | 244 |
| 243 // Clock used for timing of retry logic. Passed in for testing. Owned by | 245 // Clock used for timing of retry logic. Passed in for testing. Owned by |
| 244 // GCMClientImpl. | 246 // GCMClientImpl. |
| 245 scoped_ptr<base::Clock> clock_; | 247 scoped_ptr<base::Clock> clock_; |
| 246 | 248 |
| 247 // Information about the chrome build. | 249 // Information about the chrome build. |
| 248 // TODO(fgorski): Check if it can be passed in constructor and made const. | 250 // TODO(fgorski): Check if it can be passed in constructor and made const. |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 289 | 291 |
| 290 // Factory for creating references in callbacks. | 292 // Factory for creating references in callbacks. |
| 291 base::WeakPtrFactory<GCMClientImpl> weak_ptr_factory_; | 293 base::WeakPtrFactory<GCMClientImpl> weak_ptr_factory_; |
| 292 | 294 |
| 293 DISALLOW_COPY_AND_ASSIGN(GCMClientImpl); | 295 DISALLOW_COPY_AND_ASSIGN(GCMClientImpl); |
| 294 }; | 296 }; |
| 295 | 297 |
| 296 } // namespace gcm | 298 } // namespace gcm |
| 297 | 299 |
| 298 #endif // GOOGLE_APIS_GCM_GCM_CLIENT_IMPL_H_ | 300 #endif // GOOGLE_APIS_GCM_GCM_CLIENT_IMPL_H_ |
| OLD | NEW |