blob: bd51697297471c721b207fcf570b3b3c95527983 [file] [log] [blame]
// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/variations/synthetic_trials_active_group_id_provider.h"
#include "base/memory/singleton.h"
#include "components/variations/variations_associated_data.h"
#include "components/variations/variations_crash_keys.h"
namespace variations {
SyntheticTrialsActiveGroupIdProvider*
SyntheticTrialsActiveGroupIdProvider::GetInstance() {
return base::Singleton<SyntheticTrialsActiveGroupIdProvider>::get();
}
SyntheticTrialsActiveGroupIdProvider::SyntheticTrialsActiveGroupIdProvider() =
default;
SyntheticTrialsActiveGroupIdProvider::~SyntheticTrialsActiveGroupIdProvider() =
default;
std::vector<ActiveGroupId>
SyntheticTrialsActiveGroupIdProvider::GetActiveGroupIds() {
base::AutoLock scoped_lock(lock_);
return group_ids_;
}
#if !defined(NDEBUG)
std::vector<SyntheticTrialGroup>
SyntheticTrialsActiveGroupIdProvider::GetGroups() {
base::AutoLock scoped_lock(lock_);
return groups_;
}
#endif // !defined(NDEBUG)
void SyntheticTrialsActiveGroupIdProvider::ResetForTesting() {
base::AutoLock scoped_lock(lock_);
group_ids_.clear();
#if !defined(NDEBUG)
groups_.clear();
#endif // !defined(NDEBUG)
}
void SyntheticTrialsActiveGroupIdProvider::OnSyntheticTrialsChanged(
const std::vector<SyntheticTrialGroup>& trials_updated,
const std::vector<SyntheticTrialGroup>& trials_removed,
const std::vector<SyntheticTrialGroup>& groups) {
{
base::AutoLock scoped_lock(lock_);
group_ids_.clear();
for (const auto& group : groups) {
group_ids_.push_back(group.id());
}
#if !defined(NDEBUG)
groups_ = groups;
#endif // !defined(NDEBUG)
}
// Update the experiments list for crash reports.
UpdateCrashKeysWithSyntheticTrials(groups);
}
} // namespace variations