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

Side by Side Diff: chrome/browser/metrics/chrome_metrics_service_client.cc

Issue 1033493002: Histogram for UMA log upload connection type. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix Created 5 years, 9 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 "chrome/browser/metrics/chrome_metrics_service_client.h" 5 #include "chrome/browser/metrics/chrome_metrics_service_client.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback.h" 10 #include "base/callback.h"
11 #include "base/command_line.h" 11 #include "base/command_line.h"
12 #include "base/files/file_path.h" 12 #include "base/files/file_path.h"
13 #include "base/logging.h" 13 #include "base/logging.h"
14 #include "base/metrics/field_trial.h" 14 #include "base/metrics/field_trial.h"
15 #include "base/metrics/histogram.h" 15 #include "base/metrics/histogram.h"
16 #include "base/metrics/sparse_histogram.h"
16 #include "base/prefs/pref_registry_simple.h" 17 #include "base/prefs/pref_registry_simple.h"
17 #include "base/prefs/pref_service.h" 18 #include "base/prefs/pref_service.h"
18 #include "base/strings/string16.h" 19 #include "base/strings/string16.h"
19 #include "base/strings/string_util.h" 20 #include "base/strings/string_util.h"
20 #include "base/strings/utf_string_conversions.h" 21 #include "base/strings/utf_string_conversions.h"
21 #include "base/threading/platform_thread.h" 22 #include "base/threading/platform_thread.h"
22 #include "chrome/browser/browser_process.h" 23 #include "chrome/browser/browser_process.h"
23 #include "chrome/browser/chrome_notification_types.h" 24 #include "chrome/browser/chrome_notification_types.h"
24 #include "chrome/browser/google/google_brand.h" 25 #include "chrome/browser/google/google_brand.h"
25 #include "chrome/browser/metrics/chrome_stability_metrics_provider.h" 26 #include "chrome/browser/metrics/chrome_stability_metrics_provider.h"
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 #endif 119 #endif
119 120
120 } // namespace 121 } // namespace
121 122
122 ChromeMetricsServiceClient::ChromeMetricsServiceClient( 123 ChromeMetricsServiceClient::ChromeMetricsServiceClient(
123 metrics::MetricsStateManager* state_manager) 124 metrics::MetricsStateManager* state_manager)
124 : metrics_state_manager_(state_manager), 125 : metrics_state_manager_(state_manager),
125 chromeos_metrics_provider_(NULL), 126 chromeos_metrics_provider_(NULL),
126 waiting_for_collect_final_metrics_step_(false), 127 waiting_for_collect_final_metrics_step_(false),
127 num_async_histogram_fetches_in_progress_(0), 128 num_async_histogram_fetches_in_progress_(0),
128 weak_ptr_factory_(this) { 129 weak_ptr_factory_(this) {
Ilya Sherman 2015/03/24 00:14:23 Please initialize the metrics provider here.
gayane -on leave until 09-2017 2015/03/24 20:45:55 Done.
129 DCHECK(thread_checker_.CalledOnValidThread()); 130 DCHECK(thread_checker_.CalledOnValidThread());
130 RecordCommandLineMetrics(); 131 RecordCommandLineMetrics();
131 RegisterForNotifications(); 132 RegisterForNotifications();
132 133
133 #if defined(OS_WIN) 134 #if defined(OS_WIN)
134 CountBrowserCrashDumpAttempts(); 135 CountBrowserCrashDumpAttempts();
135 #endif // defined(OS_WIN) 136 #endif // defined(OS_WIN)
136 } 137 }
137 138
138 ChromeMetricsServiceClient::~ChromeMetricsServiceClient() { 139 ChromeMetricsServiceClient::~ChromeMetricsServiceClient() {
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 chrome::VersionInfo version_info; 199 chrome::VersionInfo version_info;
199 std::string version = version_info.Version(); 200 std::string version = version_info.Version();
200 #if defined(ARCH_CPU_64_BITS) 201 #if defined(ARCH_CPU_64_BITS)
201 version += "-64"; 202 version += "-64";
202 #endif // defined(ARCH_CPU_64_BITS) 203 #endif // defined(ARCH_CPU_64_BITS)
203 if (!version_info.IsOfficialBuild()) 204 if (!version_info.IsOfficialBuild())
204 version.append("-devel"); 205 version.append("-devel");
205 return version; 206 return version;
206 } 207 }
207 208
208 void ChromeMetricsServiceClient::OnLogUploadComplete() { 209 void ChromeMetricsServiceClient::OnLogUploadComplete(bool upload_succeeded) {
210 // Record the network connection type.
211 if (upload_succeeded) {
212 UMA_HISTOGRAM_SPARSE_SLOWLY("UMA.LogUpload.ConnetionType",
213 network_metrics_provider_->GetConnectionType());
Ilya Sherman 2015/03/24 00:14:23 The connection type is already recorded in the sys
Ilya Sherman 2015/03/24 00:14:23 FWIW, this histogram doesn't really need to be spa
gayane -on leave until 09-2017 2015/03/24 20:45:55 As discussed, system profile records the connectio
gayane -on leave until 09-2017 2015/03/24 20:45:55 Done.
214 }
215
209 // Collect network stats after each UMA upload. 216 // Collect network stats after each UMA upload.
210 network_stats_uploader_.CollectAndReportNetworkStats(); 217 network_stats_uploader_.CollectAndReportNetworkStats();
211 } 218 }
212 219
213 void ChromeMetricsServiceClient::StartGatheringMetrics( 220 void ChromeMetricsServiceClient::StartGatheringMetrics(
214 const base::Closure& done_callback) { 221 const base::Closure& done_callback) {
215 finished_gathering_initial_metrics_callback_ = done_callback; 222 finished_gathering_initial_metrics_callback_ = done_callback;
216 base::Closure got_hardware_class_callback = 223 base::Closure got_hardware_class_callback =
217 base::Bind(&ChromeMetricsServiceClient::OnInitTaskGotHardwareClass, 224 base::Bind(&ChromeMetricsServiceClient::OnInitTaskGotHardwareClass,
218 weak_ptr_factory_.GetWeakPtr()); 225 weak_ptr_factory_.GetWeakPtr());
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 return scoped_ptr<metrics::MetricsLogUploader>( 267 return scoped_ptr<metrics::MetricsLogUploader>(
261 new metrics::NetMetricsLogUploader( 268 new metrics::NetMetricsLogUploader(
262 g_browser_process->system_request_context(), 269 g_browser_process->system_request_context(),
263 metrics::kDefaultMetricsServerUrl, 270 metrics::kDefaultMetricsServerUrl,
264 metrics::kDefaultMetricsMimeType, 271 metrics::kDefaultMetricsMimeType,
265 on_upload_complete)); 272 on_upload_complete));
266 } 273 }
267 274
268 base::TimeDelta ChromeMetricsServiceClient::GetStandardUploadInterval() { 275 base::TimeDelta ChromeMetricsServiceClient::GetStandardUploadInterval() {
269 #if defined(OS_ANDROID) || defined(OS_IOS) 276 #if defined(OS_ANDROID) || defined(OS_IOS)
270 bool is_cellular = false; 277 if (network_metrics_provider_->IsCellularConnection() &&
271 cellular_callback_.Run(&is_cellular); 278 IsCellularEnabledByExperiment())
272
273 if (is_cellular && IsCellularEnabledByExperiment())
274 return base::TimeDelta::FromSeconds(kStandardUploadIntervalCellularSeconds); 279 return base::TimeDelta::FromSeconds(kStandardUploadIntervalCellularSeconds);
275 #endif 280 #endif
276 return base::TimeDelta::FromSeconds(kStandardUploadIntervalSeconds); 281 return base::TimeDelta::FromSeconds(kStandardUploadIntervalSeconds);
277 } 282 }
278 283
279 base::string16 ChromeMetricsServiceClient::GetRegistryBackupKey() { 284 base::string16 ChromeMetricsServiceClient::GetRegistryBackupKey() {
280 #if defined(OS_WIN) 285 #if defined(OS_WIN)
281 return L"Software\\" PRODUCT_STRING_PATH L"\\StabilityMetrics"; 286 return L"Software\\" PRODUCT_STRING_PATH L"\\StabilityMetrics";
282 #else 287 #else
283 return base::string16(); 288 return base::string16();
(...skipping 15 matching lines...) Expand all
299 304
300 // Register metrics providers. 305 // Register metrics providers.
301 #if defined(ENABLE_EXTENSIONS) 306 #if defined(ENABLE_EXTENSIONS)
302 metrics_service_->RegisterMetricsProvider( 307 metrics_service_->RegisterMetricsProvider(
303 scoped_ptr<metrics::MetricsProvider>( 308 scoped_ptr<metrics::MetricsProvider>(
304 new ExtensionsMetricsProvider(metrics_state_manager_))); 309 new ExtensionsMetricsProvider(metrics_state_manager_)));
305 #endif 310 #endif
306 scoped_ptr<metrics::NetworkMetricsProvider> network_metrics_provider( 311 scoped_ptr<metrics::NetworkMetricsProvider> network_metrics_provider(
307 new metrics::NetworkMetricsProvider( 312 new metrics::NetworkMetricsProvider(
308 content::BrowserThread::GetBlockingPool())); 313 content::BrowserThread::GetBlockingPool()));
309 cellular_callback_ = network_metrics_provider->GetConnectionCallback(); 314
315 // GetConnectionCallback should be called from non const pointer.
Ilya Sherman 2015/03/24 00:14:23 I don't understand this comment. Why does this ne
gayane -on leave until 09-2017 2015/03/24 20:45:55 As network_metrics_provider_ as a const pointer I
316 profiler_metrics_provider_ = new metrics::ProfilerMetricsProvider(
317 network_metrics_provider.get()->GetConnectionCallback());
318 metrics_service_->RegisterMetricsProvider(
319 scoped_ptr<metrics::MetricsProvider>(profiler_metrics_provider_));
320
321 network_metrics_provider_ = network_metrics_provider.get();
310 metrics_service_->RegisterMetricsProvider(network_metrics_provider.Pass()); 322 metrics_service_->RegisterMetricsProvider(network_metrics_provider.Pass());
311 323
312 metrics_service_->RegisterMetricsProvider( 324 metrics_service_->RegisterMetricsProvider(
313 scoped_ptr<metrics::MetricsProvider>(new OmniboxMetricsProvider)); 325 scoped_ptr<metrics::MetricsProvider>(new OmniboxMetricsProvider));
314 metrics_service_->RegisterMetricsProvider( 326 metrics_service_->RegisterMetricsProvider(
315 scoped_ptr<metrics::MetricsProvider>(new ChromeStabilityMetricsProvider)); 327 scoped_ptr<metrics::MetricsProvider>(new ChromeStabilityMetricsProvider));
316 metrics_service_->RegisterMetricsProvider( 328 metrics_service_->RegisterMetricsProvider(
317 scoped_ptr<metrics::MetricsProvider>(new metrics::GPUMetricsProvider())); 329 scoped_ptr<metrics::MetricsProvider>(new metrics::GPUMetricsProvider()));
318 330
319 profiler_metrics_provider_ =
320 new metrics::ProfilerMetricsProvider(cellular_callback_);
321 metrics_service_->RegisterMetricsProvider(
322 scoped_ptr<metrics::MetricsProvider>(profiler_metrics_provider_));
323
324 #if defined(OS_ANDROID) 331 #if defined(OS_ANDROID)
325 metrics_service_->RegisterMetricsProvider( 332 metrics_service_->RegisterMetricsProvider(
326 scoped_ptr<metrics::MetricsProvider>( 333 scoped_ptr<metrics::MetricsProvider>(
327 new AndroidMetricsProvider(g_browser_process->local_state()))); 334 new AndroidMetricsProvider(g_browser_process->local_state())));
328 #endif // defined(OS_ANDROID) 335 #endif // defined(OS_ANDROID)
329 336
330 #if defined(OS_WIN) 337 #if defined(OS_WIN)
331 google_update_metrics_provider_ = new GoogleUpdateMetricsProviderWin; 338 google_update_metrics_provider_ = new GoogleUpdateMetricsProviderWin;
332 metrics_service_->RegisterMetricsProvider( 339 metrics_service_->RegisterMetricsProvider(
333 scoped_ptr<metrics::MetricsProvider>(google_update_metrics_provider_)); 340 scoped_ptr<metrics::MetricsProvider>(google_update_metrics_provider_));
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after
581 // Capture the histogram samples. 588 // Capture the histogram samples.
582 if (dumps_with_crash != 0) 589 if (dumps_with_crash != 0)
583 UMA_HISTOGRAM_COUNTS("Chrome.BrowserDumpsWithCrash", dumps_with_crash); 590 UMA_HISTOGRAM_COUNTS("Chrome.BrowserDumpsWithCrash", dumps_with_crash);
584 if (dumps_with_no_crash != 0) 591 if (dumps_with_no_crash != 0)
585 UMA_HISTOGRAM_COUNTS("Chrome.BrowserDumpsWithNoCrash", dumps_with_no_crash); 592 UMA_HISTOGRAM_COUNTS("Chrome.BrowserDumpsWithNoCrash", dumps_with_no_crash);
586 int total_dumps = dumps_with_crash + dumps_with_no_crash; 593 int total_dumps = dumps_with_crash + dumps_with_no_crash;
587 if (total_dumps != 0) 594 if (total_dumps != 0)
588 UMA_HISTOGRAM_COUNTS("Chrome.BrowserCrashDumpAttempts", total_dumps); 595 UMA_HISTOGRAM_COUNTS("Chrome.BrowserCrashDumpAttempts", total_dumps);
589 } 596 }
590 #endif // defined(OS_WIN) 597 #endif // defined(OS_WIN)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698