Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(887)

Side by Side Diff: google_apis/gcm/engine/registration_request.cc

Issue 1167753002: Add more UMAs for Instance ID (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address more feedback Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/registration_request.h" 5 #include "google_apis/gcm/engine/registration_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 "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 // last request. 58 // last request.
59 bool ShouldRetryWithStatus(RegistrationRequest::Status status) { 59 bool ShouldRetryWithStatus(RegistrationRequest::Status status) {
60 return status == RegistrationRequest::UNKNOWN_ERROR || 60 return status == RegistrationRequest::UNKNOWN_ERROR ||
61 status == RegistrationRequest::AUTHENTICATION_FAILED || 61 status == RegistrationRequest::AUTHENTICATION_FAILED ||
62 status == RegistrationRequest::DEVICE_REGISTRATION_ERROR || 62 status == RegistrationRequest::DEVICE_REGISTRATION_ERROR ||
63 status == RegistrationRequest::HTTP_NOT_OK || 63 status == RegistrationRequest::HTTP_NOT_OK ||
64 status == RegistrationRequest::URL_FETCHING_FAILED || 64 status == RegistrationRequest::URL_FETCHING_FAILED ||
65 status == RegistrationRequest::RESPONSE_PARSING_FAILED; 65 status == RegistrationRequest::RESPONSE_PARSING_FAILED;
66 } 66 }
67 67
68 void RecordRegistrationStatusToUMA(RegistrationRequest::Status status) {
69 UMA_HISTOGRAM_ENUMERATION("GCM.RegistrationRequestStatus", status,
70 RegistrationRequest::STATUS_COUNT);
71 }
72
73 } // namespace 68 } // namespace
74 69
75 RegistrationRequest::RequestInfo::RequestInfo( 70 RegistrationRequest::RequestInfo::RequestInfo(
76 uint64 android_id, 71 uint64 android_id,
77 uint64 security_token, 72 uint64 security_token,
78 const std::string& app_id) 73 const std::string& app_id)
79 : android_id(android_id), 74 : android_id(android_id),
80 security_token(security_token), 75 security_token(security_token),
81 app_id(app_id) { 76 app_id(app_id) {
82 DCHECK(android_id != 0UL); 77 DCHECK(android_id != 0UL);
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 << source->GetResponseCode(); 216 << source->GetResponseCode();
222 return HTTP_NOT_OK; 217 return HTTP_NOT_OK;
223 } 218 }
224 219
225 return UNKNOWN_ERROR; 220 return UNKNOWN_ERROR;
226 } 221 }
227 222
228 void RegistrationRequest::OnURLFetchComplete(const net::URLFetcher* source) { 223 void RegistrationRequest::OnURLFetchComplete(const net::URLFetcher* source) {
229 std::string token; 224 std::string token;
230 Status status = ParseResponse(source, &token); 225 Status status = ParseResponse(source, &token);
231 RecordRegistrationStatusToUMA(status);
232 recorder_->RecordRegistrationResponse( 226 recorder_->RecordRegistrationResponse(
233 request_info_.app_id, 227 request_info_.app_id,
234 source_to_record_, 228 source_to_record_,
235 status); 229 status);
236 230
231 DCHECK(custom_request_handler_.get());
232 custom_request_handler_->ReportUMAs(
233 status,
234 backoff_entry_.failure_count(),
235 base::TimeTicks::Now() - request_start_time_);
236
237 if (ShouldRetryWithStatus(status)) { 237 if (ShouldRetryWithStatus(status)) {
238 if (retries_left_ > 0) { 238 if (retries_left_ > 0) {
239 recorder_->RecordRegistrationRetryRequested( 239 recorder_->RecordRegistrationRetryRequested(
240 request_info_.app_id, 240 request_info_.app_id,
241 source_to_record_, 241 source_to_record_,
242 retries_left_); 242 retries_left_);
243 RetryWithBackoff(true); 243 RetryWithBackoff(true);
244 return; 244 return;
245 } 245 }
246 246
247 status = REACHED_MAX_RETRIES; 247 status = REACHED_MAX_RETRIES;
248 recorder_->RecordRegistrationResponse( 248 recorder_->RecordRegistrationResponse(
249 request_info_.app_id, 249 request_info_.app_id,
250 source_to_record_, 250 source_to_record_,
251 status); 251 status);
252 RecordRegistrationStatusToUMA(status); 252
253 // Only REACHED_MAX_RETRIES is reported because the function will skip
254 // reporting count and time when status is not SUCCESS.
255 DCHECK(custom_request_handler_.get());
256 custom_request_handler_->ReportUMAs(status, 0, base::TimeDelta());
253 } 257 }
254 258
255 if (status == SUCCESS) {
256 UMA_HISTOGRAM_COUNTS("GCM.RegistrationRetryCount",
257 backoff_entry_.failure_count());
258 UMA_HISTOGRAM_TIMES("GCM.RegistrationCompleteTime",
259 base::TimeTicks::Now() - request_start_time_);
260 }
261 callback_.Run(status, token); 259 callback_.Run(status, token);
262 } 260 }
263 261
264 } // namespace gcm 262 } // namespace gcm
OLDNEW
« no previous file with comments | « google_apis/gcm/engine/registration_request.h ('k') | google_apis/gcm/engine/unregistration_request.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698