Chromium Code Reviews

Side by Side Diff: chrome/browser/pref_service.h

Issue 2858060: Changing policy while Chrome is running should refresh preferences without relaunching (Closed)
Patch Set: changed name of mock Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff |
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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_PREF_SERVICE_H_ 7 #ifndef CHROME_BROWSER_PREF_SERVICE_H_
8 #define CHROME_BROWSER_PREF_SERVICE_H_ 8 #define CHROME_BROWSER_PREF_SERVICE_H_
9 #pragma once 9 #pragma once
10 10
11 #include <set> 11 #include <set>
12 #include <string>
13 #include <vector>
12 14
13 #include "base/file_path.h" 15 #include "base/file_path.h"
14 #include "base/hash_tables.h" 16 #include "base/hash_tables.h"
15 #include "base/non_thread_safe.h" 17 #include "base/non_thread_safe.h"
16 #include "base/observer_list.h" 18 #include "base/observer_list.h"
19 #include "base/ref_counted.h"
17 #include "base/scoped_ptr.h" 20 #include "base/scoped_ptr.h"
18 #include "base/values.h" 21 #include "base/values.h"
19 #include "chrome/browser/pref_value_store.h" 22 #include "chrome/browser/pref_value_store.h"
23 #include "chrome/common/notification_observer.h"
24 #include "chrome/common/notification_registrar.h"
20 #include "chrome/common/pref_store.h" 25 #include "chrome/common/pref_store.h"
21 26
22 class NotificationObserver; 27 class NotificationDetails;
28 class NotificationSource;
29 class NotificationType;
23 class Preference; 30 class Preference;
24 class Profile; 31 class Profile;
25 class ScopedPrefUpdate; 32 class ScopedPrefUpdate;
26 33
27 class PrefService : public NonThreadSafe { 34 class PrefService : public NonThreadSafe,
35 public NotificationObserver {
28 public: 36 public:
29 37
30 // A helper class to store all the information associated with a preference. 38 // A helper class to store all the information associated with a preference.
31 class Preference { 39 class Preference {
32 public: 40 public:
33 41
34 // The type of the preference is determined by the type of |default_value|. 42 // The type of the preference is determined by the type of |default_value|.
35 // Therefore, the type needs to be a boolean, integer, real, string, 43 // Therefore, the type needs to be a boolean, integer, real, string,
36 // dictionary (a branch), or list. You shouldn't need to construct this on 44 // dictionary (a branch), or list. You shouldn't need to construct this on
37 // your own, use the PrefService::Register*Pref methods instead. 45 // your own, use the PrefService::Register*Pref methods instead.
(...skipping 209 matching lines...)
247 // deleting the returned object. 255 // deleting the returned object.
248 Value* GetPrefCopy(const wchar_t* pref_name); 256 Value* GetPrefCopy(const wchar_t* pref_name);
249 257
250 // Load from disk. Returns a non-zero error code on failure. 258 // Load from disk. Returns a non-zero error code on failure.
251 PrefStore::PrefReadError LoadPersistentPrefs(); 259 PrefStore::PrefReadError LoadPersistentPrefs();
252 260
253 // Load preferences from storage, attempting to diagnose and handle errors. 261 // Load preferences from storage, attempting to diagnose and handle errors.
254 // This should only be called from the constructor. 262 // This should only be called from the constructor.
255 void InitFromStorage(); 263 void InitFromStorage();
256 264
265 // NotificationObserver methods:
266 virtual void Observe(NotificationType type,
267 const NotificationSource& source,
268 const NotificationDetails& details);
269
270 // Called after a policy refresh to notify relevant preference observers.
271 // |changed_prefs_paths| is the vector of preference paths changed by the
272 // policy update. It is passed by value and not reference because
273 // this method is called asynchronously as a callback from another thread.
274 // Copying the vector guarantees that the vector's lifecycle spans the
275 // method's invocation.
276 void FireObserversForRefreshedManagedPrefs(
277 std::vector<std::string> changed_prefs_paths);
278
257 // The value of a Preference can be: 279 // The value of a Preference can be:
258 // managed, user defined, recommended or default. 280 // managed, user defined, recommended or default.
259 // The PrefValueStore manages enforced, user defined and recommended values 281 // The PrefValueStore manages enforced, user defined and recommended values
260 // for Preferences. It returns the value of a Preference with the 282 // for Preferences. It returns the value of a Preference with the
261 // highest priority, and allows to set user defined values for preferences 283 // highest priority, and allows to set user defined values for preferences
262 // that are not managed. 284 // that are not managed.
263 scoped_ptr<PrefValueStore> pref_value_store_; 285 scoped_refptr<PrefValueStore> pref_value_store_;
286
287 NotificationRegistrar registrar_;
264 288
265 // A set of all the registered Preference objects. 289 // A set of all the registered Preference objects.
266 PreferenceSet prefs_; 290 PreferenceSet prefs_;
267 291
268 // A map from pref names to a list of observers. Observers get fired in the 292 // A map from pref names to a list of observers. Observers get fired in the
269 // order they are added. 293 // order they are added.
270 typedef ObserverList<NotificationObserver> NotificationObserverList; 294 typedef ObserverList<NotificationObserver> NotificationObserverList;
271 typedef base::hash_map<std::wstring, NotificationObserverList*> 295 typedef base::hash_map<std::wstring, NotificationObserverList*>
272 PrefObserverMap; 296 PrefObserverMap;
273 PrefObserverMap pref_observers_; 297 PrefObserverMap pref_observers_;
274 298
275 friend class ScopedPrefUpdate; 299 friend class ScopedPrefUpdate;
276 300
277 DISALLOW_COPY_AND_ASSIGN(PrefService); 301 DISALLOW_COPY_AND_ASSIGN(PrefService);
278 }; 302 };
279 303
280 #endif // CHROME_BROWSER_PREF_SERVICE_H_ 304 #endif // CHROME_BROWSER_PREF_SERVICE_H_
OLDNEW
« no previous file with comments | « chrome/browser/configuration_policy_provider_win_unittest.cc ('k') | chrome/browser/pref_service.cc » ('j') | no next file with comments »

Powered by Google App Engine