Chromium Code Reviews| Index: chrome/browser/chrome_browser_field_trials_desktop.cc |
| diff --git a/chrome/browser/chrome_browser_field_trials.cc b/chrome/browser/chrome_browser_field_trials_desktop.cc |
| similarity index 58% |
| copy from chrome/browser/chrome_browser_field_trials.cc |
| copy to chrome/browser/chrome_browser_field_trials_desktop.cc |
| index dd1235ac4005f115e8b20adc401d7f913292d6ea..a2a64acf2c56927ba5503a53e7f48a010bffb1e4 100644 |
| --- a/chrome/browser/chrome_browser_field_trials.cc |
| +++ b/chrome/browser/chrome_browser_field_trials_desktop.cc |
| @@ -1,8 +1,8 @@ |
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| +// 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.h" |
| +#include "chrome/browser/chrome_browser_field_trials_desktop.h" |
| #include <string> |
| @@ -12,10 +12,6 @@ |
| #include "base/metrics/field_trial.h" |
| #include "base/prefs/pref_service.h" |
| #include "base/string_util.h" |
| -#include "base/stringprintf.h" |
| -#include "base/strings/string_number_conversions.h" |
| -#include "base/strings/sys_string_conversions.h" |
| -#include "base/utf_string_conversions.h" |
| #include "chrome/browser/auto_launch_trial.h" |
| #include "chrome/browser/google/google_util.h" |
| #include "chrome/browser/gpu/chrome_gpu_util.h" |
| @@ -26,9 +22,7 @@ |
| #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/metrics/variations/uniformity_field_trials.h" |
| #include "chrome/common/metrics/variations/variations_util.h" |
| -#include "chrome/common/pref_names.h" |
| #include "net/spdy/spdy_session.h" |
| #include "ui/base/layout.h" |
| @@ -36,92 +30,11 @@ |
| #include "net/socket/tcp_client_socket_win.h" |
| #endif // defined(OS_WIN) |
| -ChromeBrowserFieldTrials::ChromeBrowserFieldTrials( |
| - const CommandLine& parsed_command_line) |
| - : parsed_command_line_(parsed_command_line) { |
| -} |
| - |
| -ChromeBrowserFieldTrials::~ChromeBrowserFieldTrials() { |
| -} |
| - |
| -void ChromeBrowserFieldTrials::SetupFieldTrials(PrefService* local_state) { |
| - const base::Time install_time = base::Time::FromTimeT( |
| - local_state->GetInt64(prefs::kInstallDate)); |
| - DCHECK(!install_time.is_null()); |
| - chrome_variations::SetupUniformityFieldTrials(install_time); |
| - SetUpSimpleCacheFieldTrial(); |
| -#if !defined(OS_ANDROID) && !defined(OS_IOS) |
| - SetupDesktopFieldTrials(local_state); |
| -#endif // defined(OS_ANDROID) |
| - |
| -#if defined(OS_ANDROID) || defined(OS_IOS) |
| - SetupMobileFieldTrials(); |
| -#endif // defined(OS_ANDROID) || defined(OS_IOS) |
| -} |
| - |
| +namespace chrome { |
| -#if defined(OS_ANDROID) || defined(OS_IOS) |
| -void ChromeBrowserFieldTrials::SetupMobileFieldTrials() { |
| - DataCompressionProxyFieldTrial(); |
| -} |
| - |
| -// Governs the rollout of the compression proxy for Chrome on mobile platforms. |
| -// Always enabled in DEV and BETA versions. |
| -// Stable percentage will be controlled from server. |
| -void ChromeBrowserFieldTrials::DataCompressionProxyFieldTrial() { |
| - const char kDataCompressionProxyFieldTrialName[] = |
| - "DataCompressionProxyRollout"; |
| - const base::FieldTrial::Probability kDataCompressionProxyDivisor = 1000; |
| - |
| - // 10/1000 = 1% for starters. |
| - const base::FieldTrial::Probability kDataCompressionProxyStable = 10; |
| - const char kEnabled[] = "Enabled"; |
| - const char kDisabled[] = "Disabled"; |
| - |
| - // Find out if this is a stable channel. |
| - const bool kIsStableChannel = |
| - chrome::VersionInfo::GetChannel() == chrome::VersionInfo::CHANNEL_STABLE; |
| - |
| - // Experiment enabled until Jan 1, 2015. By default, disabled. |
| - scoped_refptr<base::FieldTrial> trial( |
| - base::FieldTrialList::FactoryGetFieldTrial( |
| - kDataCompressionProxyFieldTrialName, kDataCompressionProxyDivisor, |
| - kDisabled, 2015, 1, 1, NULL)); |
| - |
| - // We want our trial results to be persistent. |
| - trial->UseOneTimeRandomization(); |
| - // Non-stable channels will run with probability 1. |
| - const int kEnabledGroup = trial->AppendGroup( |
| - kEnabled, |
| - kIsStableChannel ? |
| - kDataCompressionProxyStable : kDataCompressionProxyDivisor); |
| - |
| - const int v = trial->group(); |
| - VLOG(1) << "DataCompression proxy enabled group id: " << kEnabledGroup |
| - << ". Selected group id: " << v; |
| -} |
| -#endif // defined(OS_ANDROID) || defined(OS_IOS) |
| - |
| -void ChromeBrowserFieldTrials::SetupDesktopFieldTrials( |
| - PrefService* local_state) { |
| - prerender::ConfigurePrefetchAndPrerender(parsed_command_line_); |
| - SpdyFieldTrial(); |
| - AutoLaunchChromeFieldTrial(); |
| - gpu_util::InitializeCompositingFieldTrial(); |
| - OmniboxFieldTrial::ActivateStaticTrials(); |
| - SetUpInfiniteCacheFieldTrial(); |
| - SetUpCacheSensitivityAnalysisFieldTrial(); |
| - DisableShowProfileSwitcherTrialIfNecessary(); |
| - WindowsOverlappedTCPReadsFieldTrial(); |
| -#if defined(ENABLE_ONE_CLICK_SIGNIN) |
| - OneClickSigninHelper::InitializeFieldTrial(); |
| -#endif |
| - InstantiateDynamicTrials(); |
| - SetupAppLauncherFieldTrial(local_state); |
| -} |
| +namespace { |
| -void ChromeBrowserFieldTrials::SetupAppLauncherFieldTrial( |
| - PrefService* local_state) { |
| +void SetupAppLauncherFieldTrial(PrefService* local_state) { |
| if (base::FieldTrialList::FindFullName(apps::kLauncherPromoTrialName) == |
| apps::kResetShowLauncherPromoPrefGroupName) { |
| local_state->SetBoolean(apps::prefs::kShowAppLauncherPromo, true); |
| @@ -135,7 +48,7 @@ void ChromeBrowserFieldTrials::SetupAppLauncherFieldTrial( |
| // Http is still used for all requests. |
| // default group: no npn or spdy is involved. The "old" non-spdy |
| // chrome behavior. |
| -void ChromeBrowserFieldTrials::SpdyFieldTrial() { |
| +void SpdyFieldTrial() { |
| // Setup SPDY CWND Field trial. |
| const base::FieldTrial::Probability kSpdyCwndDivisor = 100; |
| const base::FieldTrial::Probability kSpdyCwnd16 = 20; // fixed at 16 |
| @@ -155,7 +68,7 @@ void ChromeBrowserFieldTrials::SpdyFieldTrial() { |
| trial->AppendGroup("cwndMin10", kSpdyCwndMin10); |
| } |
| -void ChromeBrowserFieldTrials::AutoLaunchChromeFieldTrial() { |
| +void AutoLaunchChromeFieldTrial() { |
| std::string brand; |
| google_util::GetBrand(&brand); |
| @@ -169,7 +82,7 @@ void ChromeBrowserFieldTrials::AutoLaunchChromeFieldTrial() { |
| } |
| } |
| -void ChromeBrowserFieldTrials::SetUpInfiniteCacheFieldTrial() { |
| +void SetUpInfiniteCacheFieldTrial() { |
| const base::FieldTrial::Probability kDivisor = 100; |
| base::FieldTrial::Probability infinite_cache_probability = 0; |
| @@ -182,7 +95,7 @@ void ChromeBrowserFieldTrials::SetUpInfiniteCacheFieldTrial() { |
| trial->AppendGroup("Control", infinite_cache_probability); |
| } |
| -void ChromeBrowserFieldTrials::DisableShowProfileSwitcherTrialIfNecessary() { |
| +void DisableShowProfileSwitcherTrialIfNecessary() { |
| // This trial is created by the VariationsService, but it needs to be disabled |
| // if multi-profiles isn't enabled or if browser frame avatar menu is |
| // always hidden (Chrome OS). |
| @@ -197,40 +110,7 @@ void ChromeBrowserFieldTrials::DisableShowProfileSwitcherTrialIfNecessary() { |
| } |
| } |
| -// Sets up the experiment. The actual cache backend choice is made in the net/ |
| -// internals by looking at the experiment state. |
| -void ChromeBrowserFieldTrials::SetUpSimpleCacheFieldTrial() { |
| - if (parsed_command_line_.HasSwitch(switches::kUseSimpleCacheBackend)) { |
| - const std::string opt_value = parsed_command_line_.GetSwitchValueASCII( |
| - switches::kUseSimpleCacheBackend); |
| - const base::FieldTrial::Probability kDivisor = 100; |
| - scoped_refptr<base::FieldTrial> trial( |
| - base::FieldTrialList::FactoryGetFieldTrial("SimpleCacheTrial", kDivisor, |
| - "ExperimentNo", 2013, 12, 31, |
| - NULL)); |
| - trial->UseOneTimeRandomization(); |
| - if (LowerCaseEqualsASCII(opt_value, "off")) { |
| - trial->AppendGroup("ExplicitNo", kDivisor); |
| - return; |
| - } |
| - if (LowerCaseEqualsASCII(opt_value, "on")) { |
| - trial->AppendGroup("ExplicitYes", kDivisor); |
| - return; |
| - } |
| -#if defined(OS_ANDROID) |
| - if (LowerCaseEqualsASCII(opt_value, "experiment")) { |
| - // TODO(pasko): Make this the default on Android when the simple cache |
| - // adds a few more necessary features. Also adjust the probability. |
| - const base::FieldTrial::Probability kSimpleCacheProbability = 1; |
| - trial->AppendGroup("ExperimentYes", kSimpleCacheProbability); |
| - trial->AppendGroup("ExperimentControl", kSimpleCacheProbability); |
| - trial->group(); |
| - } |
| -#endif |
| - } |
| -} |
| - |
| -void ChromeBrowserFieldTrials::SetUpCacheSensitivityAnalysisFieldTrial() { |
| +void SetUpCacheSensitivityAnalysisFieldTrial() { |
| const base::FieldTrial::Probability kDivisor = 100; |
| base::FieldTrial::Probability sensitivity_analysis_probability = 0; |
| @@ -264,11 +144,12 @@ void ChromeBrowserFieldTrials::SetUpCacheSensitivityAnalysisFieldTrial() { |
| // TODO(gavinp,rvargas): Re-add 400 group to field trial if results justify. |
| } |
| -void ChromeBrowserFieldTrials::WindowsOverlappedTCPReadsFieldTrial() { |
| +void WindowsOverlappedTCPReadsFieldTrial( |
| + const CommandLine& parsed_command_line) { |
| #if defined(OS_WIN) |
| - if (parsed_command_line_.HasSwitch(switches::kOverlappedRead)) { |
| + if (parsed_command_line.HasSwitch(switches::kOverlappedRead)) { |
| std::string option = |
| - parsed_command_line_.GetSwitchValueASCII(switches::kOverlappedRead); |
| + parsed_command_line.GetSwitchValueASCII(switches::kOverlappedRead); |
| if (LowerCaseEqualsASCII(option, "off")) |
| net::TCPClientSocketWin::DisableOverlappedReads(); |
| } else { |
| @@ -287,7 +168,7 @@ void ChromeBrowserFieldTrials::WindowsOverlappedTCPReadsFieldTrial() { |
| #endif |
| } |
| -void ChromeBrowserFieldTrials::InstantiateDynamicTrials() { |
| +void InstantiateDynamicTrials() { |
| // Call |FindValue()| on the trials below, which may come from the server, to |
| // ensure they get marked as "used" for the purposes of data reporting. |
| base::FieldTrialList::FindValue("UMA-Dynamic-Binary-Uniformity-Trial"); |
| @@ -298,3 +179,27 @@ void ChromeBrowserFieldTrials::InstantiateDynamicTrials() { |
| // Activate the autocomplete dynamic field trials. |
| OmniboxFieldTrial::ActivateDynamicTrials(); |
| } |
| + |
| +} // end namespace |
| + |
|
SteveT
2013/04/19 14:33:49
nit: I think there should be just one line break h
rohitrao (ping after 24h)
2013/04/19 14:42:58
Done.
|
| + |
| +void SetupDesktopFieldTrials(const CommandLine& parsed_command_line, |
| + const base::Time& install_time, |
| + PrefService* local_state) { |
| + prerender::ConfigurePrefetchAndPrerender(parsed_command_line); |
| + SpdyFieldTrial(); |
| + AutoLaunchChromeFieldTrial(); |
| + gpu_util::InitializeCompositingFieldTrial(); |
| + OmniboxFieldTrial::ActivateStaticTrials(); |
| + SetUpInfiniteCacheFieldTrial(); |
| + SetUpCacheSensitivityAnalysisFieldTrial(); |
| + DisableShowProfileSwitcherTrialIfNecessary(); |
| + WindowsOverlappedTCPReadsFieldTrial(parsed_command_line); |
| +#if defined(ENABLE_ONE_CLICK_SIGNIN) |
| + OneClickSigninHelper::InitializeFieldTrial(); |
| +#endif |
| + InstantiateDynamicTrials(); |
| + SetupAppLauncherFieldTrial(local_state); |
| +} |
| + |
| +} // end namespace chrome |