OLD | NEW |
1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 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 // ReportingService handles uploading serialized logs to a server. | 5 // ReportingService handles uploading serialized logs to a server. |
6 | 6 |
7 #include "components/metrics/reporting_service.h" | 7 #include "components/metrics/reporting_service.h" |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/callback.h" | 10 #include "base/callback.h" |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
148 base::Bind(&ReportingService::OnLogUploadComplete, | 148 base::Bind(&ReportingService::OnLogUploadComplete, |
149 self_ptr_factory_.GetWeakPtr())); | 149 self_ptr_factory_.GetWeakPtr())); |
150 } | 150 } |
151 | 151 |
152 const std::string hash = | 152 const std::string hash = |
153 base::HexEncode(log_store()->staged_log_hash().data(), | 153 base::HexEncode(log_store()->staged_log_hash().data(), |
154 log_store()->staged_log_hash().size()); | 154 log_store()->staged_log_hash().size()); |
155 log_uploader_->UploadLog(log_store()->staged_log(), hash); | 155 log_uploader_->UploadLog(log_store()->staged_log(), hash); |
156 } | 156 } |
157 | 157 |
158 void ReportingService::OnLogUploadComplete(int response_code) { | 158 void ReportingService::OnLogUploadComplete(int response_code, int error_code) { |
159 DVLOG(1) << "OnLogUploadComplete:" << response_code; | 159 DVLOG(1) << "OnLogUploadComplete:" << response_code; |
160 DCHECK(thread_checker_.CalledOnValidThread()); | 160 DCHECK(thread_checker_.CalledOnValidThread()); |
161 DCHECK(log_upload_in_progress_); | 161 DCHECK(log_upload_in_progress_); |
162 log_upload_in_progress_ = false; | 162 log_upload_in_progress_ = false; |
163 | 163 |
164 // Log a histogram to track response success vs. failure rates. | 164 // Log a histogram to track response success vs. failure rates. |
165 LogResponseCode(response_code); | 165 LogResponseOrErrorCode(response_code, error_code); |
166 | 166 |
167 bool upload_succeeded = response_code == 200; | 167 bool upload_succeeded = response_code == 200; |
168 | 168 |
169 // Staged log could have been removed already (such as by Purge() in some | 169 // Staged log could have been removed already (such as by Purge() in some |
170 // implementations), otherwise we may remove it here. | 170 // implementations), otherwise we may remove it here. |
171 if (log_store()->has_staged_log()) { | 171 if (log_store()->has_staged_log()) { |
172 // Provide boolean for error recovery (allow us to ignore response_code). | 172 // Provide boolean for error recovery (allow us to ignore response_code). |
173 bool discard_log = false; | 173 bool discard_log = false; |
174 const size_t log_size = log_store()->staged_log().length(); | 174 const size_t log_size = log_store()->staged_log().length(); |
175 if (upload_succeeded) { | 175 if (upload_succeeded) { |
(...skipping 17 matching lines...) Expand all Loading... |
193 // don't consider that a sign that the server is in trouble. | 193 // don't consider that a sign that the server is in trouble. |
194 bool server_is_healthy = upload_succeeded || response_code == 400; | 194 bool server_is_healthy = upload_succeeded || response_code == 400; |
195 if (!log_store()->has_unsent_logs()) { | 195 if (!log_store()->has_unsent_logs()) { |
196 DVLOG(1) << "Stopping upload_scheduler_."; | 196 DVLOG(1) << "Stopping upload_scheduler_."; |
197 upload_scheduler_->Stop(); | 197 upload_scheduler_->Stop(); |
198 } | 198 } |
199 upload_scheduler_->UploadFinished(server_is_healthy); | 199 upload_scheduler_->UploadFinished(server_is_healthy); |
200 } | 200 } |
201 | 201 |
202 } // namespace metrics | 202 } // namespace metrics |
OLD | NEW |