| 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 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 235 | 235 |
| 236 int probability; | 236 int probability; |
| 237 // In case specified sampling rate is invalid. | 237 // In case specified sampling rate is invalid. |
| 238 if (!base::StringToInt(probability_str, &probability)) | 238 if (!base::StringToInt(probability_str, &probability)) |
| 239 return true; | 239 return true; |
| 240 return base::RandInt(1, 100) <= probability; | 240 return base::RandInt(1, 100) <= probability; |
| 241 } | 241 } |
| 242 | 242 |
| 243 } // namespace | 243 } // namespace |
| 244 | 244 |
| 245 | |
| 246 SyntheticTrialGroup::SyntheticTrialGroup(uint32 trial, uint32 group) { | |
| 247 id.name = trial; | |
| 248 id.group = group; | |
| 249 } | |
| 250 | |
| 251 SyntheticTrialGroup::~SyntheticTrialGroup() { | |
| 252 } | |
| 253 | |
| 254 // static | 245 // static |
| 255 MetricsService::ShutdownCleanliness MetricsService::clean_shutdown_status_ = | 246 MetricsService::ShutdownCleanliness MetricsService::clean_shutdown_status_ = |
| 256 MetricsService::CLEANLY_SHUTDOWN; | 247 MetricsService::CLEANLY_SHUTDOWN; |
| 257 | 248 |
| 258 MetricsService::ExecutionPhase MetricsService::execution_phase_ = | 249 MetricsService::ExecutionPhase MetricsService::execution_phase_ = |
| 259 MetricsService::UNINITIALIZED_PHASE; | 250 MetricsService::UNINITIALIZED_PHASE; |
| 260 | 251 |
| 261 // static | 252 // static |
| 262 void MetricsService::RegisterPrefs(PrefRegistrySimple* registry) { | 253 void MetricsService::RegisterPrefs(PrefRegistrySimple* registry) { |
| 263 DCHECK(IsSingleThreaded()); | 254 DCHECK(IsSingleThreaded()); |
| (...skipping 754 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1018 local_state_->SetInt64(path, value + 1); | 1009 local_state_->SetInt64(path, value + 1); |
| 1019 } | 1010 } |
| 1020 | 1011 |
| 1021 bool MetricsService::UmaMetricsProperlyShutdown() { | 1012 bool MetricsService::UmaMetricsProperlyShutdown() { |
| 1022 CHECK(clean_shutdown_status_ == CLEANLY_SHUTDOWN || | 1013 CHECK(clean_shutdown_status_ == CLEANLY_SHUTDOWN || |
| 1023 clean_shutdown_status_ == NEED_TO_SHUTDOWN); | 1014 clean_shutdown_status_ == NEED_TO_SHUTDOWN); |
| 1024 return clean_shutdown_status_ == CLEANLY_SHUTDOWN; | 1015 return clean_shutdown_status_ == CLEANLY_SHUTDOWN; |
| 1025 } | 1016 } |
| 1026 | 1017 |
| 1027 void MetricsService::AddSyntheticTrialObserver( | 1018 void MetricsService::AddSyntheticTrialObserver( |
| 1028 SyntheticTrialObserver* observer) { | 1019 variations::SyntheticTrialObserver* observer) { |
| 1029 synthetic_trial_observer_list_.AddObserver(observer); | 1020 synthetic_trial_observer_list_.AddObserver(observer); |
| 1030 if (!synthetic_trial_groups_.empty()) | 1021 if (!synthetic_trial_groups_.empty()) |
| 1031 observer->OnSyntheticTrialsChanged(synthetic_trial_groups_); | 1022 observer->OnSyntheticTrialsChanged(synthetic_trial_groups_); |
| 1032 } | 1023 } |
| 1033 | 1024 |
| 1034 void MetricsService::RemoveSyntheticTrialObserver( | 1025 void MetricsService::RemoveSyntheticTrialObserver( |
| 1035 SyntheticTrialObserver* observer) { | 1026 variations::SyntheticTrialObserver* observer) { |
| 1036 synthetic_trial_observer_list_.RemoveObserver(observer); | 1027 synthetic_trial_observer_list_.RemoveObserver(observer); |
| 1037 } | 1028 } |
| 1038 | 1029 |
| 1039 void MetricsService::RegisterSyntheticFieldTrial( | 1030 void MetricsService::RegisterSyntheticFieldTrial( |
| 1040 const SyntheticTrialGroup& trial) { | 1031 const variations::SyntheticTrialGroup& trial) { |
| 1041 for (size_t i = 0; i < synthetic_trial_groups_.size(); ++i) { | 1032 for (size_t i = 0; i < synthetic_trial_groups_.size(); ++i) { |
| 1042 if (synthetic_trial_groups_[i].id.name == trial.id.name) { | 1033 if (synthetic_trial_groups_[i].id.name == trial.id.name) { |
| 1043 if (synthetic_trial_groups_[i].id.group != trial.id.group) { | 1034 if (synthetic_trial_groups_[i].id.group != trial.id.group) { |
| 1044 synthetic_trial_groups_[i].id.group = trial.id.group; | 1035 synthetic_trial_groups_[i].id.group = trial.id.group; |
| 1045 synthetic_trial_groups_[i].start_time = base::TimeTicks::Now(); | 1036 synthetic_trial_groups_[i].start_time = base::TimeTicks::Now(); |
| 1046 NotifySyntheticTrialObservers(); | 1037 NotifySyntheticTrialObservers(); |
| 1047 } | 1038 } |
| 1048 return; | 1039 return; |
| 1049 } | 1040 } |
| 1050 } | 1041 } |
| 1051 | 1042 |
| 1052 SyntheticTrialGroup trial_group = trial; | 1043 variations::SyntheticTrialGroup trial_group = trial; |
| 1053 trial_group.start_time = base::TimeTicks::Now(); | 1044 trial_group.start_time = base::TimeTicks::Now(); |
| 1054 synthetic_trial_groups_.push_back(trial_group); | 1045 synthetic_trial_groups_.push_back(trial_group); |
| 1055 NotifySyntheticTrialObservers(); | 1046 NotifySyntheticTrialObservers(); |
| 1056 } | 1047 } |
| 1057 | 1048 |
| 1058 void MetricsService::GetCurrentSyntheticFieldTrialsForTesting( | 1049 void MetricsService::GetCurrentSyntheticFieldTrialsForTesting( |
| 1059 std::vector<variations::ActiveGroupId>* synthetic_trials) { | 1050 std::vector<variations::ActiveGroupId>* synthetic_trials) { |
| 1060 GetSyntheticFieldTrialsOlderThan(base::TimeTicks::Now(), synthetic_trials); | 1051 GetSyntheticFieldTrialsOlderThan(base::TimeTicks::Now(), synthetic_trials); |
| 1061 } | 1052 } |
| 1062 | 1053 |
| 1063 void MetricsService::RegisterMetricsProvider( | 1054 void MetricsService::RegisterMetricsProvider( |
| 1064 scoped_ptr<MetricsProvider> provider) { | 1055 scoped_ptr<MetricsProvider> provider) { |
| 1065 DCHECK_EQ(INITIALIZED, state_); | 1056 DCHECK_EQ(INITIALIZED, state_); |
| 1066 metrics_providers_.push_back(provider.Pass()); | 1057 metrics_providers_.push_back(provider.Pass()); |
| 1067 } | 1058 } |
| 1068 | 1059 |
| 1069 void MetricsService::CheckForClonedInstall( | 1060 void MetricsService::CheckForClonedInstall( |
| 1070 scoped_refptr<base::SingleThreadTaskRunner> task_runner) { | 1061 scoped_refptr<base::SingleThreadTaskRunner> task_runner) { |
| 1071 state_manager_->CheckForClonedInstall(task_runner); | 1062 state_manager_->CheckForClonedInstall(task_runner); |
| 1072 } | 1063 } |
| 1073 | 1064 |
| 1074 void MetricsService::NotifySyntheticTrialObservers() { | 1065 void MetricsService::NotifySyntheticTrialObservers() { |
| 1075 FOR_EACH_OBSERVER(SyntheticTrialObserver, synthetic_trial_observer_list_, | 1066 FOR_EACH_OBSERVER(variations::SyntheticTrialObserver, |
| 1067 synthetic_trial_observer_list_, |
| 1076 OnSyntheticTrialsChanged(synthetic_trial_groups_)); | 1068 OnSyntheticTrialsChanged(synthetic_trial_groups_)); |
| 1077 } | 1069 } |
| 1078 | 1070 |
| 1079 void MetricsService::GetSyntheticFieldTrialsOlderThan( | 1071 void MetricsService::GetSyntheticFieldTrialsOlderThan( |
| 1080 base::TimeTicks time, | 1072 base::TimeTicks time, |
| 1081 std::vector<variations::ActiveGroupId>* synthetic_trials) { | 1073 std::vector<variations::ActiveGroupId>* synthetic_trials) { |
| 1082 DCHECK(synthetic_trials); | 1074 DCHECK(synthetic_trials); |
| 1083 synthetic_trials->clear(); | 1075 synthetic_trials->clear(); |
| 1084 for (size_t i = 0; i < synthetic_trial_groups_.size(); ++i) { | 1076 for (size_t i = 0; i < synthetic_trial_groups_.size(); ++i) { |
| 1085 if (synthetic_trial_groups_[i].start_time <= time) | 1077 if (synthetic_trial_groups_[i].start_time <= time) |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1143 base::Time::Now().ToTimeT()); | 1135 base::Time::Now().ToTimeT()); |
| 1144 } | 1136 } |
| 1145 | 1137 |
| 1146 void MetricsService::SkipAndDiscardUpload() { | 1138 void MetricsService::SkipAndDiscardUpload() { |
| 1147 log_manager_.DiscardStagedLog(); | 1139 log_manager_.DiscardStagedLog(); |
| 1148 scheduler_->UploadCancelled(); | 1140 scheduler_->UploadCancelled(); |
| 1149 log_upload_in_progress_ = false; | 1141 log_upload_in_progress_ = false; |
| 1150 } | 1142 } |
| 1151 | 1143 |
| 1152 } // namespace metrics | 1144 } // namespace metrics |
| OLD | NEW |