summaryrefslogtreecommitdiffstats
path: root/components/metrics/metrics_service.cc
diff options
context:
space:
mode:
Diffstat (limited to 'components/metrics/metrics_service.cc')
-rw-r--r--components/metrics/metrics_service.cc19
1 files changed, 19 insertions, 0 deletions
diff --git a/components/metrics/metrics_service.cc b/components/metrics/metrics_service.cc
index 4db3bb5..4fa2e75 100644
--- a/components/metrics/metrics_service.cc
+++ b/components/metrics/metrics_service.cc
@@ -1138,6 +1138,18 @@ bool MetricsService::UmaMetricsProperlyShutdown() {
return clean_shutdown_status_ == CLEANLY_SHUTDOWN;
}
+void MetricsService::AddSyntheticTrialObserver(
+ SyntheticTrialObserver* observer) {
+ synthetic_trial_observer_list_.AddObserver(observer);
+ if (!synthetic_trial_groups_.empty())
+ observer->OnSyntheticTrialsChanged(synthetic_trial_groups_);
+}
+
+void MetricsService::RemoveSyntheticTrialObserver(
+ SyntheticTrialObserver* observer) {
+ synthetic_trial_observer_list_.RemoveObserver(observer);
+}
+
void MetricsService::RegisterSyntheticFieldTrial(
const SyntheticTrialGroup& trial) {
for (size_t i = 0; i < synthetic_trial_groups_.size(); ++i) {
@@ -1145,6 +1157,7 @@ void MetricsService::RegisterSyntheticFieldTrial(
if (synthetic_trial_groups_[i].id.group != trial.id.group) {
synthetic_trial_groups_[i].id.group = trial.id.group;
synthetic_trial_groups_[i].start_time = base::TimeTicks::Now();
+ NotifySyntheticTrialObservers();
}
return;
}
@@ -1153,6 +1166,7 @@ void MetricsService::RegisterSyntheticFieldTrial(
SyntheticTrialGroup trial_group = trial;
trial_group.start_time = base::TimeTicks::Now();
synthetic_trial_groups_.push_back(trial_group);
+ NotifySyntheticTrialObservers();
}
void MetricsService::RegisterMetricsProvider(
@@ -1166,6 +1180,11 @@ void MetricsService::CheckForClonedInstall(
state_manager_->CheckForClonedInstall(task_runner);
}
+void MetricsService::NotifySyntheticTrialObservers() {
+ FOR_EACH_OBSERVER(SyntheticTrialObserver, synthetic_trial_observer_list_,
+ OnSyntheticTrialsChanged(synthetic_trial_groups_));
+}
+
void MetricsService::GetCurrentSyntheticFieldTrials(
std::vector<variations::ActiveGroupId>* synthetic_trials) {
DCHECK(synthetic_trials);