| Index: chrome/browser/instant/instant_field_trial.cc
|
| diff --git a/chrome/browser/instant/instant_field_trial.cc b/chrome/browser/instant/instant_field_trial.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..1b0f59a3c23342f42d8a9eb6a4a689cda1440a3b
|
| --- /dev/null
|
| +++ b/chrome/browser/instant/instant_field_trial.cc
|
| @@ -0,0 +1,80 @@
|
| +// Copyright (c) 2011 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/instant/instant_field_trial.h"
|
| +
|
| +#include "base/metrics/field_trial.h"
|
| +#include "chrome/browser/prefs/pref_service.h"
|
| +#include "chrome/browser/profiles/profile.h"
|
| +#include "chrome/common/pref_names.h"
|
| +
|
| +namespace {
|
| +
|
| +const char kTrialId[] = "Instant";
|
| +
|
| +int kControl1 = 0;
|
| +int kControl2 = 0;
|
| +int kExperiment1 = 0;
|
| +int kExperiment2 = 0;
|
| +
|
| +// Returns true if the user is in one of the given groups in the field trial.
|
| +bool IsGroup(Profile* profile, const int group1, const int group2) {
|
| + if (profile->IsOffTheRecord())
|
| + return false;
|
| +
|
| + const PrefService* prefs = profile->GetPrefs();
|
| + if (prefs &&
|
| + (prefs->GetBoolean(prefs::kInstantEnabledOnce) ||
|
| + prefs->IsManagedPreference(prefs::kInstantEnabled))) {
|
| + return false;
|
| + }
|
| +
|
| + const int group = base::FieldTrialList::FindValue(kTrialId);
|
| + return group != base::FieldTrial::kNotFinalized &&
|
| + group != base::FieldTrial::kDefaultGroupNumber &&
|
| + (group == group1 || group == group2);
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| +namespace instant_field_trial {
|
| +
|
| +void Init() {
|
| + scoped_refptr<base::FieldTrial> trial(
|
| + new base::FieldTrial(kTrialId, 1000, "InstantDefault", 2011, 9, 30));
|
| + if (!base::FieldTrialList::IsOneTimeRandomizationEnabled())
|
| + return;
|
| +
|
| + trial->UseOneTimeRandomization();
|
| +
|
| + kControl1 = trial->AppendGroup("InstantControl1", 250);
|
| + kControl2 = trial->AppendGroup("InstantControl2", 250);
|
| + kExperiment1 = trial->AppendGroup("InstantExperiment1", 250);
|
| + kExperiment2 = trial->AppendGroup("InstantExperiment2", 250);
|
| +}
|
| +
|
| +bool IsExperiment(Profile* profile) {
|
| + return IsGroup(profile, kExperiment1, kExperiment2);
|
| +}
|
| +
|
| +bool IsControl(Profile* profile) {
|
| + return IsGroup(profile, kControl1, kControl2);
|
| +}
|
| +
|
| +std::string GetGroupName(Profile* profile) {
|
| + if (profile->IsOffTheRecord())
|
| + return "InstantIncognito";
|
| +
|
| + const PrefService* prefs = profile->GetPrefs();
|
| + if (prefs &&
|
| + (prefs->GetBoolean(prefs::kInstantEnabledOnce) ||
|
| + prefs->IsManagedPreference(prefs::kInstantEnabled))) {
|
| + return prefs->GetBoolean(prefs::kInstantEnabled) ? "InstantEnabled"
|
| + : "InstantDisabled";
|
| + }
|
| +
|
| + return base::FieldTrialList::FindFullName(kTrialId);
|
| +}
|
| +
|
| +} // namespace instant_field_trial
|
|
|