| OLD | NEW |
| 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 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 279 | 279 |
| 280 MetricsService::ExecutionPhase MetricsService::execution_phase_ = | 280 MetricsService::ExecutionPhase MetricsService::execution_phase_ = |
| 281 MetricsService::UNINITIALIZED_PHASE; | 281 MetricsService::UNINITIALIZED_PHASE; |
| 282 | 282 |
| 283 // static | 283 // static |
| 284 void MetricsService::RegisterPrefs(PrefRegistrySimple* registry) { | 284 void MetricsService::RegisterPrefs(PrefRegistrySimple* registry) { |
| 285 DCHECK(IsSingleThreaded()); | 285 DCHECK(IsSingleThreaded()); |
| 286 metrics::MetricsStateManager::RegisterPrefs(registry); | 286 metrics::MetricsStateManager::RegisterPrefs(registry); |
| 287 MetricsLog::RegisterPrefs(registry); | 287 MetricsLog::RegisterPrefs(registry); |
| 288 | 288 |
| 289 registry->RegisterInt64Pref(metrics::prefs::kInstallDate, 0); |
| 290 |
| 289 registry->RegisterInt64Pref(metrics::prefs::kStabilityLaunchTimeSec, 0); | 291 registry->RegisterInt64Pref(metrics::prefs::kStabilityLaunchTimeSec, 0); |
| 290 registry->RegisterInt64Pref(metrics::prefs::kStabilityLastTimestampSec, 0); | 292 registry->RegisterInt64Pref(metrics::prefs::kStabilityLastTimestampSec, 0); |
| 291 registry->RegisterStringPref(metrics::prefs::kStabilityStatsVersion, | 293 registry->RegisterStringPref(metrics::prefs::kStabilityStatsVersion, |
| 292 std::string()); | 294 std::string()); |
| 293 registry->RegisterInt64Pref(metrics::prefs::kStabilityStatsBuildTime, 0); | 295 registry->RegisterInt64Pref(metrics::prefs::kStabilityStatsBuildTime, 0); |
| 294 registry->RegisterBooleanPref(metrics::prefs::kStabilityExitedCleanly, true); | 296 registry->RegisterBooleanPref(metrics::prefs::kStabilityExitedCleanly, true); |
| 295 registry->RegisterIntegerPref(metrics::prefs::kStabilityExecutionPhase, | 297 registry->RegisterIntegerPref(metrics::prefs::kStabilityExecutionPhase, |
| 296 UNINITIALIZED_PHASE); | 298 UNINITIALIZED_PHASE); |
| 297 registry->RegisterBooleanPref(metrics::prefs::kStabilitySessionEndCompleted, | 299 registry->RegisterBooleanPref(metrics::prefs::kStabilitySessionEndCompleted, |
| 298 true); | 300 true); |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 376 } | 378 } |
| 377 | 379 |
| 378 void MetricsService::DisableReporting() { | 380 void MetricsService::DisableReporting() { |
| 379 reporting_active_ = false; | 381 reporting_active_ = false; |
| 380 } | 382 } |
| 381 | 383 |
| 382 std::string MetricsService::GetClientId() { | 384 std::string MetricsService::GetClientId() { |
| 383 return state_manager_->client_id(); | 385 return state_manager_->client_id(); |
| 384 } | 386 } |
| 385 | 387 |
| 388 int64 MetricsService::GetInstallDate() { |
| 389 return local_state_->GetInt64(metrics::prefs::kInstallDate); |
| 390 } |
| 391 |
| 386 scoped_ptr<const base::FieldTrial::EntropyProvider> | 392 scoped_ptr<const base::FieldTrial::EntropyProvider> |
| 387 MetricsService::CreateEntropyProvider() { | 393 MetricsService::CreateEntropyProvider() { |
| 388 // TODO(asvitkine): Refactor the code so that MetricsService does not expose | 394 // TODO(asvitkine): Refactor the code so that MetricsService does not expose |
| 389 // this method. | 395 // this method. |
| 390 return state_manager_->CreateEntropyProvider(); | 396 return state_manager_->CreateEntropyProvider(); |
| 391 } | 397 } |
| 392 | 398 |
| 393 void MetricsService::EnableRecording() { | 399 void MetricsService::EnableRecording() { |
| 394 DCHECK(IsSingleThreaded()); | 400 DCHECK(IsSingleThreaded()); |
| 395 | 401 |
| (...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 733 | 739 |
| 734 // Put incremental data (histogram deltas, and realtime stats deltas) at the | 740 // Put incremental data (histogram deltas, and realtime stats deltas) at the |
| 735 // end of all log transmissions (initial log handles this separately). | 741 // end of all log transmissions (initial log handles this separately). |
| 736 // RecordIncrementalStabilityElements only exists on the derived | 742 // RecordIncrementalStabilityElements only exists on the derived |
| 737 // MetricsLog class. | 743 // MetricsLog class. |
| 738 MetricsLog* current_log = | 744 MetricsLog* current_log = |
| 739 static_cast<MetricsLog*>(log_manager_.current_log()); | 745 static_cast<MetricsLog*>(log_manager_.current_log()); |
| 740 DCHECK(current_log); | 746 DCHECK(current_log); |
| 741 std::vector<variations::ActiveGroupId> synthetic_trials; | 747 std::vector<variations::ActiveGroupId> synthetic_trials; |
| 742 GetCurrentSyntheticFieldTrials(&synthetic_trials); | 748 GetCurrentSyntheticFieldTrials(&synthetic_trials); |
| 743 current_log->RecordEnvironment(metrics_providers_.get(), synthetic_trials); | 749 current_log->RecordEnvironment( |
| 750 metrics_providers_.get(), synthetic_trials, GetInstallDate()); |
| 744 base::TimeDelta incremental_uptime; | 751 base::TimeDelta incremental_uptime; |
| 745 base::TimeDelta uptime; | 752 base::TimeDelta uptime; |
| 746 GetUptimes(local_state_, &incremental_uptime, &uptime); | 753 GetUptimes(local_state_, &incremental_uptime, &uptime); |
| 747 current_log->RecordStabilityMetrics(metrics_providers_.get(), | 754 current_log->RecordStabilityMetrics(metrics_providers_.get(), |
| 748 incremental_uptime, uptime); | 755 incremental_uptime, uptime); |
| 749 | 756 |
| 750 RecordCurrentHistograms(); | 757 RecordCurrentHistograms(); |
| 751 current_log->RecordGeneralMetrics(metrics_providers_.get()); | 758 current_log->RecordGeneralMetrics(metrics_providers_.get()); |
| 752 | 759 |
| 753 log_manager_.FinishCurrentLog(); | 760 log_manager_.FinishCurrentLog(); |
| (...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 946 | 953 |
| 947 has_initial_stability_log_ = true; | 954 has_initial_stability_log_ = true; |
| 948 } | 955 } |
| 949 | 956 |
| 950 void MetricsService::PrepareInitialMetricsLog() { | 957 void MetricsService::PrepareInitialMetricsLog() { |
| 951 DCHECK(state_ == INIT_TASK_DONE || state_ == SENDING_INITIAL_STABILITY_LOG); | 958 DCHECK(state_ == INIT_TASK_DONE || state_ == SENDING_INITIAL_STABILITY_LOG); |
| 952 | 959 |
| 953 std::vector<variations::ActiveGroupId> synthetic_trials; | 960 std::vector<variations::ActiveGroupId> synthetic_trials; |
| 954 GetCurrentSyntheticFieldTrials(&synthetic_trials); | 961 GetCurrentSyntheticFieldTrials(&synthetic_trials); |
| 955 initial_metrics_log_->RecordEnvironment(metrics_providers_.get(), | 962 initial_metrics_log_->RecordEnvironment(metrics_providers_.get(), |
| 956 synthetic_trials); | 963 synthetic_trials, |
| 964 GetInstallDate()); |
| 957 base::TimeDelta incremental_uptime; | 965 base::TimeDelta incremental_uptime; |
| 958 base::TimeDelta uptime; | 966 base::TimeDelta uptime; |
| 959 GetUptimes(local_state_, &incremental_uptime, &uptime); | 967 GetUptimes(local_state_, &incremental_uptime, &uptime); |
| 960 | 968 |
| 961 // Histograms only get written to the current log, so make the new log current | 969 // Histograms only get written to the current log, so make the new log current |
| 962 // before writing them. | 970 // before writing them. |
| 963 log_manager_.PauseCurrentLog(); | 971 log_manager_.PauseCurrentLog(); |
| 964 log_manager_.BeginLoggingWithLog(initial_metrics_log_.Pass()); | 972 log_manager_.BeginLoggingWithLog(initial_metrics_log_.Pass()); |
| 965 | 973 |
| 966 // Note: Some stability providers may record stability stats via histograms, | 974 // Note: Some stability providers may record stability stats via histograms, |
| (...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1197 RecordCurrentState(local_state_); | 1205 RecordCurrentState(local_state_); |
| 1198 } | 1206 } |
| 1199 | 1207 |
| 1200 void MetricsService::RecordCurrentState(PrefService* pref) { | 1208 void MetricsService::RecordCurrentState(PrefService* pref) { |
| 1201 pref->SetInt64(metrics::prefs::kStabilityLastTimestampSec, | 1209 pref->SetInt64(metrics::prefs::kStabilityLastTimestampSec, |
| 1202 Time::Now().ToTimeT()); | 1210 Time::Now().ToTimeT()); |
| 1203 | 1211 |
| 1204 for (size_t i = 0; i < metrics_providers_.size(); ++i) | 1212 for (size_t i = 0; i < metrics_providers_.size(); ++i) |
| 1205 metrics_providers_[i]->RecordCurrentState(); | 1213 metrics_providers_[i]->RecordCurrentState(); |
| 1206 } | 1214 } |
| OLD | NEW |