| Index: chrome/browser/metrics/variations/variations_service.cc
|
| diff --git a/chrome/browser/metrics/variations/variations_service.cc b/chrome/browser/metrics/variations/variations_service.cc
|
| index 8b50c6e5991a3c1949707c83c05fae3e40a7da2b..c151232c1f2b735d5774e76c2724725945608e92 100644
|
| --- a/chrome/browser/metrics/variations/variations_service.cc
|
| +++ b/chrome/browser/metrics/variations/variations_service.cc
|
| @@ -60,6 +60,31 @@ chrome::VersionInfo::Channel ConvertStudyChannelToVersionChannel(
|
| return chrome::VersionInfo::CHANNEL_UNKNOWN;
|
| }
|
|
|
| +// Wrapper around channel checking, used to enable channel mocking for
|
| +// testing. If the current browser channel is not UNKNOWN, this will return
|
| +// that channel value. Otherwise, if the fake channel flag is provided, this
|
| +// will return the fake channel. Failing that, this will return the UNKNOWN
|
| +// channel.
|
| +chrome::VersionInfo::Channel GetChannelForVariations() {
|
| + chrome::VersionInfo::Channel channel = chrome::VersionInfo::GetChannel();
|
| + if (channel != chrome::VersionInfo::CHANNEL_UNKNOWN)
|
| + return channel;
|
| + std::string forced_channel =
|
| + CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
|
| + switches::kFakeVariationsChannel);
|
| + if (forced_channel == "stable")
|
| + channel = chrome::VersionInfo::CHANNEL_STABLE;
|
| + else if (forced_channel == "beta")
|
| + channel = chrome::VersionInfo::CHANNEL_BETA;
|
| + else if (forced_channel == "dev")
|
| + channel = chrome::VersionInfo::CHANNEL_DEV;
|
| + else if (forced_channel == "canary")
|
| + channel = chrome::VersionInfo::CHANNEL_CANARY;
|
| + else
|
| + DVLOG(1) << "Invalid channel provided: " << forced_channel;
|
| + return channel;
|
| +}
|
| +
|
| Study_Platform GetCurrentPlatform() {
|
| #if defined(OS_WIN)
|
| return Study_Platform_PLATFORM_WINDOWS;
|
| @@ -136,9 +161,12 @@ bool VariationsService::CreateTrialsFromSeed(PrefService* local_prefs) {
|
| if (!current_version_info.is_valid())
|
| return false;
|
|
|
| + chrome::VersionInfo::Channel channel = GetChannelForVariations();
|
| for (int i = 0; i < seed.study_size(); ++i) {
|
| - if (ShouldAddStudy(seed.study(i), current_version_info, reference_date))
|
| + if (ShouldAddStudy(seed.study(i), current_version_info, reference_date,
|
| + channel)) {
|
| CreateTrialFromStudy(seed.study(i), reference_date);
|
| + }
|
| }
|
|
|
| return true;
|
| @@ -293,9 +321,10 @@ bool VariationsService::StoreSeedData(const std::string& seed_data,
|
| bool VariationsService::ShouldAddStudy(
|
| const Study& study,
|
| const chrome::VersionInfo& version_info,
|
| - const base::Time& reference_date) {
|
| + const base::Time& reference_date,
|
| + const chrome::VersionInfo::Channel channel) {
|
| if (study.has_filter()) {
|
| - if (!CheckStudyChannel(study.filter(), chrome::VersionInfo::GetChannel())) {
|
| + if (!CheckStudyChannel(study.filter(), channel)) {
|
| DVLOG(1) << "Filtered out study " << study.name() << " due to channel.";
|
| return false;
|
| }
|
|
|