summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authordominich@chromium.org <dominich@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-11 15:37:05 +0000
committerdominich@chromium.org <dominich@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-11 15:37:05 +0000
commit778ef7c1f3676eddd768e1cf77026ce5dae9b387 (patch)
treecb21aa3daa199c685dc9681644dd786a3697e3cc /chrome
parent61ad28016ad28999fe92c4da9925acc7148f655a (diff)
downloadchromium_src-778ef7c1f3676eddd768e1cf77026ce5dae9b387.zip
chromium_src-778ef7c1f3676eddd768e1cf77026ce5dae9b387.tar.gz
chromium_src-778ef7c1f3676eddd768e1cf77026ce5dae9b387.tar.bz2
Adding disable option to prerender from omnibox switch.
BUG= TEST= Review URL: http://codereview.chromium.org/8200016 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@104898 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/app/generated_resources.grd9
-rw-r--r--chrome/browser/about_flags.cc10
-rw-r--r--chrome/browser/prerender/prerender_browsertest.cc4
-rw-r--r--chrome/browser/prerender/prerender_field_trial.cc50
-rw-r--r--chrome/browser/ui/webui/net_internals_ui_browsertest.cc4
-rw-r--r--chrome/common/chrome_switches.cc25
-rw-r--r--chrome/common/chrome_switches.h13
7 files changed, 77 insertions, 38 deletions
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
index 4d65aec..ffd709e 100644
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -4597,6 +4597,15 @@ Keep your key file in a safe place. You will need it to create new versions of y
<message name="IDS_FLAGS_PRERENDER_FROM_OMNIBOX_DESCRIPTION" desc="Description for the flag to prerender from the omnibox">
Enables prerendering of suggestions from the Omnibox and predicts appropriate network actions (prerendering, Instant, DNS preconnect) by calculating a confidence value for each Omnibox result.
</message>
+ <message name="IDS_FLAGS_PRERENDER_FROM_OMNIBOX_AUTOMATIC" desc="Option name for automatic selection in the Prerendering from Omnibox lab">
+ Automatic
+ </message>
+ <message name="IDS_FLAGS_PRERENDER_FROM_OMNIBOX_ENABLED" desc="Option name for always enabling Prerendering from the Omnibox">
+ Enabled
+ </message>
+ <message name="IDS_FLAGS_PRERENDER_FROM_OMNIBOX_DISABLED" desc="Option name for always disabling Prerendering from Omnibox">
+ Disabled
+ </message>
<message name="IDS_FLAGS_ENABLE_ADDITIONAL_AUTOFILL_FEEDBACK_NAME" desc="Title for the flag to enable prompts for Autofill feedback">
Send additional Autofill feedback
</message>
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index d07427e..571e8f6 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -45,6 +45,14 @@ const char kMediaPlayerExperimentName[] = "media-player";
const char kAdvancedFileSystemExperimentName[] = "advanced-file-system";
const char kVerticalTabsExperimentName[] = "vertical-tabs";
+const Experiment::Choice kPrerenderFromOmniboxChoices[] = {
+ { IDS_FLAGS_PRERENDER_FROM_OMNIBOX_AUTOMATIC, "", "" },
+ { IDS_FLAGS_PRERENDER_FROM_OMNIBOX_ENABLED, switches::kPrerenderFromOmnibox,
+ switches::kPrerenderFromOmniboxSwitchValueEnabled },
+ { IDS_FLAGS_PRERENDER_FROM_OMNIBOX_DISABLED, switches::kPrerenderFromOmnibox,
+ switches::kPrerenderFromOmniboxSwitchValueDisabled }
+};
+
// RECORDING USER METRICS FOR FLAGS:
// -----------------------------------------------------------------------------
// The first line of the experiment is the internal name. If you'd like to
@@ -327,7 +335,7 @@ const Experiment kExperiments[] = {
IDS_FLAGS_PRERENDER_FROM_OMNIBOX_NAME,
IDS_FLAGS_PRERENDER_FROM_OMNIBOX_DESCRIPTION,
kOsAll,
- SINGLE_VALUE_TYPE(switches::kPrerenderFromOmnibox)
+ MULTI_VALUE_TYPE(kPrerenderFromOmniboxChoices)
},
{
"panels",
diff --git a/chrome/browser/prerender/prerender_browsertest.cc b/chrome/browser/prerender/prerender_browsertest.cc
index 626e9c1..63684d5 100644
--- a/chrome/browser/prerender/prerender_browsertest.cc
+++ b/chrome/browser/prerender/prerender_browsertest.cc
@@ -421,8 +421,8 @@ class PrerenderBrowserTest : public InProcessBrowserTest {
}
virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
- command_line->AppendSwitchASCII(switches::kPrerender,
- switches::kPrerenderSwitchValueEnabled);
+ command_line->AppendSwitchASCII(switches::kPrerenderMode,
+ switches::kPrerenderModeSwitchValueEnabled);
// This is needed to enable click-to-play without triggering a DCHECK.
// It does not actually enable click-to-play.
command_line->AppendSwitchASCII(switches::kEnableClickToPlay, "");
diff --git a/chrome/browser/prerender/prerender_field_trial.cc b/chrome/browser/prerender/prerender_field_trial.cc
index 2402329..f87ad07 100644
--- a/chrome/browser/prerender/prerender_field_trial.cc
+++ b/chrome/browser/prerender/prerender_field_trial.cc
@@ -37,8 +37,6 @@ const char* NameFromOmniboxHeuristic(OmniboxHeuristic heuristic) {
} // end namespace
-// 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) {
@@ -50,20 +48,21 @@ void ConfigurePrefetchAndPrerender(const CommandLine& command_line) {
};
PrerenderOption prerender_option = PRERENDER_OPTION_AUTO;
- if (command_line.HasSwitch(switches::kPrerender)) {
+ if (command_line.HasSwitch(switches::kPrerenderMode)) {
const std::string switch_value =
- command_line.GetSwitchValueASCII(switches::kPrerender);
+ command_line.GetSwitchValueASCII(switches::kPrerenderMode);
- if (switch_value == switches::kPrerenderSwitchValueAuto) {
+ if (switch_value == switches::kPrerenderModeSwitchValueAuto) {
prerender_option = PRERENDER_OPTION_AUTO;
- } else if (switch_value == switches::kPrerenderSwitchValueDisabled) {
+ } else if (switch_value == switches::kPrerenderModeSwitchValueDisabled) {
prerender_option = PRERENDER_OPTION_DISABLED;
} else if (switch_value.empty() ||
- switch_value == switches::kPrerenderSwitchValueEnabled) {
+ switch_value == switches::kPrerenderModeSwitchValueEnabled) {
// The empty string means the option was provided with no value, and that
// means enable.
prerender_option = PRERENDER_OPTION_ENABLED;
- } else if (switch_value == switches::kPrerenderSwitchValuePrefetchOnly) {
+ } else if (switch_value ==
+ switches::kPrerenderModeSwitchValuePrefetchOnly) {
prerender_option = PRERENDER_OPTION_PREFETCH_ONLY;
} else {
prerender_option = PRERENDER_OPTION_DISABLED;
@@ -141,23 +140,22 @@ void ConfigurePrefetchAndPrerender(const CommandLine& command_line) {
void ConfigurePrerenderFromOmnibox() {
// Field trial to see if we're enabled.
const base::FieldTrial::Probability kDivisor = 100;
- if (!CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kPrerenderFromOmnibox)) {
- const base::FieldTrial::Probability kEnabledProbability = 40;
- scoped_refptr<base::FieldTrial> trial(
- new base::FieldTrial("PrerenderFromOmnibox", kDivisor,
- "OmniboxPrerenderDisabled", 2012, 8, 30));
- trial->AppendGroup("OmniboxPrerenderEnabled", kEnabledProbability);
- }
+
+ const base::FieldTrial::Probability kEnabledProbability = 40;
+ scoped_refptr<base::FieldTrial> enabled_trial(
+ new base::FieldTrial("PrerenderFromOmnibox", kDivisor,
+ "OmniboxPrerenderDisabled", 2012, 8, 30));
+ enabled_trial->AppendGroup("OmniboxPrerenderEnabled", kEnabledProbability);
// Field trial to see which heuristic to use.
const base::FieldTrial::Probability kConservativeProbability = 50;
- scoped_refptr<base::FieldTrial> trial(
+ scoped_refptr<base::FieldTrial> heuristic_trial(
new base::FieldTrial("PrerenderFromOmniboxHeuristic", kDivisor,
"OriginalAlgorithm", 2012, 8, 30));
omnibox_original_group_id = base::FieldTrial::kDefaultGroupNumber;
omnibox_conservative_group_id =
- trial->AppendGroup("ConservativeAlgorithm", kConservativeProbability);
+ heuristic_trial->AppendGroup("ConservativeAlgorithm",
+ kConservativeProbability);
}
bool IsOmniboxEnabled(Profile* profile) {
@@ -167,9 +165,21 @@ bool IsOmniboxEnabled(Profile* profile) {
if (!PrerenderManager::IsPrerenderingPossible())
return false;
+ // Override any field trial groups if the user has set a command line flag.
if (CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kPrerenderFromOmnibox))
- return true;
+ switches::kPrerenderFromOmnibox)) {
+ const std::string switch_value =
+ CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
+ switches::kPrerenderFromOmnibox);
+
+ if (switch_value == switches::kPrerenderFromOmniboxSwitchValueEnabled)
+ return true;
+
+ if (switch_value == switches::kPrerenderFromOmniboxSwitchValueDisabled)
+ return false;
+
+ DCHECK(switch_value == switches::kPrerenderFromOmniboxSwitchValueAuto);
+ }
if (!MetricsServiceHelper::IsMetricsReportingEnabled())
return false;
diff --git a/chrome/browser/ui/webui/net_internals_ui_browsertest.cc b/chrome/browser/ui/webui/net_internals_ui_browsertest.cc
index 6cc683b..f3fa3e1 100644
--- a/chrome/browser/ui/webui/net_internals_ui_browsertest.cc
+++ b/chrome/browser/ui/webui/net_internals_ui_browsertest.cc
@@ -97,8 +97,8 @@ NetInternalsTest::~NetInternalsTest() {
void NetInternalsTest::SetUpCommandLine(CommandLine* command_line) {
WebUIBrowserTest::SetUpCommandLine(command_line);
// Needed to test the prerender view.
- command_line->AppendSwitchASCII(switches::kPrerender,
- switches::kPrerenderSwitchValueEnabled);
+ command_line->AppendSwitchASCII(switches::kPrerenderMode,
+ switches::kPrerenderModeSwitchValueEnabled);
}
void NetInternalsTest::SetUpInProcessBrowserTestFixture() {
diff --git a/chrome/common/chrome_switches.cc b/chrome/common/chrome_switches.cc
index 14f5394..7cc1f65 100644
--- a/chrome/common/chrome_switches.cc
+++ b/chrome/common/chrome_switches.cc
@@ -823,22 +823,31 @@ const char kPpapiFlashInProcess[] = "ppapi-flash-in-process";
// Instant for faster searching and browsing" in Preferences -> Basics).
const char kPreloadInstantSearch[] = "preload-instant-search";
-// Controls speculative prerendering of pages, and content prefetching. Both
-// are dispatched from <link rel=prefetch href=...> elements.
-const char kPrerender[] = "prerender";
// Trigger prerendering of pages from suggestions in the omnibox. Only has an
// effect when Instant is either disabled or restricted to search, and when
// prerender is enabled.
const char kPrerenderFromOmnibox[] = "prerender-from-omnibox";
-// These are the values the switch may have, as in "--prerender=auto".
+// These are the values the kPrerenderFromOmnibox switch may have, as in
+// "--prerender-from-omnibox=auto".
+// auto: Allow field trial selection.
+const char kPrerenderFromOmniboxSwitchValueAuto[] = "auto";
+// disabled: No prerendering.
+const char kPrerenderFromOmniboxSwitchValueDisabled[] = "disabled";
+// enabled: Guaranteed prerendering.
+const char kPrerenderFromOmniboxSwitchValueEnabled[] = "enabled";
+// Controls speculative prerendering of pages, and content prefetching. Both
+// are dispatched from <link rel=prefetch href=...> elements.
+const char kPrerenderMode[] = "prerender";
+// These are the values the kPrerenderMode switch may have, as in
+// "--prerender=auto".
// auto: Allow field trial selection in both prerender and prefetch.
-const char kPrerenderSwitchValueAuto[] = "auto";
+const char kPrerenderModeSwitchValueAuto[] = "auto";
// disabled: No prerendering or prefetching.
-const char kPrerenderSwitchValueDisabled[] = "disabled";
+const char kPrerenderModeSwitchValueDisabled[] = "disabled";
// enabled: Both prerendering and prefetching.
-const char kPrerenderSwitchValueEnabled[] = "enabled";
+const char kPrerenderModeSwitchValueEnabled[] = "enabled";
// prefetch_only: No prerendering, but enable prefetching.
-const char kPrerenderSwitchValuePrefetchOnly[] = "prefetch_only";
+const char kPrerenderModeSwitchValuePrefetchOnly[] = "prefetch_only";
// Prints the pages on the screen.
const char kPrint[] = "print";
diff --git a/chrome/common/chrome_switches.h b/chrome/common/chrome_switches.h
index 872136d..e5be0af 100644
--- a/chrome/common/chrome_switches.h
+++ b/chrome/common/chrome_switches.h
@@ -227,12 +227,15 @@ extern const char kPackExtensionKey[];
extern const char kParentProfile[];
extern const char kPpapiFlashInProcess[];
extern const char kPreloadInstantSearch[];
-extern const char kPrerender[];
extern const char kPrerenderFromOmnibox[];
-extern const char kPrerenderSwitchValueAuto[];
-extern const char kPrerenderSwitchValueDisabled[];
-extern const char kPrerenderSwitchValueEnabled[];
-extern const char kPrerenderSwitchValuePrefetchOnly[];
+extern const char kPrerenderFromOmniboxSwitchValueAuto[];
+extern const char kPrerenderFromOmniboxSwitchValueDisabled[];
+extern const char kPrerenderFromOmniboxSwitchValueEnabled[];
+extern const char kPrerenderMode[];
+extern const char kPrerenderModeSwitchValueAuto[];
+extern const char kPrerenderModeSwitchValueDisabled[];
+extern const char kPrerenderModeSwitchValueEnabled[];
+extern const char kPrerenderModeSwitchValuePrefetchOnly[];
extern const char kPrint[];
extern const char kProductVersion[];
extern const char kProfileDirectory[];