Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(671)

Side by Side Diff: chrome/browser/prerender/prerender_field_trial.cc

Issue 2754003006: Prerender: omnibox and instant field trial parameters. (Closed)
Patch Set: browsertest tweaks Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/logging.h" 9 #include "base/logging.h"
10 #include "base/metrics/field_trial.h" 10 #include "base/metrics/field_trial.h"
11 #include "base/metrics/field_trial_params.h"
11 #include "chrome/browser/prerender/prerender_manager.h" 12 #include "chrome/browser/prerender/prerender_manager.h"
12 #include "chrome/common/chrome_switches.h" 13 #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 // NoStatePrefetch feature modes, to control the PrerenderManager mode using 17 // NoStatePrefetch feature parameters, to control the PrerenderManager mode
18 // the base::Feature API and field trials. 18 // using the base::Feature API and field trials.
19
20 // The general prerender mode for most origins.
19 const char kNoStatePrefetchFeatureModeParameterName[] = "mode"; 21 const char kNoStatePrefetchFeatureModeParameterName[] = "mode";
22
23 // Overriden prerender mode origins.
pasko 2017/03/17 17:33:33 maybe s/origins/keys/ would make it more obvious t
mattcary 2017/03/20 10:20:31 Done.
24 const char kNoStatePrefetchFeatureInstantModeParameterName[] = "instant_mode";
25 const char kNoStatePrefetchFeatureOmniboxModeParameterName[] = "omnibox_mode";
26
27 // Mode values.
20 const char kNoStatePrefetchFeatureModeParameterPrefetch[] = "no_state_prefetch"; 28 const char kNoStatePrefetchFeatureModeParameterPrefetch[] = "no_state_prefetch";
21 const char kNoStatePrefetchFeatureModeParameterPrerender[] = "prerender"; 29 const char kNoStatePrefetchFeatureModeParameterPrerender[] = "prerender";
22 const char kNoStatePrefetchFeatureModeParameterSimpleLoad[] = "simple_load"; 30 const char kNoStatePrefetchFeatureModeParameterSimpleLoad[] = "simple_load";
31 const char kNoStatePrefetchFeatureModeParameterDisabled[] = "disabled";
23 32
24 const base::Feature kNoStatePrefetchFeature{"NoStatePrefetch", 33 const base::Feature kNoStatePrefetchFeature{"NoStatePrefetch",
25 base::FEATURE_ENABLED_BY_DEFAULT}; 34 base::FEATURE_ENABLED_BY_DEFAULT};
26 35
27 void ConfigurePrerender() { 36 PrerenderManager::PrerenderManagerMode ParsePrerenderMode(
pasko 2017/03/17 17:33:33 if the function is not used outside this file, it
mattcary 2017/03/20 10:20:31 Done.
28 PrerenderManager::PrerenderManagerMode mode = 37 const char* parameter_name,
29 PrerenderManager::PRERENDER_MODE_ENABLED; 38 PrerenderManager::PrerenderManagerMode default_mode) {
39 PrerenderManager::PrerenderManagerMode mode = default_mode;
30 if (!base::FeatureList::IsEnabled(kNoStatePrefetchFeature)) { 40 if (!base::FeatureList::IsEnabled(kNoStatePrefetchFeature)) {
31 mode = PrerenderManager::PRERENDER_MODE_DISABLED; 41 mode = PrerenderManager::PRERENDER_MODE_DISABLED;
32 } else { 42 } else {
33 std::string mode_value = variations::GetVariationParamValueByFeature( 43 std::string mode_value = base::GetFieldTrialParamValueByFeature(
pasko 2017/03/17 17:33:33 did you change the function solely because of depr
mattcary 2017/03/20 10:20:31 Yup.
34 kNoStatePrefetchFeature, kNoStatePrefetchFeatureModeParameterName); 44 kNoStatePrefetchFeature, parameter_name);
35 if (mode_value == kNoStatePrefetchFeatureModeParameterPrefetch) { 45 if (mode_value.empty()) {
46 mode = default_mode;
47 } else if (mode_value == kNoStatePrefetchFeatureModeParameterPrefetch) {
36 mode = PrerenderManager::PRERENDER_MODE_NOSTATE_PREFETCH; 48 mode = PrerenderManager::PRERENDER_MODE_NOSTATE_PREFETCH;
37 } else if (mode_value.empty() || 49 } else if (mode_value == kNoStatePrefetchFeatureModeParameterPrerender) {
38 mode_value == kNoStatePrefetchFeatureModeParameterPrerender) {
39 // The empty string means the option was provided with no value, and that
40 // means enable.
41 mode = PrerenderManager::PRERENDER_MODE_ENABLED; 50 mode = PrerenderManager::PRERENDER_MODE_ENABLED;
42 } else if (mode_value == kNoStatePrefetchFeatureModeParameterSimpleLoad) { 51 } else if (mode_value == kNoStatePrefetchFeatureModeParameterSimpleLoad) {
43 mode = PrerenderManager::PRERENDER_MODE_SIMPLE_LOAD_EXPERIMENT; 52 mode = PrerenderManager::PRERENDER_MODE_SIMPLE_LOAD_EXPERIMENT;
53 } else if (mode_value == kNoStatePrefetchFeatureModeParameterDisabled) {
54 mode = PrerenderManager::PRERENDER_MODE_DISABLED;
44 } else { 55 } else {
45 LOG(ERROR) << "Invalid prerender mode: " << mode_value; 56 LOG(ERROR) << "Invalid prerender mode: " << mode_value << " for "
46 LOG(ERROR) << "Disabling prerendering!"; 57 << parameter_name;
47 mode = PrerenderManager::PRERENDER_MODE_DISABLED; 58 LOG(ERROR) << "Using default mode " << default_mode << " for "
59 << parameter_name << "!";
60 mode = default_mode;
48 } 61 }
49 } 62 }
63 return mode;
64 }
50 65
51 PrerenderManager::SetMode(mode); 66 void ConfigurePrerender() {
67 PrerenderManager::PrerenderManagerMode overall_mode =
68 ParsePrerenderMode(kNoStatePrefetchFeatureModeParameterName,
69 PrerenderManager::PRERENDER_MODE_ENABLED);
70
71 PrerenderManager::SetMode(overall_mode);
72 PrerenderManager::SetInstantMode(ParsePrerenderMode(
73 kNoStatePrefetchFeatureInstantModeParameterName, overall_mode));
74 PrerenderManager::SetOmniboxMode(ParsePrerenderMode(
75 kNoStatePrefetchFeatureOmniboxModeParameterName, overall_mode));
52 } 76 }
53 77
54 bool IsOmniboxEnabled(Profile* profile) { 78 bool IsOmniboxEnabled(Profile* profile) {
55 if (!profile) 79 if (!profile)
56 return false; 80 return false;
57 81
58 if (!PrerenderManager::IsPrerenderingPossible()) 82 if (!PrerenderManager::IsAnyPrerenderingPossible())
59 return false; 83 return false;
60 84
61 // Override any field trial groups if the user has set a command line flag. 85 // Override any field trial groups if the user has set a command line flag.
62 if (base::CommandLine::ForCurrentProcess()->HasSwitch( 86 if (base::CommandLine::ForCurrentProcess()->HasSwitch(
63 switches::kPrerenderFromOmnibox)) { 87 switches::kPrerenderFromOmnibox)) {
64 const std::string switch_value = 88 const std::string switch_value =
65 base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( 89 base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
66 switches::kPrerenderFromOmnibox); 90 switches::kPrerenderFromOmnibox);
67 91
68 if (switch_value == switches::kPrerenderFromOmniboxSwitchValueEnabled) 92 if (switch_value == switches::kPrerenderFromOmniboxSwitchValueEnabled)
69 return true; 93 return true;
70 94
71 if (switch_value == switches::kPrerenderFromOmniboxSwitchValueDisabled) 95 if (switch_value == switches::kPrerenderFromOmniboxSwitchValueDisabled)
72 return false; 96 return false;
73 97
74 DCHECK_EQ(switches::kPrerenderFromOmniboxSwitchValueAuto, switch_value); 98 DCHECK_EQ(switches::kPrerenderFromOmniboxSwitchValueAuto, switch_value);
75 } 99 }
76 100
77 return (base::FieldTrialList::FindFullName("PrerenderFromOmnibox") != 101 return (base::FieldTrialList::FindFullName("PrerenderFromOmnibox") !=
78 "OmniboxPrerenderDisabled"); 102 "OmniboxPrerenderDisabled");
79 } 103 }
80 104
81 } // namespace prerender 105 } // namespace prerender
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698