| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 // This provides a way to access the application's current preferences. | 5 // This provides a way to access the application's current preferences. |
| 6 | 6 |
| 7 #ifndef CHROME_BROWSER_PREFS_PREF_SERVICE_H_ | 7 #ifndef CHROME_BROWSER_PREFS_PREF_SERVICE_H_ |
| 8 #define CHROME_BROWSER_PREFS_PREF_SERVICE_H_ | 8 #define CHROME_BROWSER_PREFS_PREF_SERVICE_H_ |
| 9 #pragma once | 9 #pragma once |
| 10 | 10 |
| (...skipping 23 matching lines...) Expand all Loading... |
| 34 }; | 34 }; |
| 35 | 35 |
| 36 class PrefService; | 36 class PrefService; |
| 37 | 37 |
| 38 class PrefServiceDelegate { | 38 class PrefServiceDelegate { |
| 39 public: | 39 public: |
| 40 virtual void OnPrefsLoaded(PrefService* prefs, bool success) = 0; | 40 virtual void OnPrefsLoaded(PrefService* prefs, bool success) = 0; |
| 41 }; | 41 }; |
| 42 | 42 |
| 43 class PrefService : public base::NonThreadSafe, | 43 class PrefService : public base::NonThreadSafe, |
| 44 public JsonPrefStore::Delegate { | 44 public PrefStore::Observer { |
| 45 public: | 45 public: |
| 46 // A helper class to store all the information associated with a preference. | 46 // A helper class to store all the information associated with a preference. |
| 47 class Preference { | 47 class Preference { |
| 48 public: | 48 public: |
| 49 | 49 |
| 50 // The type of the preference is determined by the type with which it is | 50 // The type of the preference is determined by the type with which it is |
| 51 // registered. This type needs to be a boolean, integer, double, string, | 51 // registered. This type needs to be a boolean, integer, double, string, |
| 52 // dictionary (a branch), or list. You shouldn't need to construct this on | 52 // dictionary (a branch), or list. You shouldn't need to construct this on |
| 53 // your own; use the PrefService::Register*Pref methods instead. | 53 // your own; use the PrefService::Register*Pref methods instead. |
| 54 Preference(const PrefService* service, | 54 Preference(const PrefService* service, |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 113 std::string name_; | 113 std::string name_; |
| 114 | 114 |
| 115 Value::ValueType type_; | 115 Value::ValueType type_; |
| 116 | 116 |
| 117 // Reference to the PrefService in which this pref was created. | 117 // Reference to the PrefService in which this pref was created. |
| 118 const PrefService* pref_service_; | 118 const PrefService* pref_service_; |
| 119 | 119 |
| 120 DISALLOW_COPY_AND_ASSIGN(Preference); | 120 DISALLOW_COPY_AND_ASSIGN(Preference); |
| 121 }; | 121 }; |
| 122 | 122 |
| 123 // JsonPrefStore::Delegate implementaion. | |
| 124 virtual void OnPrefsRead(PersistentPrefStore::PrefReadError error, | |
| 125 bool no_dir); | |
| 126 | |
| 127 // Factory method that creates a new instance of a PrefService with the | 123 // Factory method that creates a new instance of a PrefService with the |
| 128 // applicable PrefStores. The |pref_filename| points to the user preference | 124 // applicable PrefStores. The |pref_filename| points to the user preference |
| 129 // file. The |profile| is the one to which these preferences apply; it may be | 125 // file. The |profile| is the one to which these preferences apply; it may be |
| 130 // NULL if we're dealing with the local state. This is the usual way to create | 126 // NULL if we're dealing with the local state. This is the usual way to create |
| 131 // a new PrefService. |extension_pref_store| is used as the source for | 127 // a new PrefService. |extension_pref_store| is used as the source for |
| 132 // extension-controlled preferences and may be NULL. The PrefService takes | 128 // extension-controlled preferences and may be NULL. The PrefService takes |
| 133 // ownership of |extension_pref_store|. | 129 // ownership of |extension_pref_store|. |
| 134 static PrefService* CreatePrefService(const FilePath& pref_filename, | 130 static PrefService* CreatePrefService(const FilePath& pref_filename, |
| 135 PrefStore* extension_pref_store, | 131 PrefStore* extension_pref_store, |
| 136 Profile* profile); | 132 Profile* profile); |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 256 PrefService(PrefStore* managed_platform_prefs, | 252 PrefService(PrefStore* managed_platform_prefs, |
| 257 PrefStore* managed_cloud_prefs, | 253 PrefStore* managed_cloud_prefs, |
| 258 PrefStore* extension_prefs, | 254 PrefStore* extension_prefs, |
| 259 PrefStore* command_line_prefs, | 255 PrefStore* command_line_prefs, |
| 260 PersistentPrefStore* user_prefs, | 256 PersistentPrefStore* user_prefs, |
| 261 PrefStore* recommended_platform_prefs, | 257 PrefStore* recommended_platform_prefs, |
| 262 PrefStore* recommended_cloud_prefs, | 258 PrefStore* recommended_cloud_prefs, |
| 263 DefaultPrefStore* default_store, | 259 DefaultPrefStore* default_store, |
| 264 PrefServiceDelegate* delegate); | 260 PrefServiceDelegate* delegate); |
| 265 | 261 |
| 262 // PrefStore::Observer implementation: |
| 263 virtual void OnPrefValueChanged(const std::string&) {} |
| 264 virtual void OnInitializationCompleted(); |
| 265 |
| 266 // The PrefNotifier handles registering and notifying preference observers. | 266 // The PrefNotifier handles registering and notifying preference observers. |
| 267 // It is created and owned by this PrefService. Subclasses may access it for | 267 // It is created and owned by this PrefService. Subclasses may access it for |
| 268 // unit testing. | 268 // unit testing. |
| 269 scoped_ptr<PrefNotifierImpl> pref_notifier_; | 269 scoped_ptr<PrefNotifierImpl> pref_notifier_; |
| 270 | 270 |
| 271 private: | 271 private: |
| 272 class PreferencePathComparator { | 272 class PreferencePathComparator { |
| 273 public: | 273 public: |
| 274 bool operator() (Preference* lhs, Preference* rhs) const { | 274 bool operator() (Preference* lhs, Preference* rhs) const { |
| 275 return lhs->name() < rhs->name(); | 275 return lhs->name() < rhs->name(); |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 344 mutable PreferenceSet prefs_; | 344 mutable PreferenceSet prefs_; |
| 345 | 345 |
| 346 // Holds delegator to be called after initialization, if async version | 346 // Holds delegator to be called after initialization, if async version |
| 347 // is used. | 347 // is used. |
| 348 PrefServiceDelegate* delegate_; | 348 PrefServiceDelegate* delegate_; |
| 349 | 349 |
| 350 DISALLOW_COPY_AND_ASSIGN(PrefService); | 350 DISALLOW_COPY_AND_ASSIGN(PrefService); |
| 351 }; | 351 }; |
| 352 | 352 |
| 353 #endif // CHROME_BROWSER_PREFS_PREF_SERVICE_H_ | 353 #endif // CHROME_BROWSER_PREFS_PREF_SERVICE_H_ |
| OLD | NEW |