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

Unified 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. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« 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 »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/pref_service.h
diff --git a/chrome/browser/pref_service.h b/chrome/browser/pref_service.h
index 12042976daf2427ce4bec8aad743aeb3f607ddac..90e4004ce7ae3cb2d8fa8103f770e21879bdc7eb 100644
--- a/chrome/browser/pref_service.h
+++ b/chrome/browser/pref_service.h
@@ -9,22 +9,30 @@
#pragma once
#include <set>
+#include <string>
+#include <vector>
#include "base/file_path.h"
#include "base/hash_tables.h"
#include "base/non_thread_safe.h"
#include "base/observer_list.h"
+#include "base/ref_counted.h"
#include "base/scoped_ptr.h"
#include "base/values.h"
#include "chrome/browser/pref_value_store.h"
+#include "chrome/common/notification_observer.h"
+#include "chrome/common/notification_registrar.h"
#include "chrome/common/pref_store.h"
-class NotificationObserver;
+class NotificationDetails;
+class NotificationSource;
+class NotificationType;
class Preference;
class Profile;
class ScopedPrefUpdate;
-class PrefService : public NonThreadSafe {
+class PrefService : public NonThreadSafe,
+ public NotificationObserver {
public:
// A helper class to store all the information associated with a preference.
@@ -254,13 +262,29 @@ class PrefService : public NonThreadSafe {
// This should only be called from the constructor.
void InitFromStorage();
+ // NotificationObserver methods:
+ virtual void Observe(NotificationType type,
+ const NotificationSource& source,
+ const NotificationDetails& details);
+
+ // Called after a policy refresh to notify relevant preference observers.
+ // |changed_prefs_paths| is the vector of preference paths changed by the
+ // policy update. It is passed by value and not reference because
+ // this method is called asynchronously as a callback from another thread.
+ // Copying the vector guarantees that the vector's lifecycle spans the
+ // method's invocation.
+ void FireObserversForRefreshedManagedPrefs(
+ std::vector<std::string> changed_prefs_paths);
+
// The value of a Preference can be:
// managed, user defined, recommended or default.
// The PrefValueStore manages enforced, user defined and recommended values
// for Preferences. It returns the value of a Preference with the
// highest priority, and allows to set user defined values for preferences
// that are not managed.
- scoped_ptr<PrefValueStore> pref_value_store_;
+ scoped_refptr<PrefValueStore> pref_value_store_;
+
+ NotificationRegistrar registrar_;
// A set of all the registered Preference objects.
PreferenceSet prefs_;
« 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
This is Rietveld 408576698