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

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

Issue 7056031: Collect stats to investigate the viability of UDP (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 6 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 | Annotate | Revision Log
« no previous file with comments | « chrome/browser/metrics/metrics_service.h ('k') | chrome/browser/net/network_stats.h » ('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 (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 10 // A MetricsService instance is typically created at application startup. It
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
167 #include "base/threading/platform_thread.h" 167 #include "base/threading/platform_thread.h"
168 #include "base/threading/thread.h" 168 #include "base/threading/thread.h"
169 #include "base/utf_string_conversions.h" 169 #include "base/utf_string_conversions.h"
170 #include "base/values.h" 170 #include "base/values.h"
171 #include "chrome/browser/bookmarks/bookmark_model.h" 171 #include "chrome/browser/bookmarks/bookmark_model.h"
172 #include "chrome/browser/browser_process.h" 172 #include "chrome/browser/browser_process.h"
173 #include "chrome/browser/memory_details.h" 173 #include "chrome/browser/memory_details.h"
174 #include "chrome/browser/metrics/histogram_synchronizer.h" 174 #include "chrome/browser/metrics/histogram_synchronizer.h"
175 #include "chrome/browser/metrics/metrics_log.h" 175 #include "chrome/browser/metrics/metrics_log.h"
176 #include "chrome/browser/metrics/metrics_reporting_scheduler.h" 176 #include "chrome/browser/metrics/metrics_reporting_scheduler.h"
177 #include "chrome/browser/net/network_stats.h"
177 #include "chrome/browser/prefs/pref_service.h" 178 #include "chrome/browser/prefs/pref_service.h"
178 #include "chrome/browser/prefs/scoped_user_pref_update.h" 179 #include "chrome/browser/prefs/scoped_user_pref_update.h"
179 #include "chrome/browser/profiles/profile.h" 180 #include "chrome/browser/profiles/profile.h"
180 #include "chrome/browser/search_engines/template_url_service.h" 181 #include "chrome/browser/search_engines/template_url_service.h"
181 #include "chrome/browser/ui/browser_list.h" 182 #include "chrome/browser/ui/browser_list.h"
182 #include "chrome/common/child_process_logging.h" 183 #include "chrome/common/child_process_logging.h"
183 #include "chrome/common/chrome_switches.h" 184 #include "chrome/common/chrome_switches.h"
184 #include "chrome/common/guid.h" 185 #include "chrome/common/guid.h"
185 #include "chrome/common/pref_names.h" 186 #include "chrome/common/pref_names.h"
186 #include "chrome/common/render_messages.h" 187 #include "chrome/common/render_messages.h"
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
431 432
432 local_state->ClearPref(prefs::kMetricsInitialLogs); 433 local_state->ClearPref(prefs::kMetricsInitialLogs);
433 local_state->ClearPref(prefs::kMetricsOngoingLogs); 434 local_state->ClearPref(prefs::kMetricsOngoingLogs);
434 } 435 }
435 436
436 MetricsService::MetricsService() 437 MetricsService::MetricsService()
437 : recording_active_(false), 438 : recording_active_(false),
438 reporting_active_(false), 439 reporting_active_(false),
439 state_(INITIALIZED), 440 state_(INITIALIZED),
440 current_fetch_(NULL), 441 current_fetch_(NULL),
442 io_thread_(NULL),
441 idle_since_last_transmission_(false), 443 idle_since_last_transmission_(false),
442 next_window_id_(0), 444 next_window_id_(0),
443 ALLOW_THIS_IN_INITIALIZER_LIST(log_sender_factory_(this)), 445 ALLOW_THIS_IN_INITIALIZER_LIST(log_sender_factory_(this)),
444 ALLOW_THIS_IN_INITIALIZER_LIST(state_saver_factory_(this)), 446 ALLOW_THIS_IN_INITIALIZER_LIST(state_saver_factory_(this)),
445 waiting_for_asynchronus_reporting_step_(false) { 447 waiting_for_asynchronus_reporting_step_(false) {
446 DCHECK(IsSingleThreaded()); 448 DCHECK(IsSingleThreaded());
447 InitializeMetricsState(); 449 InitializeMetricsState();
448 450
449 base::Closure callback = base::Bind(&MetricsService::StartScheduledUpload, 451 base::Closure callback = base::Bind(&MetricsService::StartScheduledUpload,
450 base::Unretained(this)); 452 base::Unretained(this));
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
687 // private methods 689 // private methods
688 //------------------------------------------------------------------------------ 690 //------------------------------------------------------------------------------
689 691
690 692
691 //------------------------------------------------------------------------------ 693 //------------------------------------------------------------------------------
692 // Initialization methods 694 // Initialization methods
693 695
694 void MetricsService::InitializeMetricsState() { 696 void MetricsService::InitializeMetricsState() {
695 #if defined(OS_POSIX) 697 #if defined(OS_POSIX)
696 server_url_ = L"https://clients4.google.com/firefox/metrics/collect"; 698 server_url_ = L"https://clients4.google.com/firefox/metrics/collect";
699 // TODO(rtenneti): Return the network stats server name.
700 network_stats_server_ = "";
697 #else 701 #else
698 BrowserDistribution* dist = BrowserDistribution::GetDistribution(); 702 BrowserDistribution* dist = BrowserDistribution::GetDistribution();
699 server_url_ = dist->GetStatsServerURL(); 703 server_url_ = dist->GetStatsServerURL();
704 network_stats_server_ = dist->GetNetworkStatsServer();
700 #endif 705 #endif
701 706
702 PrefService* pref = g_browser_process->local_state(); 707 PrefService* pref = g_browser_process->local_state();
703 DCHECK(pref); 708 DCHECK(pref);
704 709
705 if ((pref->GetInt64(prefs::kStabilityStatsBuildTime) 710 if ((pref->GetInt64(prefs::kStabilityStatsBuildTime)
706 != MetricsLog::GetBuildTime()) || 711 != MetricsLog::GetBuildTime()) ||
707 (pref->GetString(prefs::kStabilityStatsVersion) 712 (pref->GetString(prefs::kStabilityStatsVersion)
708 != MetricsLog::GetVersionString())) { 713 != MetricsLog::GetVersionString())) {
709 // This is a new version, so we don't want to confuse the stats about the 714 // This is a new version, so we don't want to confuse the stats about the
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
785 // getting updated) every n minutes. 790 // getting updated) every n minutes.
786 ScheduleNextStateSave(); 791 ScheduleNextStateSave();
787 } 792 }
788 793
789 void MetricsService::OnInitTaskComplete( 794 void MetricsService::OnInitTaskComplete(
790 const std::string& hardware_class, 795 const std::string& hardware_class,
791 const std::vector<webkit::npapi::WebPluginInfo>& plugins) { 796 const std::vector<webkit::npapi::WebPluginInfo>& plugins) {
792 DCHECK(state_ == INIT_TASK_SCHEDULED); 797 DCHECK(state_ == INIT_TASK_SCHEDULED);
793 hardware_class_ = hardware_class; 798 hardware_class_ = hardware_class;
794 plugins_ = plugins; 799 plugins_ = plugins;
800 io_thread_ = g_browser_process->io_thread();
795 if (state_ == INIT_TASK_SCHEDULED) 801 if (state_ == INIT_TASK_SCHEDULED)
796 state_ = INIT_TASK_DONE; 802 state_ = INIT_TASK_DONE;
797 } 803 }
798 804
799 std::string MetricsService::GenerateClientID() { 805 std::string MetricsService::GenerateClientID() {
800 return guid::GenerateGUID(); 806 return guid::GenerateGUID();
801 } 807 }
802 808
803 //------------------------------------------------------------------------------ 809 //------------------------------------------------------------------------------
804 // State save methods 810 // State save methods
(...skipping 553 matching lines...) Expand 10 before | Expand all | Expand 10 after
1358 1364
1359 if (unsent_logs()) 1365 if (unsent_logs())
1360 DCHECK(state_ < SENDING_CURRENT_LOGS); 1366 DCHECK(state_ < SENDING_CURRENT_LOGS);
1361 } 1367 }
1362 1368
1363 // Error 400 indicates a problem with the log, not with the server, so 1369 // Error 400 indicates a problem with the log, not with the server, so
1364 // don't consider that a sign that the server is in trouble. 1370 // don't consider that a sign that the server is in trouble.
1365 bool server_is_healthy = upload_succeeded || response_code == 400; 1371 bool server_is_healthy = upload_succeeded || response_code == 400;
1366 1372
1367 scheduler_->UploadFinished(server_is_healthy, unsent_logs()); 1373 scheduler_->UploadFinished(server_is_healthy, unsent_logs());
1374
1375 // Collect network stats if UMA upload succeeded.
1376 if (server_is_healthy && io_thread_)
1377 chrome_browser_net::CollectNetworkStats(network_stats_server_, io_thread_);
1368 } 1378 }
1369 1379
1370 void MetricsService::LogBadResponseCode() { 1380 void MetricsService::LogBadResponseCode() {
1371 VLOG(1) << "Verify your metrics logs are formatted correctly. Verify server " 1381 VLOG(1) << "Verify your metrics logs are formatted correctly. Verify server "
1372 "is active at " << server_url_; 1382 "is active at " << server_url_;
1373 if (!pending_log()) { 1383 if (!pending_log()) {
1374 VLOG(1) << "METRICS: Recorder shutdown during log transmission."; 1384 VLOG(1) << "METRICS: Recorder shutdown during log transmission.";
1375 } else { 1385 } else {
1376 VLOG(1) << "METRICS: transmission retry being scheduled for " 1386 VLOG(1) << "METRICS: transmission retry being scheduled for "
1377 << compressed_log_; 1387 << compressed_log_;
(...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after
1684 thread_id = base::PlatformThread::CurrentId(); 1694 thread_id = base::PlatformThread::CurrentId();
1685 return base::PlatformThread::CurrentId() == thread_id; 1695 return base::PlatformThread::CurrentId() == thread_id;
1686 } 1696 }
1687 1697
1688 #if defined(OS_CHROMEOS) 1698 #if defined(OS_CHROMEOS)
1689 void MetricsService::StartExternalMetrics() { 1699 void MetricsService::StartExternalMetrics() {
1690 external_metrics_ = new chromeos::ExternalMetrics; 1700 external_metrics_ = new chromeos::ExternalMetrics;
1691 external_metrics_->Start(); 1701 external_metrics_->Start();
1692 } 1702 }
1693 #endif 1703 #endif
OLDNEW
« no previous file with comments | « chrome/browser/metrics/metrics_service.h ('k') | chrome/browser/net/network_stats.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698