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

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

Issue 50883003: Added the ability to specify AutomaticProfileResetter's evaluation program through field trials. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Formatting nit. 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
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 #ifndef CHROME_BROWSER_PROFILE_RESETTER_AUTOMATIC_PROFILE_RESETTER_H_ 5 #ifndef CHROME_BROWSER_PROFILE_RESETTER_AUTOMATIC_PROFILE_RESETTER_H_
6 #define CHROME_BROWSER_PROFILE_RESETTER_AUTOMATIC_PROFILE_RESETTER_H_ 6 #define CHROME_BROWSER_PROFILE_RESETTER_AUTOMATIC_PROFILE_RESETTER_H_
7 7
8 #include <string> 8 #include <string>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 21 matching lines...) Expand all
32 // The service is created automatically with the Profile and is activated right 32 // The service is created automatically with the Profile and is activated right
33 // away by its factory. To avoid delaying start-up, however, it will only start 33 // away by its factory. To avoid delaying start-up, however, it will only start
34 // working after a short delay. 34 // working after a short delay.
35 // All methods in this class shall be called on the UI thread, except when noted 35 // All methods in this class shall be called on the UI thread, except when noted
36 // otherwise. 36 // otherwise.
37 class AutomaticProfileResetter : public BrowserContextKeyedService { 37 class AutomaticProfileResetter : public BrowserContextKeyedService {
38 public: 38 public:
39 explicit AutomaticProfileResetter(Profile* profile); 39 explicit AutomaticProfileResetter(Profile* profile);
40 virtual ~AutomaticProfileResetter(); 40 virtual ~AutomaticProfileResetter();
41 41
42 // Initializes the service if it is enabled in the field trial. Otherwise,
43 // skips the initialization steps, and also permanently disables the service.
44 // Called by AutomaticProfileResetterFactory.
45 void Initialize();
46
42 // Fires up the service by unleashing the asynchronous evaluation flow, unless 47 // Fires up the service by unleashing the asynchronous evaluation flow, unless
43 // the service has been already disabled in Initialize() or there is no 48 // the service has been already disabled in Initialize() or there is no
44 // |program_| to run (in which case the service also gets disabled). 49 // |program_| to run (in which case the service also gets disabled).
45 // Called by the AutomaticProfileResetterFactory. 50 // Called by the AutomaticProfileResetterFactory.
46 void Activate(); 51 void Activate();
47 52
48 // Should be called before Activate(). 53 // Should be called before Activate().
49 void SetHashSeedForTesting(const base::StringPiece& hash_seed); 54 void SetProgramForTesting(const std::string& program);
50 55
51 // Should be called before Activate(). 56 // Should be called before Activate().
52 void SetProgramForTesting(const base::StringPiece& program); 57 void SetHashSeedForTesting(const std::string& hash_seed);
53 58
54 // Should be called before Activate(). 59 // Should be called before Activate().
55 void SetDelegateForTesting( 60 void SetDelegateForTesting(
56 scoped_ptr<AutomaticProfileResetterDelegate> delegate); 61 scoped_ptr<AutomaticProfileResetterDelegate> delegate);
57 62
58 // Should be called before Activate(). Sets the task runner to be used to post 63 // Should be called before Activate(). Sets the task runner to be used to post
59 // task |PrepareEvaluationFlow| in a delayed manner. 64 // task |PrepareEvaluationFlow| in a delayed manner.
60 void SetTaskRunnerForWaitingForTesting( 65 void SetTaskRunnerForWaitingForTesting(
61 const scoped_refptr<base::TaskRunner>& task_runner); 66 const scoped_refptr<base::TaskRunner>& task_runner);
62 67
63 private: 68 private:
64 struct EvaluationResults; 69 struct EvaluationResults;
65 70
66 enum State { 71 enum State {
67 STATE_UNINITIALIZED, 72 STATE_UNINITIALIZED,
68 STATE_INITIALIZED, 73 STATE_INITIALIZED,
69 STATE_DISABLED, 74 STATE_DISABLED,
70 STATE_WAITING_ON_DEPENDENCIES, 75 STATE_WAITING_ON_DEPENDENCIES,
71 STATE_READY, 76 STATE_READY,
72 STATE_WORKING, 77 STATE_WORKING,
73 STATE_DONE 78 STATE_DONE
74 }; 79 };
75 80
76 // Initializes the service if it is enabled in the field trial, otherwise,
77 // skips the initialization steps and also permanently disables the service.
78 void Initialize();
79
80 // Prepares the asynchronous evaluation flow by requesting services that it 81 // Prepares the asynchronous evaluation flow by requesting services that it
81 // depends on to make themselves ready. 82 // depends on to make themselves ready.
82 void PrepareEvaluationFlow(); 83 void PrepareEvaluationFlow();
83 84
84 // Called back by |resetter_delegate_| when the template URL service is ready. 85 // Called back by |resetter_delegate_| when the template URL service is ready.
85 void OnTemplateURLServiceIsLoaded(); 86 void OnTemplateURLServiceIsLoaded();
86 87
87 // Called back by |resetter_delegate_| when the loaded modules have been 88 // Called back by |resetter_delegate_| when the loaded modules have been
88 // enumerated. 89 // enumerated.
89 void OnLoadedModulesAreEnumerated(); 90 void OnLoadedModulesAreEnumerated();
(...skipping 17 matching lines...) Expand all
107 // information and assembling it as the input for the evaluator program. 108 // information and assembling it as the input for the evaluator program.
108 void ContinueWithEvaluationFlow(const std::string& memento_value_in_file); 109 void ContinueWithEvaluationFlow(const std::string& memento_value_in_file);
109 110
110 // Performs the bulk of the work. Invokes the JTL interpreter to run the 111 // Performs the bulk of the work. Invokes the JTL interpreter to run the
111 // |program| that will evaluate whether the conditions are met for showing the 112 // |program| that will evaluate whether the conditions are met for showing the
112 // reset prompt. The program will make this decision based on the state 113 // reset prompt. The program will make this decision based on the state
113 // information contained in |input| in the form of key-value pairs. The 114 // information contained in |input| in the form of key-value pairs. The
114 // program will only see hashed keys and values that are produced using 115 // program will only see hashed keys and values that are produced using
115 // |hash_seed| as a key. 116 // |hash_seed| as a key.
116 static scoped_ptr<EvaluationResults> EvaluateConditionsOnWorkerPoolThread( 117 static scoped_ptr<EvaluationResults> EvaluateConditionsOnWorkerPoolThread(
117 const base::StringPiece& hash_seed, 118 const std::string& hash_seed,
118 const base::StringPiece& program, 119 const std::string& program,
119 scoped_ptr<base::DictionaryValue> program_input); 120 scoped_ptr<base::DictionaryValue> program_input);
120 121
121 // Called back when EvaluateConditionsOnWorkerPoolThread completes executing 122 // Called back when EvaluateConditionsOnWorkerPoolThread completes executing
122 // the program with |results|. Finishes the evaluation flow, and, based on the 123 // the program with |results|. Finishes the evaluation flow, and, based on the
123 // result, will potentially show the reset prompt. 124 // result, will potentially show the reset prompt.
124 void FinishEvaluationFlow(scoped_ptr<EvaluationResults> results); 125 void FinishEvaluationFlow(scoped_ptr<EvaluationResults> results);
125 126
126 // Reports the given metrics through UMA. Virtual, so it can be mocked out in 127 // Reports the given metrics through UMA. Virtual, so it can be mocked out in
127 // tests to verify that the correct value are being reported. 128 // tests to verify that the correct value are being reported.
128 virtual void ReportStatistics(uint32 satisfied_criteria_mask, 129 virtual void ReportStatistics(uint32 satisfied_criteria_mask,
129 uint32 combined_status_mask); 130 uint32 combined_status_mask);
130 131
131 // BrowserContextKeyedService: 132 // BrowserContextKeyedService:
132 virtual void Shutdown() OVERRIDE; 133 virtual void Shutdown() OVERRIDE;
133 134
134 Profile* profile_; 135 Profile* profile_;
135 136
136 State state_; 137 State state_;
137 bool enumeration_of_loaded_modules_ready_; 138 bool enumeration_of_loaded_modules_ready_;
138 bool template_url_service_ready_; 139 bool template_url_service_ready_;
139 140
140 base::StringPiece hash_seed_; 141 std::string hash_seed_;
141 base::StringPiece program_; 142 std::string program_;
142 143
143 PreferenceHostedPromptMemento memento_in_prefs_; 144 PreferenceHostedPromptMemento memento_in_prefs_;
144 LocalStateHostedPromptMemento memento_in_local_state_; 145 LocalStateHostedPromptMemento memento_in_local_state_;
145 FileHostedPromptMemento memento_in_file_; 146 FileHostedPromptMemento memento_in_file_;
146 147
147 scoped_ptr<AutomaticProfileResetterDelegate> delegate_; 148 scoped_ptr<AutomaticProfileResetterDelegate> delegate_;
148 scoped_refptr<base::TaskRunner> task_runner_for_waiting_; 149 scoped_refptr<base::TaskRunner> task_runner_for_waiting_;
149 150
150 base::WeakPtrFactory<AutomaticProfileResetter> weak_ptr_factory_; 151 base::WeakPtrFactory<AutomaticProfileResetter> weak_ptr_factory_;
151 152
152 DISALLOW_COPY_AND_ASSIGN(AutomaticProfileResetter); 153 DISALLOW_COPY_AND_ASSIGN(AutomaticProfileResetter);
153 }; 154 };
154 155
155 #endif // CHROME_BROWSER_PROFILE_RESETTER_AUTOMATIC_PROFILE_RESETTER_H_ 156 #endif // CHROME_BROWSER_PROFILE_RESETTER_AUTOMATIC_PROFILE_RESETTER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698