| 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 |