// Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "chrome/browser/chrome_browser_field_trials_desktop.h" #include #include "base/command_line.h" #include "base/metrics/field_trial.h" #include "base/prefs/pref_service.h" #include "base/strings/string_util.h" #include "chrome/browser/auto_launch_trial.h" #include "chrome/browser/google/google_brand.h" #include "chrome/browser/prerender/prerender_field_trial.h" #include "chrome/browser/profiles/profiles_state.h" #include "chrome/browser/safe_browsing/safe_browsing_blocking_page.h" #include "chrome/browser/ui/app_list/app_list_util.h" #include "chrome/browser/ui/sync/one_click_signin_helper.h" #include "chrome/common/chrome_switches.h" #include "chrome/common/chrome_version_info.h" #include "chrome/common/variations/variations_util.h" #include "content/public/common/content_constants.h" #include "net/spdy/spdy_session.h" #include "ui/base/layout.h" namespace chrome { namespace { void AutoLaunchChromeFieldTrial() { std::string brand; google_brand::GetBrand(&brand); // Create a 100% field trial based on the brand code. if (auto_launch_trial::IsInExperimentGroup(brand)) { base::FieldTrialList::CreateFieldTrial(kAutoLaunchTrialName, kAutoLaunchTrialAutoLaunchGroup); } else if (auto_launch_trial::IsInControlGroup(brand)) { base::FieldTrialList::CreateFieldTrial(kAutoLaunchTrialName, kAutoLaunchTrialControlGroup); } } void SetupInfiniteCacheFieldTrial() { const base::FieldTrial::Probability kDivisor = 100; base::FieldTrial::Probability infinite_cache_probability = 0; scoped_refptr trial( base::FieldTrialList::FactoryGetFieldTrial( "InfiniteCache", kDivisor, "No", 2013, 12, 31, base::FieldTrial::ONE_TIME_RANDOMIZED, NULL)); trial->AppendGroup("Yes", infinite_cache_probability); trial->AppendGroup("Control", infinite_cache_probability); } void DisableShowProfileSwitcherTrialIfNecessary() { // This trial is created by the VariationsService, but it needs to be disabled // if multi-profiles isn't enabled. base::FieldTrial* trial = base::FieldTrialList::Find("ShowProfileSwitcher"); if (trial && !profiles::IsMultipleProfilesEnabled()) trial->Disable(); } } // namespace void SetupDesktopFieldTrials(const base::CommandLine& parsed_command_line, PrefService* local_state) { prerender::ConfigurePrerender(parsed_command_line); AutoLaunchChromeFieldTrial(); SetupInfiniteCacheFieldTrial(); DisableShowProfileSwitcherTrialIfNecessary(); SetupShowAppLauncherPromoFieldTrial(local_state); } } // namespace chrome