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

Unified 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/profile_resetter/automatic_profile_resetter_delegate.h
diff --git a/chrome/browser/profile_resetter/automatic_profile_resetter_delegate.h b/chrome/browser/profile_resetter/automatic_profile_resetter_delegate.h
index 94c73ccd1778df8f61970d24d1e5ed15efc58f07..54185bc47007d298dffc3238767fd6a8d57f981d 100644
--- a/chrome/browser/profile_resetter/automatic_profile_resetter_delegate.h
+++ b/chrome/browser/profile_resetter/automatic_profile_resetter_delegate.h
@@ -2,6 +2,21 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+// Declares a delegate that interacts with the rest of the browser on behalf of
+// the AutomaticProfileResetter.
+//
+// The reason for this separation is to facilitate unit testing. On one hand,
+// factoring out the implementation for each interaction step (encapsulated by
+// one method of the delegate) allows it to be tested in itself, independently.
+// 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!
+// inside AutomaticProfileResetter works correctly: by mocking out interaction
+// methods in the delegate, we can effectively mock out the entire rest of the
+// browser, allowing us to only simulate the scenarios that are of interest for
+// testing the state machine.
+//
+// The delegate is normally instantiated by AutomaticProfileResetter internally,
+// while a mock implementation can be injected during unit tests.
+
#ifndef CHROME_BROWSER_PROFILE_RESETTER_AUTOMATIC_PROFILE_RESETTER_DELEGATE_H_
#define CHROME_BROWSER_PROFILE_RESETTER_AUTOMATIC_PROFILE_RESETTER_DELEGATE_H_
@@ -28,7 +43,6 @@ class ListValue;
// Defines the interface for the delegate that will interact with the rest of
// the browser on behalf of the AutomaticProfileResetter.
-// The primary reason for this separation is to facilitate unit testing.
class AutomaticProfileResetterDelegate {
public:
virtual ~AutomaticProfileResetterDelegate() {}
@@ -174,16 +188,29 @@ class AutomaticProfileResetterDelegateImpl
const base::Closure& user_callback,
scoped_ptr<ResettableSettingsSnapshot> old_settings_snapshot);
+ // The profile that this delegate operates on.
Profile* profile_;
+
+ // Shortcuts to |profile_| keyed services, to reduce boilerplate. These may be
+ // NULL in unit tests that do not initialize the respective service(s).
GlobalErrorService* global_error_service_;
TemplateURLService* template_url_service_;
+ // Helper to asynchronously download the default settings for the current
+ // distribution channel (identified by brand code). Instantiated on-demand.
scoped_ptr<BrandcodeConfigFetcher> brandcoded_config_fetcher_;
+
+ // Once |brandcoded_defaults_fetched_event_| has fired, this will contain the
+ // brandcoded default settings, or empty settings for a non-branded build.
scoped_ptr<BrandcodedDefaultSettings> brandcoded_defaults_;
+ // Overwritten to avoid resetting aspects that will not work in unit tests.
const ProfileResetter::ResettableFlags resettable_aspects_;
+
+ // The profile resetter to perform the actual reset. Instantiated on-demand.
scoped_ptr<ProfileResetter> profile_resetter_;
+ // Manages registrations/unregistrations for notifications.
content::NotificationRegistrar registrar_;
// The list of modules found. Even when |modules_have_been_enumerated_event_|
@@ -211,3 +238,4 @@ class AutomaticProfileResetterDelegateImpl
};
#endif // CHROME_BROWSER_PROFILE_RESETTER_AUTOMATIC_PROFILE_RESETTER_DELEGATE_H_
+
Peter Kasting 2014/05/28 18:46:32 Nit: Don't add a trailing blank line
engedy 2014/05/30 14:38:47 Done.

Powered by Google App Engine
This is Rietveld 408576698