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

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: Histogram type changed, refactoring network_metrics_provider_ + nits 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"
Ilya Sherman 2015/03/24 21:55:44 nit: No longer needed?
gayane -on leave until 09-2017 2015/03/25 21:02:33 Done.
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 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 return group_name == "Enabled"; 117 return group_name == "Enabled";
117 } 118 }
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),
127 network_metrics_provider_(NULL),
126 waiting_for_collect_final_metrics_step_(false), 128 waiting_for_collect_final_metrics_step_(false),
127 num_async_histogram_fetches_in_progress_(0), 129 num_async_histogram_fetches_in_progress_(0),
128 weak_ptr_factory_(this) { 130 weak_ptr_factory_(this) {
129 DCHECK(thread_checker_.CalledOnValidThread()); 131 DCHECK(thread_checker_.CalledOnValidThread());
130 RecordCommandLineMetrics(); 132 RecordCommandLineMetrics();
131 RegisterForNotifications(); 133 RegisterForNotifications();
132 134
133 #if defined(OS_WIN) 135 #if defined(OS_WIN)
134 CountBrowserCrashDumpAttempts(); 136 CountBrowserCrashDumpAttempts();
135 #endif // defined(OS_WIN) 137 #endif // defined(OS_WIN)
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 chrome::VersionInfo version_info; 200 chrome::VersionInfo version_info;
199 std::string version = version_info.Version(); 201 std::string version = version_info.Version();
200 #if defined(ARCH_CPU_64_BITS) 202 #if defined(ARCH_CPU_64_BITS)
201 version += "-64"; 203 version += "-64";
202 #endif // defined(ARCH_CPU_64_BITS) 204 #endif // defined(ARCH_CPU_64_BITS)
203 if (!version_info.IsOfficialBuild()) 205 if (!version_info.IsOfficialBuild())
204 version.append("-devel"); 206 version.append("-devel");
205 return version; 207 return version;
206 } 208 }
207 209
208 void ChromeMetricsServiceClient::OnLogUploadComplete() { 210 void ChromeMetricsServiceClient::OnLogUploadComplete(bool upload_succeeded) {
211 // Record the network connection type.
212 if (upload_succeeded) {
213 UMA_HISTOGRAM_ENUMERATION(
214 "UMA.LogUpload.ConnetionType",
215 network_metrics_provider_->GetConnectionType(),
216 metrics::SystemProfileProto::Network::CONNECTION_BLUETOOTH + 1);
Ilya Sherman 2015/03/24 21:55:44 Rather than using the enum type from the protocol
gayane -on leave until 09-2017 2015/03/25 21:02:33 For the enum eventually I have used net::NetworkCh
217 }
218
209 // Collect network stats after each UMA upload. 219 // Collect network stats after each UMA upload.
210 network_stats_uploader_.CollectAndReportNetworkStats(); 220 network_stats_uploader_.CollectAndReportNetworkStats();
211 } 221 }
212 222
213 void ChromeMetricsServiceClient::StartGatheringMetrics( 223 void ChromeMetricsServiceClient::StartGatheringMetrics(
214 const base::Closure& done_callback) { 224 const base::Closure& done_callback) {
215 finished_gathering_initial_metrics_callback_ = done_callback; 225 finished_gathering_initial_metrics_callback_ = done_callback;
216 base::Closure got_hardware_class_callback = 226 base::Closure got_hardware_class_callback =
217 base::Bind(&ChromeMetricsServiceClient::OnInitTaskGotHardwareClass, 227 base::Bind(&ChromeMetricsServiceClient::OnInitTaskGotHardwareClass,
218 weak_ptr_factory_.GetWeakPtr()); 228 weak_ptr_factory_.GetWeakPtr());
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 return scoped_ptr<metrics::MetricsLogUploader>( 270 return scoped_ptr<metrics::MetricsLogUploader>(
261 new metrics::NetMetricsLogUploader( 271 new metrics::NetMetricsLogUploader(
262 g_browser_process->system_request_context(), 272 g_browser_process->system_request_context(),
263 metrics::kDefaultMetricsServerUrl, 273 metrics::kDefaultMetricsServerUrl,
264 metrics::kDefaultMetricsMimeType, 274 metrics::kDefaultMetricsMimeType,
265 on_upload_complete)); 275 on_upload_complete));
266 } 276 }
267 277
268 base::TimeDelta ChromeMetricsServiceClient::GetStandardUploadInterval() { 278 base::TimeDelta ChromeMetricsServiceClient::GetStandardUploadInterval() {
269 #if defined(OS_ANDROID) || defined(OS_IOS) 279 #if defined(OS_ANDROID) || defined(OS_IOS)
270 bool is_cellular = false; 280 if (network_metrics_provider_->IsCellularConnection() &&
271 cellular_callback_.Run(&is_cellular); 281 IsCellularEnabledByExperiment())
272
273 if (is_cellular && IsCellularEnabledByExperiment())
274 return base::TimeDelta::FromSeconds(kStandardUploadIntervalCellularSeconds); 282 return base::TimeDelta::FromSeconds(kStandardUploadIntervalCellularSeconds);
275 #endif 283 #endif
276 return base::TimeDelta::FromSeconds(kStandardUploadIntervalSeconds); 284 return base::TimeDelta::FromSeconds(kStandardUploadIntervalSeconds);
277 } 285 }
278 286
279 base::string16 ChromeMetricsServiceClient::GetRegistryBackupKey() { 287 base::string16 ChromeMetricsServiceClient::GetRegistryBackupKey() {
280 #if defined(OS_WIN) 288 #if defined(OS_WIN)
281 return L"Software\\" PRODUCT_STRING_PATH L"\\StabilityMetrics"; 289 return L"Software\\" PRODUCT_STRING_PATH L"\\StabilityMetrics";
282 #else 290 #else
283 return base::string16(); 291 return base::string16();
(...skipping 12 matching lines...) Expand all
296 void ChromeMetricsServiceClient::Initialize() { 304 void ChromeMetricsServiceClient::Initialize() {
297 metrics_service_.reset(new metrics::MetricsService( 305 metrics_service_.reset(new metrics::MetricsService(
298 metrics_state_manager_, this, g_browser_process->local_state())); 306 metrics_state_manager_, this, g_browser_process->local_state()));
299 307
300 // Register metrics providers. 308 // Register metrics providers.
301 #if defined(ENABLE_EXTENSIONS) 309 #if defined(ENABLE_EXTENSIONS)
302 metrics_service_->RegisterMetricsProvider( 310 metrics_service_->RegisterMetricsProvider(
303 scoped_ptr<metrics::MetricsProvider>( 311 scoped_ptr<metrics::MetricsProvider>(
304 new ExtensionsMetricsProvider(metrics_state_manager_))); 312 new ExtensionsMetricsProvider(metrics_state_manager_)));
305 #endif 313 #endif
306 scoped_ptr<metrics::NetworkMetricsProvider> network_metrics_provider( 314
307 new metrics::NetworkMetricsProvider( 315 network_metrics_provider_ = new metrics::NetworkMetricsProvider(
308 content::BrowserThread::GetBlockingPool())); 316 content::BrowserThread::GetBlockingPool());
309 cellular_callback_ = network_metrics_provider->GetConnectionCallback(); 317 metrics_service_->RegisterMetricsProvider(
310 metrics_service_->RegisterMetricsProvider(network_metrics_provider.Pass()); 318 scoped_ptr<metrics::NetworkMetricsProvider>(network_metrics_provider_));
311 319
312 metrics_service_->RegisterMetricsProvider( 320 metrics_service_->RegisterMetricsProvider(
313 scoped_ptr<metrics::MetricsProvider>(new OmniboxMetricsProvider)); 321 scoped_ptr<metrics::MetricsProvider>(new OmniboxMetricsProvider));
314 metrics_service_->RegisterMetricsProvider( 322 metrics_service_->RegisterMetricsProvider(
315 scoped_ptr<metrics::MetricsProvider>(new ChromeStabilityMetricsProvider)); 323 scoped_ptr<metrics::MetricsProvider>(new ChromeStabilityMetricsProvider));
316 metrics_service_->RegisterMetricsProvider( 324 metrics_service_->RegisterMetricsProvider(
317 scoped_ptr<metrics::MetricsProvider>(new metrics::GPUMetricsProvider())); 325 scoped_ptr<metrics::MetricsProvider>(new metrics::GPUMetricsProvider()));
318 326
319 profiler_metrics_provider_ = 327 profiler_metrics_provider_ = new metrics::ProfilerMetricsProvider(
320 new metrics::ProfilerMetricsProvider(cellular_callback_); 328 network_metrics_provider_->GetConnectionCallback());
321 metrics_service_->RegisterMetricsProvider( 329 metrics_service_->RegisterMetricsProvider(
322 scoped_ptr<metrics::MetricsProvider>(profiler_metrics_provider_)); 330 scoped_ptr<metrics::MetricsProvider>(profiler_metrics_provider_));
323 331
324 #if defined(OS_ANDROID) 332 #if defined(OS_ANDROID)
325 metrics_service_->RegisterMetricsProvider( 333 metrics_service_->RegisterMetricsProvider(
326 scoped_ptr<metrics::MetricsProvider>( 334 scoped_ptr<metrics::MetricsProvider>(
327 new AndroidMetricsProvider(g_browser_process->local_state()))); 335 new AndroidMetricsProvider(g_browser_process->local_state())));
328 #endif // defined(OS_ANDROID) 336 #endif // defined(OS_ANDROID)
329 337
330 #if defined(OS_WIN) 338 #if defined(OS_WIN)
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after
581 // Capture the histogram samples. 589 // Capture the histogram samples.
582 if (dumps_with_crash != 0) 590 if (dumps_with_crash != 0)
583 UMA_HISTOGRAM_COUNTS("Chrome.BrowserDumpsWithCrash", dumps_with_crash); 591 UMA_HISTOGRAM_COUNTS("Chrome.BrowserDumpsWithCrash", dumps_with_crash);
584 if (dumps_with_no_crash != 0) 592 if (dumps_with_no_crash != 0)
585 UMA_HISTOGRAM_COUNTS("Chrome.BrowserDumpsWithNoCrash", dumps_with_no_crash); 593 UMA_HISTOGRAM_COUNTS("Chrome.BrowserDumpsWithNoCrash", dumps_with_no_crash);
586 int total_dumps = dumps_with_crash + dumps_with_no_crash; 594 int total_dumps = dumps_with_crash + dumps_with_no_crash;
587 if (total_dumps != 0) 595 if (total_dumps != 0)
588 UMA_HISTOGRAM_COUNTS("Chrome.BrowserCrashDumpAttempts", total_dumps); 596 UMA_HISTOGRAM_COUNTS("Chrome.BrowserCrashDumpAttempts", total_dumps);
589 } 597 }
590 #endif // defined(OS_WIN) 598 #endif // defined(OS_WIN)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698