diff options
author | dominich@chromium.org <dominich@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-20 15:52:22 +0000 |
---|---|---|
committer | dominich@chromium.org <dominich@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-20 15:52:22 +0000 |
commit | 01747e4d5b3ddf8f033536e1cd3c9048bd72a574 (patch) | |
tree | 9235db04276eaaf964f4feb5d0872e84d667882b /chrome/browser/prerender/prerender_field_trial.cc | |
parent | 7713c39fa1e8b7ea064739f19f9d107d33b1160a (diff) | |
download | chromium_src-01747e4d5b3ddf8f033536e1cd3c9048bd72a574.zip chromium_src-01747e4d5b3ddf8f033536e1cd3c9048bd72a574.tar.gz chromium_src-01747e4d5b3ddf8f033536e1cd3c9048bd72a574.tar.bz2 |
Add Field Trial for Prerender From Omnibox.
BUG=95066
TEST=None
Review URL: http://codereview.chromium.org/7825009
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@101963 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/prerender/prerender_field_trial.cc')
-rw-r--r-- | chrome/browser/prerender/prerender_field_trial.cc | 50 |
1 files changed, 48 insertions, 2 deletions
diff --git a/chrome/browser/prerender/prerender_field_trial.cc b/chrome/browser/prerender/prerender_field_trial.cc index 9153eba..ba7184f 100644 --- a/chrome/browser/prerender/prerender_field_trial.cc +++ b/chrome/browser/prerender/prerender_field_trial.cc @@ -8,13 +8,19 @@ #include "base/logging.h" #include "base/metrics/field_trial.h" #include "base/metrics/histogram.h" -#include "content/browser/renderer_host/resource_dispatcher_host.h" +#include "chrome/browser/metrics/metrics_service.h" +#include "chrome/browser/prefs/pref_service.h" #include "chrome/browser/prerender/prerender_manager.h" +#include "chrome/browser/profiles/profile.h" #include "chrome/common/chrome_switches.h" - +#include "content/browser/renderer_host/resource_dispatcher_host.h" namespace prerender { +// If the command line contains the --prerender-from-omnibox switch, enable +// prerendering from the Omnibox. If not, enter the user into a field trial. +void ConfigurePrerenderFromOmnibox(); + void ConfigurePrefetchAndPrerender(const CommandLine& command_line) { enum PrerenderOption { PRERENDER_OPTION_AUTO, @@ -117,6 +123,46 @@ void ConfigurePrefetchAndPrerender(const CommandLine& command_line) { UMA_HISTOGRAM_ENUMERATION("Prerender.Sessions", PrerenderManager::GetMode(), PrerenderManager::PRERENDER_MODE_MAX); + + ConfigurePrerenderFromOmnibox(); +} + +void ConfigurePrerenderFromOmnibox() { + if (!CommandLine::ForCurrentProcess()->HasSwitch( + switches::kPrerenderFromOmnibox)) { + const base::FieldTrial::Probability kDivisor = 100; + const base::FieldTrial::Probability kEnabledProbability = 10; + + scoped_refptr<base::FieldTrial> trial( + new base::FieldTrial("PrerenderFromOmnibox", kDivisor, + "OmniboxPrerenderDisabled", 2012, 8, 30)); + + trial->AppendGroup("OmniboxPrerenderEnabled", kEnabledProbability); + } +} + +bool IsOmniboxEnabled(Profile* profile) { + if (!profile || profile->IsOffTheRecord()) + return false; + + if (!PrerenderManager::IsPrerenderingPossible()) + return false; + + if (CommandLine::ForCurrentProcess()->HasSwitch( + switches::kPrerenderFromOmnibox)) { + return true; + } + + if (!MetricsServiceHelper::IsMetricsReportingEnabled()) + return false; + + const int group = base::FieldTrialList::FindValue("PrerenderFromOmnibox"); + if (group == base::FieldTrial::kNotFinalized || + group == base::FieldTrial::kDefaultGroupNumber) { + return false; + } + + return true; } } // namespace prerender |