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

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

Issue 272763002: Make code for the AutomaticProfileResetter more readabile (readability review) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed comments. Created 6 years, 7 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 | 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 // Declares a delegate that interacts with the rest of the browser on behalf of
6 // the AutomaticProfileResetter.
7 //
8 // The reason for this separation is to facilitate unit testing. On one hand,
9 // factoring out the implementation for each interaction step (encapsulated by
10 // one method of the delegate) allows it to be tested in itself, independently.
11 // On the other hand, it also becomes easier to verify that the state machine
Peter Kasting 2014/05/28 18:46:32 "On one/the other hand" implies two arguments that
engedy 2014/05/30 14:38:47 Fixed. Thanks for pointing this out!
12 // inside AutomaticProfileResetter works correctly: by mocking out interaction
13 // methods in the delegate, we can effectively mock out the entire rest of the
14 // browser, allowing us to only simulate the scenarios that are of interest for
15 // testing the state machine.
16 //
17 // The delegate is normally instantiated by AutomaticProfileResetter internally,
18 // while a mock implementation can be injected during unit tests.
19
5 #ifndef CHROME_BROWSER_PROFILE_RESETTER_AUTOMATIC_PROFILE_RESETTER_DELEGATE_H_ 20 #ifndef CHROME_BROWSER_PROFILE_RESETTER_AUTOMATIC_PROFILE_RESETTER_DELEGATE_H_
6 #define CHROME_BROWSER_PROFILE_RESETTER_AUTOMATIC_PROFILE_RESETTER_DELEGATE_H_ 21 #define CHROME_BROWSER_PROFILE_RESETTER_AUTOMATIC_PROFILE_RESETTER_DELEGATE_H_
7 22
8 #include "base/basictypes.h" 23 #include "base/basictypes.h"
9 #include "base/callback_forward.h" 24 #include "base/callback_forward.h"
10 #include "base/memory/scoped_ptr.h" 25 #include "base/memory/scoped_ptr.h"
11 #include "base/memory/weak_ptr.h" 26 #include "base/memory/weak_ptr.h"
12 #include "chrome/browser/profile_resetter/profile_resetter.h" 27 #include "chrome/browser/profile_resetter/profile_resetter.h"
13 #include "chrome/browser/search_engines/template_url_service_observer.h" 28 #include "chrome/browser/search_engines/template_url_service_observer.h"
14 #include "content/public/browser/notification_observer.h" 29 #include "content/public/browser/notification_observer.h"
15 #include "content/public/browser/notification_registrar.h" 30 #include "content/public/browser/notification_registrar.h"
16 #include "extensions/common/one_shot_event.h" 31 #include "extensions/common/one_shot_event.h"
17 32
18 class BrandcodeConfigFetcher; 33 class BrandcodeConfigFetcher;
19 class GlobalErrorService; 34 class GlobalErrorService;
20 class Profile; 35 class Profile;
21 class ResettableSettingsSnapshot; 36 class ResettableSettingsSnapshot;
22 class TemplateURLService; 37 class TemplateURLService;
23 38
24 namespace base { 39 namespace base {
25 class DictionaryValue; 40 class DictionaryValue;
26 class ListValue; 41 class ListValue;
27 } 42 }
28 43
29 // Defines the interface for the delegate that will interact with the rest of 44 // Defines the interface for the delegate that will interact with the rest of
30 // the browser on behalf of the AutomaticProfileResetter. 45 // the browser on behalf of the AutomaticProfileResetter.
31 // The primary reason for this separation is to facilitate unit testing.
32 class AutomaticProfileResetterDelegate { 46 class AutomaticProfileResetterDelegate {
33 public: 47 public:
34 virtual ~AutomaticProfileResetterDelegate() {} 48 virtual ~AutomaticProfileResetterDelegate() {}
35 49
36 // Requests the module enumerator to start scanning for loaded modules now, if 50 // Requests the module enumerator to start scanning for loaded modules now, if
37 // it has not done so already. 51 // it has not done so already.
38 virtual void EnumerateLoadedModulesIfNeeded() = 0; 52 virtual void EnumerateLoadedModulesIfNeeded() = 0;
39 53
40 // Requests |ready_callback| to be posted on the UI thread once the module 54 // Requests |ready_callback| to be posted on the UI thread once the module
41 // enumerator has finished scanning for loaded modules. 55 // enumerator has finished scanning for loaded modules.
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
167 void OnBrandcodedDefaultsFetched(); 181 void OnBrandcodedDefaultsFetched();
168 182
169 // Called back by the ProfileResetter once resetting the profile settings has 183 // Called back by the ProfileResetter once resetting the profile settings has
170 // been completed. If |old_settings_snapshot| is non-NULL, will compare it to 184 // been completed. If |old_settings_snapshot| is non-NULL, will compare it to
171 // the new settings and send the differences to Google for analysis. Finally, 185 // the new settings and send the differences to Google for analysis. Finally,
172 // will post |user_callback|. 186 // will post |user_callback|.
173 void OnProfileSettingsResetCompleted( 187 void OnProfileSettingsResetCompleted(
174 const base::Closure& user_callback, 188 const base::Closure& user_callback,
175 scoped_ptr<ResettableSettingsSnapshot> old_settings_snapshot); 189 scoped_ptr<ResettableSettingsSnapshot> old_settings_snapshot);
176 190
191 // The profile that this delegate operates on.
177 Profile* profile_; 192 Profile* profile_;
193
194 // Shortcuts to |profile_| keyed services, to reduce boilerplate. These may be
195 // NULL in unit tests that do not initialize the respective service(s).
178 GlobalErrorService* global_error_service_; 196 GlobalErrorService* global_error_service_;
179 TemplateURLService* template_url_service_; 197 TemplateURLService* template_url_service_;
180 198
199 // Helper to asynchronously download the default settings for the current
200 // distribution channel (identified by brand code). Instantiated on-demand.
181 scoped_ptr<BrandcodeConfigFetcher> brandcoded_config_fetcher_; 201 scoped_ptr<BrandcodeConfigFetcher> brandcoded_config_fetcher_;
202
203 // Once |brandcoded_defaults_fetched_event_| has fired, this will contain the
204 // brandcoded default settings, or empty settings for a non-branded build.
182 scoped_ptr<BrandcodedDefaultSettings> brandcoded_defaults_; 205 scoped_ptr<BrandcodedDefaultSettings> brandcoded_defaults_;
183 206
207 // Overwritten to avoid resetting aspects that will not work in unit tests.
184 const ProfileResetter::ResettableFlags resettable_aspects_; 208 const ProfileResetter::ResettableFlags resettable_aspects_;
209
210 // The profile resetter to perform the actual reset. Instantiated on-demand.
185 scoped_ptr<ProfileResetter> profile_resetter_; 211 scoped_ptr<ProfileResetter> profile_resetter_;
186 212
213 // Manages registrations/unregistrations for notifications.
187 content::NotificationRegistrar registrar_; 214 content::NotificationRegistrar registrar_;
188 215
189 // The list of modules found. Even when |modules_have_been_enumerated_event_| 216 // The list of modules found. Even when |modules_have_been_enumerated_event_|
190 // is signaled, this may still be NULL. 217 // is signaled, this may still be NULL.
191 scoped_ptr<base::ListValue> module_list_; 218 scoped_ptr<base::ListValue> module_list_;
192 219
193 // This event is signaled once module enumeration has been attempted. If 220 // This event is signaled once module enumeration has been attempted. If
194 // during construction, EnumerateModulesModel can supply a non-empty list of 221 // during construction, EnumerateModulesModel can supply a non-empty list of
195 // modules, module enumeration has clearly already happened, so the event will 222 // modules, module enumeration has clearly already happened, so the event will
196 // be signaled immediately; otherwise, when EnumerateLoadedModulesIfNeeded() 223 // be signaled immediately; otherwise, when EnumerateLoadedModulesIfNeeded()
197 // is called, it will ask the model to scan the modules, and then signal the 224 // is called, it will ask the model to scan the modules, and then signal the
198 // event once this process is completed. 225 // event once this process is completed.
199 extensions::OneShotEvent modules_have_been_enumerated_event_; 226 extensions::OneShotEvent modules_have_been_enumerated_event_;
200 227
201 // This event is signaled once the TemplateURLService has loaded. If the 228 // This event is signaled once the TemplateURLService has loaded. If the
202 // TemplateURLService was already loaded prior to the creation of this class, 229 // TemplateURLService was already loaded prior to the creation of this class,
203 // the event will be signaled during construction. 230 // the event will be signaled during construction.
204 extensions::OneShotEvent template_url_service_ready_event_; 231 extensions::OneShotEvent template_url_service_ready_event_;
205 232
206 // This event is signaled once brandcoded default settings have been fetched, 233 // This event is signaled once brandcoded default settings have been fetched,
207 // or once it has been established that this is not a branded build. 234 // or once it has been established that this is not a branded build.
208 extensions::OneShotEvent brandcoded_defaults_fetched_event_; 235 extensions::OneShotEvent brandcoded_defaults_fetched_event_;
209 236
210 DISALLOW_COPY_AND_ASSIGN(AutomaticProfileResetterDelegateImpl); 237 DISALLOW_COPY_AND_ASSIGN(AutomaticProfileResetterDelegateImpl);
211 }; 238 };
212 239
213 #endif // CHROME_BROWSER_PROFILE_RESETTER_AUTOMATIC_PROFILE_RESETTER_DELEGATE_H _ 240 #endif // CHROME_BROWSER_PROFILE_RESETTER_AUTOMATIC_PROFILE_RESETTER_DELEGATE_H _
241
Peter Kasting 2014/05/28 18:46:32 Nit: Don't add a trailing blank line
engedy 2014/05/30 14:38:47 Done.
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698