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