OLD | NEW |
---|---|
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 #include "components/gcm_driver/gcm_client_impl.h" | 5 #include "components/gcm_driver/gcm_client_impl.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/files/file_path.h" | 8 #include "base/files/file_path.h" |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
11 #include "base/message_loop/message_loop.h" | 11 #include "base/message_loop/message_loop.h" |
12 #include "base/metrics/histogram.h" | 12 #include "base/metrics/histogram.h" |
13 #include "base/sequenced_task_runner.h" | 13 #include "base/sequenced_task_runner.h" |
14 #include "base/strings/string_number_conversions.h" | 14 #include "base/strings/string_number_conversions.h" |
15 #include "base/strings/stringprintf.h" | 15 #include "base/strings/stringprintf.h" |
16 #include "base/time/default_clock.h" | 16 #include "base/time/default_clock.h" |
17 #include "google_apis/gcm/base/encryptor.h" | 17 #include "google_apis/gcm/base/encryptor.h" |
18 #include "google_apis/gcm/base/mcs_message.h" | 18 #include "google_apis/gcm/base/mcs_message.h" |
19 #include "google_apis/gcm/base/mcs_util.h" | 19 #include "google_apis/gcm/base/mcs_util.h" |
20 #include "google_apis/gcm/engine/checkin_request.h" | 20 #include "google_apis/gcm/engine/checkin_request.h" |
21 #include "google_apis/gcm/engine/connection_factory_impl.h" | 21 #include "google_apis/gcm/engine/connection_factory_impl.h" |
22 #include "google_apis/gcm/engine/gcm_store_impl.h" | 22 #include "google_apis/gcm/engine/gcm_store_impl.h" |
23 #include "google_apis/gcm/monitoring/gcm_stats_recorder.h" | 23 #include "google_apis/gcm/monitoring/gcm_stats_recorder.h" |
24 #include "google_apis/gcm/protocol/checkin.pb.h" | 24 #include "google_apis/gcm/protocol/checkin.pb.h" |
25 #include "google_apis/gcm/protocol/mcs.pb.h" | 25 #include "google_apis/gcm/protocol/mcs.pb.h" |
26 #include "net/http/http_network_session.h" | 26 #include "net/http/http_network_session.h" |
27 #include "net/http/http_transaction_factory.h" | |
27 #include "net/url_request/url_request_context.h" | 28 #include "net/url_request/url_request_context.h" |
28 #include "url/gurl.h" | 29 #include "url/gurl.h" |
29 | 30 |
30 namespace gcm { | 31 namespace gcm { |
31 | 32 |
32 namespace { | 33 namespace { |
33 | 34 |
34 // Backoff policy. Shared across reconnection logic and checkin/(un)registration | 35 // Backoff policy. Shared across reconnection logic and checkin/(un)registration |
35 // retries. | 36 // retries. |
36 // Note: In order to ensure a minimum of 20 seconds between server errors (for | 37 // Note: In order to ensure a minimum of 20 seconds between server errors (for |
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
229 new MCSClient(version, | 230 new MCSClient(version, |
230 clock, | 231 clock, |
231 connection_factory, | 232 connection_factory, |
232 gcm_store, | 233 gcm_store, |
233 recorder)); | 234 recorder)); |
234 } | 235 } |
235 | 236 |
236 scoped_ptr<ConnectionFactory> GCMInternalsBuilder::BuildConnectionFactory( | 237 scoped_ptr<ConnectionFactory> GCMInternalsBuilder::BuildConnectionFactory( |
237 const std::vector<GURL>& endpoints, | 238 const std::vector<GURL>& endpoints, |
238 const net::BackoffEntry::Policy& backoff_policy, | 239 const net::BackoffEntry::Policy& backoff_policy, |
239 scoped_refptr<net::HttpNetworkSession> network_session, | 240 const scoped_refptr<net::HttpNetworkSession>& http_network_session, |
241 const scoped_refptr<net::HttpNetworkSession>& gcm_network_session, | |
240 net::NetLog* net_log, | 242 net::NetLog* net_log, |
241 GCMStatsRecorder* recorder) { | 243 GCMStatsRecorder* recorder) { |
242 return make_scoped_ptr<ConnectionFactory>( | 244 return make_scoped_ptr<ConnectionFactory>( |
243 new ConnectionFactoryImpl(endpoints, | 245 new ConnectionFactoryImpl(endpoints, |
244 backoff_policy, | 246 backoff_policy, |
245 network_session, | 247 http_network_session, |
248 gcm_network_session, | |
246 net_log, | 249 net_log, |
247 recorder)); | 250 recorder)); |
248 } | 251 } |
249 | 252 |
250 GCMClientImpl::GCMClientImpl(scoped_ptr<GCMInternalsBuilder> internals_builder) | 253 GCMClientImpl::GCMClientImpl(scoped_ptr<GCMInternalsBuilder> internals_builder) |
251 : internals_builder_(internals_builder.Pass()), | 254 : internals_builder_(internals_builder.Pass()), |
252 state_(UNINITIALIZED), | 255 state_(UNINITIALIZED), |
253 delegate_(NULL), | 256 delegate_(NULL), |
254 clock_(internals_builder_->BuildClock()), | 257 clock_(internals_builder_->BuildClock()), |
255 url_request_context_getter_(NULL), | 258 url_request_context_getter_(NULL), |
(...skipping 15 matching lines...) Expand all Loading... | |
271 url_request_context_getter, | 274 url_request_context_getter, |
272 scoped_ptr<Encryptor> encryptor, | 275 scoped_ptr<Encryptor> encryptor, |
273 GCMClient::Delegate* delegate) { | 276 GCMClient::Delegate* delegate) { |
274 DCHECK_EQ(UNINITIALIZED, state_); | 277 DCHECK_EQ(UNINITIALIZED, state_); |
275 DCHECK(url_request_context_getter); | 278 DCHECK(url_request_context_getter); |
276 DCHECK(delegate); | 279 DCHECK(delegate); |
277 | 280 |
278 url_request_context_getter_ = url_request_context_getter; | 281 url_request_context_getter_ = url_request_context_getter; |
279 const net::HttpNetworkSession::Params* network_session_params = | 282 const net::HttpNetworkSession::Params* network_session_params = |
280 url_request_context_getter_->GetURLRequestContext()-> | 283 url_request_context_getter_->GetURLRequestContext()-> |
281 GetNetworkSessionParams(); | 284 GetNetworkSessionParams(); |
mmenke
2014/07/17 18:34:06
Oh...You're already using the main proxy service,
| |
282 DCHECK(network_session_params); | 285 DCHECK(network_session_params); |
283 network_session_ = new net::HttpNetworkSession(*network_session_params); | 286 network_session_ = new net::HttpNetworkSession(*network_session_params); |
284 | 287 |
285 chrome_build_info_ = chrome_build_info; | 288 chrome_build_info_ = chrome_build_info; |
286 | 289 |
287 gcm_store_.reset( | 290 gcm_store_.reset( |
288 new GCMStoreImpl(path, blocking_task_runner, encryptor.Pass())); | 291 new GCMStoreImpl(path, blocking_task_runner, encryptor.Pass())); |
289 | 292 |
290 delegate_ = delegate; | 293 delegate_ = delegate; |
291 | 294 |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
330 } | 333 } |
331 | 334 |
332 void GCMClientImpl::InitializeMCSClient( | 335 void GCMClientImpl::InitializeMCSClient( |
333 scoped_ptr<GCMStore::LoadResult> result) { | 336 scoped_ptr<GCMStore::LoadResult> result) { |
334 std::vector<GURL> endpoints; | 337 std::vector<GURL> endpoints; |
335 endpoints.push_back(gservices_settings_.GetMCSMainEndpoint()); | 338 endpoints.push_back(gservices_settings_.GetMCSMainEndpoint()); |
336 endpoints.push_back(gservices_settings_.GetMCSFallbackEndpoint()); | 339 endpoints.push_back(gservices_settings_.GetMCSFallbackEndpoint()); |
337 connection_factory_ = internals_builder_->BuildConnectionFactory( | 340 connection_factory_ = internals_builder_->BuildConnectionFactory( |
338 endpoints, | 341 endpoints, |
339 kDefaultBackoffPolicy, | 342 kDefaultBackoffPolicy, |
343 url_request_context_getter_->GetURLRequestContext() | |
344 ->http_transaction_factory() | |
345 ->GetSession(), | |
340 network_session_, | 346 network_session_, |
341 net_log_.net_log(), | 347 net_log_.net_log(), |
342 &recorder_); | 348 &recorder_); |
343 connection_factory_->SetConnectionListener(this); | 349 connection_factory_->SetConnectionListener(this); |
344 mcs_client_ = internals_builder_->BuildMCSClient( | 350 mcs_client_ = internals_builder_->BuildMCSClient( |
345 chrome_build_info_.version, | 351 chrome_build_info_.version, |
346 clock_.get(), | 352 clock_.get(), |
347 connection_factory_.get(), | 353 connection_factory_.get(), |
348 gcm_store_.get(), | 354 gcm_store_.get(), |
349 &recorder_).Pass(); | 355 &recorder_).Pass(); |
(...skipping 532 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
882 | 888 |
883 recorder_.RecordIncomingSendError( | 889 recorder_.RecordIncomingSendError( |
884 data_message_stanza.category(), | 890 data_message_stanza.category(), |
885 data_message_stanza.to(), | 891 data_message_stanza.to(), |
886 data_message_stanza.id()); | 892 data_message_stanza.id()); |
887 delegate_->OnMessageSendError(data_message_stanza.category(), | 893 delegate_->OnMessageSendError(data_message_stanza.category(), |
888 send_error_details); | 894 send_error_details); |
889 } | 895 } |
890 | 896 |
891 } // namespace gcm | 897 } // namespace gcm |
OLD | NEW |