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

Side by Side Diff: chrome/browser/profile_resetter/automatic_profile_resetter.cc

Issue 61883005: Improved performance of fetching variation parameters in AutomaticProfileResetter. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed compiler warnings about unused code. Created 7 years, 1 month 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/profile_resetter/automatic_profile_resetter.h" 5 #include "chrome/browser/profile_resetter/automatic_profile_resetter.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/memory/ref_counted.h" 10 #include "base/memory/ref_counted.h"
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 50
51 51
52 // Helpers ------------------------------------------------------------------- 52 // Helpers -------------------------------------------------------------------
53 53
54 namespace { 54 namespace {
55 55
56 // Name constants for the field trial behind which we enable this feature. 56 // Name constants for the field trial behind which we enable this feature.
57 const char kAutomaticProfileResetStudyName[] = "AutomaticProfileReset"; 57 const char kAutomaticProfileResetStudyName[] = "AutomaticProfileReset";
58 const char kAutomaticProfileResetStudyDryRunGroupName[] = "DryRun"; 58 const char kAutomaticProfileResetStudyDryRunGroupName[] = "DryRun";
59 const char kAutomaticProfileResetStudyEnabledGroupName[] = "Enabled"; 59 const char kAutomaticProfileResetStudyEnabledGroupName[] = "Enabled";
60 #if defined(GOOGLE_CHROME_BUILD)
60 const char kAutomaticProfileResetStudyProgramParameterName[] = "program"; 61 const char kAutomaticProfileResetStudyProgramParameterName[] = "program";
61 const char kAutomaticProfileResetStudyHashSeedParameterName[] = "hash_seed"; 62 const char kAutomaticProfileResetStudyHashSeedParameterName[] = "hash_seed";
63 #endif
62 64
63 // How long to wait after start-up before unleashing the evaluation flow. 65 // How long to wait after start-up before unleashing the evaluation flow.
64 const int64 kEvaluationFlowDelayInSeconds = 55; 66 const int64 kEvaluationFlowDelayInSeconds = 55;
65 67
66 // Keys used in the input dictionary of the program. 68 // Keys used in the input dictionary of the program.
67 const char kDefaultSearchProviderKey[] = "default_search_provider"; 69 const char kDefaultSearchProviderKey[] = "default_search_provider";
68 const char kDefaultSearchProviderIsUserControlledKey[] = 70 const char kDefaultSearchProviderIsUserControlledKey[] =
69 "default_search_provider_iuc"; 71 "default_search_provider_iuc";
70 const char kLoadedModuleDigestsKey[] = "loaded_modules"; 72 const char kLoadedModuleDigestsKey[] = "loaded_modules";
71 const char kLocalStateKey[] = "local_state"; 73 const char kLocalStateKey[] = "local_state";
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 kAutomaticProfileResetStudyDryRunGroupName, true); 128 kAutomaticProfileResetStudyDryRunGroupName, true);
127 } 129 }
128 130
129 // Returns whether or not a live-run shall be performed. 131 // Returns whether or not a live-run shall be performed.
130 bool ShouldPerformLiveRun() { 132 bool ShouldPerformLiveRun() {
131 return StartsWithASCII( 133 return StartsWithASCII(
132 base::FieldTrialList::FindFullName(kAutomaticProfileResetStudyName), 134 base::FieldTrialList::FindFullName(kAutomaticProfileResetStudyName),
133 kAutomaticProfileResetStudyEnabledGroupName, true); 135 kAutomaticProfileResetStudyEnabledGroupName, true);
134 } 136 }
135 137
136 // Returns whether or not the currently active experiment group prescribes the 138 // If the currently active experiment group prescribes a |program| and
137 // program and hash seed to use instead of the baked-in ones. 139 // |hash_seed| to use instead of the baked-in ones, retrieves those and returns
138 bool DoesExperimentOverrideProgramAndHashSeed() { 140 // true. Otherwise, returns false.
141 bool GetProgramAndHashSeedOverridesFromExperiment(std::string* program,
142 std::string* hash_seed) {
143 DCHECK(program);
144 DCHECK(hash_seed);
139 #if defined(GOOGLE_CHROME_BUILD) 145 #if defined(GOOGLE_CHROME_BUILD)
140 std::map<std::string, std::string> params; 146 std::map<std::string, std::string> params;
141 chrome_variations::GetVariationParams(kAutomaticProfileResetStudyName, 147 chrome_variations::GetVariationParams(kAutomaticProfileResetStudyName,
142 &params); 148 &params);
143 return params.count(kAutomaticProfileResetStudyProgramParameterName) && 149 if (params.count(kAutomaticProfileResetStudyProgramParameterName) &&
144 params.count(kAutomaticProfileResetStudyHashSeedParameterName); 150 params.count(kAutomaticProfileResetStudyHashSeedParameterName)) {
145 #else 151 program->swap(params[kAutomaticProfileResetStudyProgramParameterName]);
152 hash_seed->swap(params[kAutomaticProfileResetStudyHashSeedParameterName]);
153 return true;
154 }
155 #endif
146 return false; 156 return false;
147 #endif
148 } 157 }
149 158
150 // Deep-copies all preferences in |source| to a sub-tree named |value_tree_key| 159 // Deep-copies all preferences in |source| to a sub-tree named |value_tree_key|
151 // in |target_dictionary|, with path expansion, and also creates an isomorphic 160 // in |target_dictionary|, with path expansion, and also creates an isomorphic
152 // sub-tree under the key |is_user_controlled_tree_key| that contains only 161 // sub-tree under the key |is_user_controlled_tree_key| that contains only
153 // Boolean values, indicating whether or not the corresponding preferences are 162 // Boolean values, indicating whether or not the corresponding preferences are
154 // coming from the 'user' PrefStore. 163 // coming from the 'user' PrefStore.
155 void BuildSubTreesFromPreferences(const PrefService* source, 164 void BuildSubTreesFromPreferences(const PrefService* source,
156 const char* value_tree_key, 165 const char* value_tree_key,
157 const char* is_user_controlled_tree_key, 166 const char* is_user_controlled_tree_key,
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
202 211
203 void AutomaticProfileResetter::Initialize() { 212 void AutomaticProfileResetter::Initialize() {
204 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); 213 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
205 DCHECK_EQ(state_, STATE_UNINITIALIZED); 214 DCHECK_EQ(state_, STATE_UNINITIALIZED);
206 215
207 if (!ShouldPerformDryRun() && !ShouldPerformLiveRun()) { 216 if (!ShouldPerformDryRun() && !ShouldPerformLiveRun()) {
208 state_ = STATE_DISABLED; 217 state_ = STATE_DISABLED;
209 return; 218 return;
210 } 219 }
211 220
212 ui::ResourceBundle& resources(ui::ResourceBundle::GetSharedInstance()); 221 if (!GetProgramAndHashSeedOverridesFromExperiment(&program_, &hash_seed_)) {
213 if (DoesExperimentOverrideProgramAndHashSeed()) { 222 ui::ResourceBundle& resources(ui::ResourceBundle::GetSharedInstance());
214 program_ = chrome_variations::GetVariationParamValue( 223 if (ShouldPerformLiveRun()) {
215 kAutomaticProfileResetStudyName, 224 program_ = resources.GetRawDataResource(
216 kAutomaticProfileResetStudyProgramParameterName); 225 IDR_AUTOMATIC_PROFILE_RESET_RULES).as_string();
217 hash_seed_ = chrome_variations::GetVariationParamValue( 226 hash_seed_ = resources.GetRawDataResource(
218 kAutomaticProfileResetStudyName, 227 IDR_AUTOMATIC_PROFILE_RESET_HASH_SEED).as_string();
219 kAutomaticProfileResetStudyHashSeedParameterName); 228 } else { // ShouldPerformDryRun()
220 } else if (ShouldPerformLiveRun()) { 229 program_ = resources.GetRawDataResource(
221 program_ = resources.GetRawDataResource( 230 IDR_AUTOMATIC_PROFILE_RESET_RULES_DRY).as_string();
222 IDR_AUTOMATIC_PROFILE_RESET_RULES).as_string(); 231 hash_seed_ = resources.GetRawDataResource(
223 hash_seed_ = resources.GetRawDataResource( 232 IDR_AUTOMATIC_PROFILE_RESET_HASH_SEED_DRY).as_string();
224 IDR_AUTOMATIC_PROFILE_RESET_HASH_SEED).as_string(); 233 }
225 } else { // ShouldPerformDryRun()
226 program_ = resources.GetRawDataResource(
227 IDR_AUTOMATIC_PROFILE_RESET_RULES_DRY).as_string();
228 hash_seed_ = resources.GetRawDataResource(
229 IDR_AUTOMATIC_PROFILE_RESET_HASH_SEED_DRY).as_string();
230 } 234 }
231 235
232 delegate_.reset(new AutomaticProfileResetterDelegateImpl( 236 delegate_.reset(new AutomaticProfileResetterDelegateImpl(
233 TemplateURLServiceFactory::GetForProfile(profile_))); 237 TemplateURLServiceFactory::GetForProfile(profile_)));
234 task_runner_for_waiting_ = 238 task_runner_for_waiting_ =
235 content::BrowserThread::GetMessageLoopProxyForThread( 239 content::BrowserThread::GetMessageLoopProxyForThread(
236 content::BrowserThread::UI); 240 content::BrowserThread::UI);
237 241
238 state_ = STATE_INITIALIZED; 242 state_ = STATE_INITIALIZED;
239 } 243 }
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after
478 kCombinedStatusMaskMaximumValue); 482 kCombinedStatusMaskMaximumValue);
479 } 483 }
480 484
481 void AutomaticProfileResetter::Shutdown() { 485 void AutomaticProfileResetter::Shutdown() {
482 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); 486 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
483 487
484 state_ = STATE_DISABLED; 488 state_ = STATE_DISABLED;
485 delegate_.reset(); 489 delegate_.reset();
486 weak_ptr_factory_.InvalidateWeakPtrs(); 490 weak_ptr_factory_.InvalidateWeakPtrs();
487 } 491 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698