Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1850)

Unified Diff: chrome/browser/chrome_browser_field_trials_desktop.cc

Issue 14247021: Split the field trial setup code into desktop and mobile files. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Rebased Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 53%
copy from chrome/browser/chrome_browser_field_trials.cc
copy to chrome/browser/chrome_browser_field_trials_desktop.cc
index 700f38df984ee5cac9631094eeaaacec7e642d32..6a005506ea07f858cc509cfe5100656bcbf98fac 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,95 +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) && !defined(OS_IOS)
-
-#if defined(OS_ANDROID) || defined(OS_IOS)
- SetupMobileFieldTrials();
-#endif // defined(OS_ANDROID) || defined(OS_IOS)
-
- InstantiateDynamicTrials();
-}
-
-
-#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;
+namespace chrome {
- // 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
- 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);
@@ -138,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
@@ -158,7 +68,7 @@ void ChromeBrowserFieldTrials::SpdyFieldTrial() {
trial->AppendGroup("cwndMin10", kSpdyCwndMin10);
}
-void ChromeBrowserFieldTrials::AutoLaunchChromeFieldTrial() {
+void AutoLaunchChromeFieldTrial() {
std::string brand;
google_util::GetBrand(&brand);
@@ -172,7 +82,7 @@ void ChromeBrowserFieldTrials::AutoLaunchChromeFieldTrial() {
}
}
-void ChromeBrowserFieldTrials::SetUpInfiniteCacheFieldTrial() {
+void SetUpInfiniteCacheFieldTrial() {
const base::FieldTrial::Probability kDivisor = 100;
base::FieldTrial::Probability infinite_cache_probability = 0;
@@ -185,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).
@@ -200,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;
@@ -267,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 {
@@ -290,14 +168,24 @@ void ChromeBrowserFieldTrials::WindowsOverlappedTCPReadsFieldTrial() {
#endif
}
-void ChromeBrowserFieldTrials::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");
- base::FieldTrialList::FindValue("UMA-Dynamic-Uniformity-Trial");
- base::FieldTrialList::FindValue("InstantDummy");
- base::FieldTrialList::FindValue("InstantChannel");
- base::FieldTrialList::FindValue("Test0PercentDefault");
- // Activate the autocomplete dynamic field trials.
- OmniboxFieldTrial::ActivateDynamicTrials();
+} // namespace
+
+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
+ SetupAppLauncherFieldTrial(local_state);
}
+
+} // namespace chrome

Powered by Google App Engine
This is Rietveld 408576698