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

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

Issue 7360001: Allow one-time randomization in field trials to work even if metrics are disabled. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Build fix Created 9 years, 5 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
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 461 matching lines...) Expand 10 before | Expand all | Expand 10 after
472 void MetricsService::Stop() { 472 void MetricsService::Stop() {
473 HandleIdleSinceLastTransmission(false); 473 HandleIdleSinceLastTransmission(false);
474 SetReporting(false); 474 SetReporting(false);
475 SetRecording(false); 475 SetRecording(false);
476 } 476 }
477 477
478 std::string MetricsService::GetClientId() { 478 std::string MetricsService::GetClientId() {
479 return client_id_; 479 return client_id_;
480 } 480 }
481 481
482 std::string MetricsService::GetClientIdNonEmpty() {
483 PrefService* pref = g_browser_process->local_state();
484 DCHECK(pref);
485 std::string client_id = pref->GetString(prefs::kMetricsClientID);
486 if (client_id.empty()) {
487 client_id = GenerateClientID();
488 pref->SetString(prefs::kMetricsClientID, client_id);
489
490 // Might as well make a note of how long this ID has existed
491 pref->SetString(prefs::kMetricsClientIDTimestamp,
492 base::Int64ToString(Time::Now().ToTimeT()));
493 }
494 return client_id;
495 }
496
482 void MetricsService::SetRecording(bool enabled) { 497 void MetricsService::SetRecording(bool enabled) {
483 DCHECK(IsSingleThreaded()); 498 DCHECK(IsSingleThreaded());
484 499
485 if (enabled == recording_active_) 500 if (enabled == recording_active_)
486 return; 501 return;
487 502
488 if (enabled) { 503 if (enabled) {
489 if (client_id_.empty()) { 504 if (client_id_.empty()) {
490 PrefService* pref = g_browser_process->local_state(); 505 client_id_ = GetClientIdNonEmpty();
491 DCHECK(pref);
492 client_id_ = pref->GetString(prefs::kMetricsClientID);
493 if (client_id_.empty()) {
494 client_id_ = GenerateClientID();
495 pref->SetString(prefs::kMetricsClientID, client_id_);
496
497 // Might as well make a note of how long this ID has existed
498 pref->SetString(prefs::kMetricsClientIDTimestamp,
499 base::Int64ToString(Time::Now().ToTimeT()));
500 }
501 } 506 }
502 child_process_logging::SetClientId(client_id_); 507 child_process_logging::SetClientId(client_id_);
503 StartRecording(); 508 StartRecording();
504 509
505 SetUpNotifications(&registrar_, this); 510 SetUpNotifications(&registrar_, this);
506 } else { 511 } else {
507 registrar_.RemoveAll(); 512 registrar_.RemoveAll();
508 PushPendingLogsToUnsentLists(); 513 PushPendingLogsToUnsentLists();
509 DCHECK(!pending_log()); 514 DCHECK(!pending_log());
510 if (state_ > INITIAL_LOG_READY && unsent_logs()) 515 if (state_ > INITIAL_LOG_READY && unsent_logs())
(...skipping 1180 matching lines...) Expand 10 before | Expand all | Expand 10 after
1691 thread_id = base::PlatformThread::CurrentId(); 1696 thread_id = base::PlatformThread::CurrentId();
1692 return base::PlatformThread::CurrentId() == thread_id; 1697 return base::PlatformThread::CurrentId() == thread_id;
1693 } 1698 }
1694 1699
1695 #if defined(OS_CHROMEOS) 1700 #if defined(OS_CHROMEOS)
1696 void MetricsService::StartExternalMetrics() { 1701 void MetricsService::StartExternalMetrics() {
1697 external_metrics_ = new chromeos::ExternalMetrics; 1702 external_metrics_ = new chromeos::ExternalMetrics;
1698 external_metrics_->Start(); 1703 external_metrics_->Start();
1699 } 1704 }
1700 #endif 1705 #endif
OLDNEW
« chrome/browser/browser_main.cc ('K') | « chrome/browser/metrics/metrics_service.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698