summaryrefslogtreecommitdiffstats
path: root/chrome/browser/prerender/prerender_field_trial.cc
diff options
context:
space:
mode:
authordominich@chromium.org <dominich@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-20 15:52:22 +0000
committerdominich@chromium.org <dominich@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-20 15:52:22 +0000
commit01747e4d5b3ddf8f033536e1cd3c9048bd72a574 (patch)
tree9235db04276eaaf964f4feb5d0872e84d667882b /chrome/browser/prerender/prerender_field_trial.cc
parent7713c39fa1e8b7ea064739f19f9d107d33b1160a (diff)
downloadchromium_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.cc50
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