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

Side by Side Diff: components/metrics/metrics_service.cc

Issue 866163002: Allow use of metrics url override outside of Chromecast (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 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
« no previous file with comments | « components/metrics/metrics_service.h ('k') | components/metrics/metrics_service_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 //------------------------------------------------------------------------------ 5 //------------------------------------------------------------------------------
6 // Description of the life cycle of a instance of MetricsService. 6 // Description of the life cycle of a instance of MetricsService.
7 // 7 //
8 // OVERVIEW 8 // OVERVIEW
9 // 9 //
10 // A MetricsService instance is typically created at application startup. It is 10 // A MetricsService instance is typically created at application startup. It is
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 // 160 //
161 // 161 //
162 //------------------------------------------------------------------------------ 162 //------------------------------------------------------------------------------
163 163
164 #include "components/metrics/metrics_service.h" 164 #include "components/metrics/metrics_service.h"
165 165
166 #include <algorithm> 166 #include <algorithm>
167 167
168 #include "base/bind.h" 168 #include "base/bind.h"
169 #include "base/callback.h" 169 #include "base/callback.h"
170 #include "base/command_line.h"
170 #include "base/metrics/histogram.h" 171 #include "base/metrics/histogram.h"
171 #include "base/metrics/histogram_base.h" 172 #include "base/metrics/histogram_base.h"
172 #include "base/metrics/histogram_samples.h" 173 #include "base/metrics/histogram_samples.h"
173 #include "base/metrics/sparse_histogram.h" 174 #include "base/metrics/sparse_histogram.h"
174 #include "base/metrics/statistics_recorder.h" 175 #include "base/metrics/statistics_recorder.h"
175 #include "base/prefs/pref_registry_simple.h" 176 #include "base/prefs/pref_registry_simple.h"
176 #include "base/prefs/pref_service.h" 177 #include "base/prefs/pref_service.h"
177 #include "base/strings/string_number_conversions.h" 178 #include "base/strings/string_number_conversions.h"
178 #include "base/strings/utf_string_conversions.h" 179 #include "base/strings/utf_string_conversions.h"
179 #include "base/threading/platform_thread.h" 180 #include "base/threading/platform_thread.h"
180 #include "base/threading/thread.h" 181 #include "base/threading/thread.h"
181 #include "base/threading/thread_restrictions.h" 182 #include "base/threading/thread_restrictions.h"
182 #include "base/time/time.h" 183 #include "base/time/time.h"
183 #include "base/tracked_objects.h" 184 #include "base/tracked_objects.h"
184 #include "base/values.h" 185 #include "base/values.h"
185 #include "components/metrics/metrics_log.h" 186 #include "components/metrics/metrics_log.h"
186 #include "components/metrics/metrics_log_manager.h" 187 #include "components/metrics/metrics_log_manager.h"
187 #include "components/metrics/metrics_log_uploader.h" 188 #include "components/metrics/metrics_log_uploader.h"
188 #include "components/metrics/metrics_pref_names.h" 189 #include "components/metrics/metrics_pref_names.h"
189 #include "components/metrics/metrics_reporting_scheduler.h" 190 #include "components/metrics/metrics_reporting_scheduler.h"
190 #include "components/metrics/metrics_service_client.h" 191 #include "components/metrics/metrics_service_client.h"
191 #include "components/metrics/metrics_state_manager.h" 192 #include "components/metrics/metrics_state_manager.h"
193 #include "components/metrics/metrics_switches.h"
192 #include "components/variations/entropy_provider.h" 194 #include "components/variations/entropy_provider.h"
193 195
194 namespace metrics { 196 namespace metrics {
195 197
196 namespace { 198 namespace {
197 199
198 // Check to see that we're being called on only one thread. 200 // Check to see that we're being called on only one thread.
199 bool IsSingleThreaded() { 201 bool IsSingleThreaded() {
200 static base::PlatformThreadId thread_id = 0; 202 static base::PlatformThreadId thread_id = 0;
201 if (!thread_id) 203 if (!thread_id)
(...skipping 811 matching lines...) Expand 10 before | Expand all | Expand 10 after
1013 1015
1014 void MetricsService::SendStagedLog() { 1016 void MetricsService::SendStagedLog() {
1015 DCHECK(log_manager_.has_staged_log()); 1017 DCHECK(log_manager_.has_staged_log());
1016 if (!log_manager_.has_staged_log()) 1018 if (!log_manager_.has_staged_log())
1017 return; 1019 return;
1018 1020
1019 DCHECK(!log_upload_in_progress_); 1021 DCHECK(!log_upload_in_progress_);
1020 log_upload_in_progress_ = true; 1022 log_upload_in_progress_ = true;
1021 1023
1022 if (!log_uploader_) { 1024 if (!log_uploader_) {
1025 std::string server_url(kServerUrl);
1026 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
1027 if (command_line->HasSwitch(switches::kOverrideMetricsUploadUrl)) {
1028 server_url = command_line->GetSwitchValueASCII(
1029 switches::kOverrideMetricsUploadUrl);
1030 DCHECK(!server_url.empty());
1031 }
1032
1023 log_uploader_ = client_->CreateUploader( 1033 log_uploader_ = client_->CreateUploader(
1024 kServerUrl, kMimeType, 1034 server_url, kMimeType,
1025 base::Bind(&MetricsService::OnLogUploadComplete, 1035 base::Bind(&MetricsService::OnLogUploadComplete,
1026 self_ptr_factory_.GetWeakPtr())); 1036 self_ptr_factory_.GetWeakPtr()));
1027 } 1037 }
1028 1038
1029 const std::string hash = 1039 const std::string hash =
1030 base::HexEncode(log_manager_.staged_log_hash().data(), 1040 base::HexEncode(log_manager_.staged_log_hash().data(),
1031 log_manager_.staged_log_hash().size()); 1041 log_manager_.staged_log_hash().size());
1032 bool success = log_uploader_->UploadLog(log_manager_.staged_log(), hash); 1042 bool success = log_uploader_->UploadLog(log_manager_.staged_log(), hash);
1033 UMA_HISTOGRAM_BOOLEAN("UMA.UploadCreation", success); 1043 UMA_HISTOGRAM_BOOLEAN("UMA.UploadCreation", success);
1034 if (!success) { 1044 if (!success) {
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
1257 local_state_->SetBoolean(path, value); 1267 local_state_->SetBoolean(path, value);
1258 RecordCurrentState(local_state_); 1268 RecordCurrentState(local_state_);
1259 } 1269 }
1260 1270
1261 void MetricsService::RecordCurrentState(PrefService* pref) { 1271 void MetricsService::RecordCurrentState(PrefService* pref) {
1262 pref->SetInt64(prefs::kStabilityLastTimestampSec, 1272 pref->SetInt64(prefs::kStabilityLastTimestampSec,
1263 base::Time::Now().ToTimeT()); 1273 base::Time::Now().ToTimeT());
1264 } 1274 }
1265 1275
1266 } // namespace metrics 1276 } // namespace metrics
OLDNEW
« no previous file with comments | « components/metrics/metrics_service.h ('k') | components/metrics/metrics_service_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698