Index: chrome/browser/options_page_base.h |
diff --git a/chrome/browser/options_page_base.h b/chrome/browser/options_page_base.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..dd797673c136610b92e72ce88da4328c5193c973 |
--- /dev/null |
+++ b/chrome/browser/options_page_base.h |
@@ -0,0 +1,55 @@ |
+// Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef CHROME_BROWSER_OPTIONS_PAGE_BASE_H_ |
+#define CHROME_BROWSER_OPTIONS_PAGE_BASE_H_ |
+ |
+#include "chrome/browser/options_window.h" |
+#include "chrome/browser/profile.h" |
+#include "chrome/common/notification_observer.h" |
+ |
+class PrefService; |
+ |
+/////////////////////////////////////////////////////////////////////////////// |
+// OptionsPageBase |
+// |
+// A base class for Options dialog pages that handles observing preferences |
+// |
+class OptionsPageBase : public NotificationObserver { |
+ public: |
+ virtual ~OptionsPageBase(); |
+ |
+ // Highlights the specified group to attract the user's attention. |
+ virtual void HighlightGroup(OptionsGroup highlight_group) { } |
+ |
+ // Overridden from NotificationObserver: |
+ virtual void Observe(NotificationType type, |
+ const NotificationSource& source, |
+ const NotificationDetails& details); |
+ |
+ protected: |
+ // This class cannot be instantiated directly, but its constructor must be |
+ // called by derived classes. |
+ explicit OptionsPageBase(Profile* profile); |
+ |
+ // Returns the Profile associated with this page. |
+ Profile* profile() const { return profile_; } |
+ |
+ // Records a user action and schedules the prefs file to be saved. |
+ void UserMetricsRecordAction(const wchar_t* action, PrefService* prefs); |
+ |
+ // Allows the UI to update when a preference value changes. The parameter is |
+ // the specific pref that changed, or NULL if all pref UI should be |
+ // validated. This should be called during setup, but with NULL as the |
+ // parameter to allow initial state to be set. |
+ virtual void NotifyPrefChanged(const std::wstring* pref_name) { } |
+ |
+ private: |
+ // The Profile associated with this page. |
+ Profile* profile_; |
+ |
+ DISALLOW_EVIL_CONSTRUCTORS(OptionsPageBase); |
+}; |
+ |
+#endif // CHROME_BROWSER_OPTIONS_PAGE_BASE_H_ |