diff options
author | dominich@chromium.org <dominich@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-11 15:37:05 +0000 |
---|---|---|
committer | dominich@chromium.org <dominich@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-11 15:37:05 +0000 |
commit | 778ef7c1f3676eddd768e1cf77026ce5dae9b387 (patch) | |
tree | cb21aa3daa199c685dc9681644dd786a3697e3cc /chrome | |
parent | 61ad28016ad28999fe92c4da9925acc7148f655a (diff) | |
download | chromium_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.grd | 9 | ||||
-rw-r--r-- | chrome/browser/about_flags.cc | 10 | ||||
-rw-r--r-- | chrome/browser/prerender/prerender_browsertest.cc | 4 | ||||
-rw-r--r-- | chrome/browser/prerender/prerender_field_trial.cc | 50 | ||||
-rw-r--r-- | chrome/browser/ui/webui/net_internals_ui_browsertest.cc | 4 | ||||
-rw-r--r-- | chrome/common/chrome_switches.cc | 25 | ||||
-rw-r--r-- | chrome/common/chrome_switches.h | 13 |
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[]; |