OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/prerender/prerender_field_trial.h" | 5 #include "chrome/browser/prerender/prerender_field_trial.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/command_line.h" | |
10 #include "base/logging.h" | 9 #include "base/logging.h" |
11 #include "base/metrics/field_trial.h" | 10 #include "base/metrics/field_trial.h" |
12 #include "chrome/browser/prerender/prerender_manager.h" | 11 #include "chrome/browser/prerender/prerender_manager.h" |
13 #include "chrome/common/chrome_switches.h" | 12 #include "chrome/common/chrome_switches.h" |
| 13 #include "components/variations/variations_associated_data.h" |
14 | 14 |
15 namespace prerender { | 15 namespace prerender { |
16 | 16 |
17 void ConfigurePrerender(const base::CommandLine& command_line) { | 17 // NoStatePrefetch feature modes, to control the PrerenderManager mode using |
| 18 // the base::Feature API and field trials. |
| 19 const char kNoStatePrefetchFeatureModeParameterName[] = "mode"; |
| 20 const char kNoStatePrefetchFeatureModeParameterPrefetch[] = "no_state_prefetch"; |
| 21 const char kNoStatePrefetchFeatureModeParameterPrerender[] = "prerender"; |
| 22 const char kNoStatePrefetchFeatureModeParameterSimpleLoad[] = "simple_load"; |
| 23 |
| 24 const base::Feature kNoStatePrefetchFeature{"NoStatePrefetch", |
| 25 base::FEATURE_ENABLED_BY_DEFAULT}; |
| 26 |
| 27 void ConfigurePrerender() { |
18 PrerenderManager::PrerenderManagerMode mode = | 28 PrerenderManager::PrerenderManagerMode mode = |
19 PrerenderManager::PRERENDER_MODE_ENABLED; | 29 PrerenderManager::PRERENDER_MODE_ENABLED; |
20 if (command_line.HasSwitch(switches::kPrerenderMode)) { | 30 if (!base::FeatureList::IsEnabled(kNoStatePrefetchFeature)) { |
21 const std::string switch_value = | 31 mode = PrerenderManager::PRERENDER_MODE_DISABLED; |
22 command_line.GetSwitchValueASCII(switches::kPrerenderMode); | 32 } else { |
23 | 33 std::string mode_value = variations::GetVariationParamValueByFeature( |
24 if (switch_value == switches::kPrerenderModeSwitchValueDisabled) { | 34 kNoStatePrefetchFeature, kNoStatePrefetchFeatureModeParameterName); |
25 mode = PrerenderManager::PRERENDER_MODE_DISABLED; | 35 if (mode_value == kNoStatePrefetchFeatureModeParameterPrefetch) { |
26 } else if (switch_value == switches::kPrerenderModeSwitchValuePrefetch) { | |
27 mode = PrerenderManager::PRERENDER_MODE_NOSTATE_PREFETCH; | 36 mode = PrerenderManager::PRERENDER_MODE_NOSTATE_PREFETCH; |
28 } else if (switch_value.empty() || | 37 } else if (mode_value.empty() || |
29 switch_value == switches::kPrerenderModeSwitchValueEnabled) { | 38 mode_value == kNoStatePrefetchFeatureModeParameterPrerender) { |
30 // The empty string means the option was provided with no value, and that | 39 // The empty string means the option was provided with no value, and that |
31 // means enable. | 40 // means enable. |
32 mode = PrerenderManager::PRERENDER_MODE_ENABLED; | 41 mode = PrerenderManager::PRERENDER_MODE_ENABLED; |
33 } else if (switch_value == switches::kPrerenderModeSwitchValueSimpleLoad) { | 42 } else if (mode_value == kNoStatePrefetchFeatureModeParameterSimpleLoad) { |
34 mode = PrerenderManager::PRERENDER_MODE_SIMPLE_LOAD_EXPERIMENT; | 43 mode = PrerenderManager::PRERENDER_MODE_SIMPLE_LOAD_EXPERIMENT; |
35 } else { | 44 } else { |
| 45 LOG(ERROR) << "Invalid prerender mode: " << mode_value; |
| 46 LOG(ERROR) << "Disabling prerendering!"; |
36 mode = PrerenderManager::PRERENDER_MODE_DISABLED; | 47 mode = PrerenderManager::PRERENDER_MODE_DISABLED; |
37 LOG(ERROR) << "Invalid --prerender option received on command line: " | |
38 << switch_value; | |
39 LOG(ERROR) << "Disabling prerendering!"; | |
40 } | 48 } |
41 } | 49 } |
42 | 50 |
43 PrerenderManager::SetMode(mode); | 51 PrerenderManager::SetMode(mode); |
44 } | 52 } |
45 | 53 |
46 bool IsOmniboxEnabled(Profile* profile) { | 54 bool IsOmniboxEnabled(Profile* profile) { |
47 if (!profile) | 55 if (!profile) |
48 return false; | 56 return false; |
49 | 57 |
(...skipping 14 matching lines...) Expand all Loading... |
64 return false; | 72 return false; |
65 | 73 |
66 DCHECK_EQ(switches::kPrerenderFromOmniboxSwitchValueAuto, switch_value); | 74 DCHECK_EQ(switches::kPrerenderFromOmniboxSwitchValueAuto, switch_value); |
67 } | 75 } |
68 | 76 |
69 return (base::FieldTrialList::FindFullName("PrerenderFromOmnibox") != | 77 return (base::FieldTrialList::FindFullName("PrerenderFromOmnibox") != |
70 "OmniboxPrerenderDisabled"); | 78 "OmniboxPrerenderDisabled"); |
71 } | 79 } |
72 | 80 |
73 } // namespace prerender | 81 } // namespace prerender |
OLD | NEW |