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 "google_apis/gcm/engine/checkin_request.h" | 5 #include "google_apis/gcm/engine/checkin_request.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
9 #include "base/metrics/histogram.h" | 9 #include "base/metrics/histogram.h" |
10 #include "google_apis/gcm/monitoring/gcm_stats_recorder.h" | 10 #include "google_apis/gcm/monitoring/gcm_stats_recorder.h" |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 recorder->RecordCheckinFailure(GetCheckinRequestStatusString(status), | 73 recorder->RecordCheckinFailure(GetCheckinRequestStatusString(status), |
74 will_retry); | 74 will_retry); |
75 } | 75 } |
76 } | 76 } |
77 | 77 |
78 } // namespace | 78 } // namespace |
79 | 79 |
80 CheckinRequest::RequestInfo::RequestInfo( | 80 CheckinRequest::RequestInfo::RequestInfo( |
81 uint64 android_id, | 81 uint64 android_id, |
82 uint64 security_token, | 82 uint64 security_token, |
| 83 const std::map<std::string, std::string>& account_tokens, |
83 const std::string& settings_digest, | 84 const std::string& settings_digest, |
84 const checkin_proto::ChromeBuildProto& chrome_build_proto) | 85 const checkin_proto::ChromeBuildProto& chrome_build_proto) |
85 : android_id(android_id), | 86 : android_id(android_id), |
86 security_token(security_token), | 87 security_token(security_token), |
| 88 account_tokens(account_tokens), |
87 settings_digest(settings_digest), | 89 settings_digest(settings_digest), |
88 chrome_build_proto(chrome_build_proto) { | 90 chrome_build_proto(chrome_build_proto) { |
89 } | 91 } |
90 | 92 |
91 CheckinRequest::RequestInfo::~RequestInfo() {} | 93 CheckinRequest::RequestInfo::~RequestInfo() {} |
92 | 94 |
93 CheckinRequest::CheckinRequest( | 95 CheckinRequest::CheckinRequest( |
94 const GURL& checkin_url, | 96 const GURL& checkin_url, |
95 const RequestInfo& request_info, | 97 const RequestInfo& request_info, |
96 const net::BackoffEntry::Policy& backoff_policy, | 98 const net::BackoffEntry::Policy& backoff_policy, |
(...skipping 23 matching lines...) Expand all Loading... |
120 request.set_digest(request_info_.settings_digest); | 122 request.set_digest(request_info_.settings_digest); |
121 | 123 |
122 checkin_proto::AndroidCheckinProto* checkin = request.mutable_checkin(); | 124 checkin_proto::AndroidCheckinProto* checkin = request.mutable_checkin(); |
123 checkin->mutable_chrome_build()->CopyFrom(request_info_.chrome_build_proto); | 125 checkin->mutable_chrome_build()->CopyFrom(request_info_.chrome_build_proto); |
124 #if defined(CHROME_OS) | 126 #if defined(CHROME_OS) |
125 checkin->set_type(checkin_proto::DEVICE_CHROME_OS); | 127 checkin->set_type(checkin_proto::DEVICE_CHROME_OS); |
126 #else | 128 #else |
127 checkin->set_type(checkin_proto::DEVICE_CHROME_BROWSER); | 129 checkin->set_type(checkin_proto::DEVICE_CHROME_BROWSER); |
128 #endif | 130 #endif |
129 | 131 |
| 132 // Pack a map of email -> token mappings into a repeated field, where odd |
| 133 // entries are email addresses, while even ones are respective OAuth2 tokens. |
| 134 for (std::map<std::string, std::string>::const_iterator iter = |
| 135 request_info_.account_tokens.begin(); |
| 136 iter != request_info_.account_tokens.end(); |
| 137 ++iter) { |
| 138 request.add_account_cookie(iter->first); |
| 139 request.add_account_cookie(iter->second); |
| 140 } |
| 141 |
130 std::string upload_data; | 142 std::string upload_data; |
131 CHECK(request.SerializeToString(&upload_data)); | 143 CHECK(request.SerializeToString(&upload_data)); |
132 | 144 |
133 url_fetcher_.reset( | 145 url_fetcher_.reset( |
134 net::URLFetcher::Create(checkin_url_, net::URLFetcher::POST, this)); | 146 net::URLFetcher::Create(checkin_url_, net::URLFetcher::POST, this)); |
135 url_fetcher_->SetRequestContext(request_context_getter_); | 147 url_fetcher_->SetRequestContext(request_context_getter_); |
136 url_fetcher_->SetUploadData(kRequestContentType, upload_data); | 148 url_fetcher_->SetUploadData(kRequestContentType, upload_data); |
137 recorder_->RecordCheckinInitiated(request_info_.android_id); | 149 recorder_->RecordCheckinInitiated(request_info_.android_id); |
138 request_start_time_ = base::TimeTicks::Now(); | 150 request_start_time_ = base::TimeTicks::Now(); |
139 url_fetcher_->Start(); | 151 url_fetcher_->Start(); |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
212 | 224 |
213 RecordCheckinStatusAndReportUMA(SUCCESS, recorder_, false); | 225 RecordCheckinStatusAndReportUMA(SUCCESS, recorder_, false); |
214 UMA_HISTOGRAM_COUNTS("GCM.CheckinRetryCount", | 226 UMA_HISTOGRAM_COUNTS("GCM.CheckinRetryCount", |
215 backoff_entry_.failure_count()); | 227 backoff_entry_.failure_count()); |
216 UMA_HISTOGRAM_TIMES("GCM.CheckinCompleteTime", | 228 UMA_HISTOGRAM_TIMES("GCM.CheckinCompleteTime", |
217 base::TimeTicks::Now() - request_start_time_); | 229 base::TimeTicks::Now() - request_start_time_); |
218 callback_.Run(response_proto); | 230 callback_.Run(response_proto); |
219 } | 231 } |
220 | 232 |
221 } // namespace gcm | 233 } // namespace gcm |
OLD | NEW |