1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "chrome/browser/chrome_browser_field_trials.h"
6
7#include <string>
8
9#include "base/command_line.h"
10#include "base/metrics/field_trial.h"
11#include "base/prefs/pref_service.h"
12#include "base/strings/string_util.h"
13#include "base/time/time.h"
14#include "chrome/common/chrome_switches.h"
15#include "chrome/common/chrome_version_info.h"
16#include "chrome/common/variations/uniformity_field_trials.h"
17#include "components/metrics/metrics_pref_names.h"
18#include "components/omnibox/omnibox_field_trial.h"
19
20#if defined(OS_ANDROID) || defined(OS_IOS)
21#include "chrome/browser/chrome_browser_field_trials_mobile.h"
22#else
23#include "chrome/browser/chrome_browser_field_trials_desktop.h"
24#endif
25
26ChromeBrowserFieldTrials::ChromeBrowserFieldTrials(
27    const CommandLine& parsed_command_line)
28    : parsed_command_line_(parsed_command_line) {
29}
30
31ChromeBrowserFieldTrials::~ChromeBrowserFieldTrials() {
32}
33
34void ChromeBrowserFieldTrials::SetupFieldTrials(const base::Time& install_time,
35                                                PrefService* local_state) {
36  DCHECK(!install_time.is_null());
37
38  // Field trials that are shared by all platforms.
39  chrome_variations::SetupUniformityFieldTrials(install_time);
40  InstantiateDynamicTrials();
41
42#if defined(OS_ANDROID) || defined(OS_IOS)
43  chrome::SetupMobileFieldTrials(parsed_command_line_);
44#else
45  chrome::SetupDesktopFieldTrials(
46      parsed_command_line_, local_state);
47#endif
48}
49
50void ChromeBrowserFieldTrials::InstantiateDynamicTrials() {
51  // The following trials are used from renderer process.
52  // Mark here so they will be sync-ed.
53  base::FieldTrialList::FindValue("CLD1VsCLD2");
54  base::FieldTrialList::FindValue("MouseEventPreconnect");
55  base::FieldTrialList::FindValue("UnauthorizedPluginInfoBar");
56  base::FieldTrialList::FindValue("DisplayList2dCanvas");
57  base::FieldTrialList::FindValue("V8ScriptStreaming");
58  // Activate the autocomplete dynamic field trials.
59  OmniboxFieldTrial::ActivateDynamicTrials();
60}
61