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

Unified Diff: chrome/browser/extensions/extension_pref_value_map.h

Issue 9764006: Make ExtensionPrefValueMap a ProfileKeyedService. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: includes Created 8 years, 9 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/extensions/extension_pref_value_map.h
diff --git a/chrome/browser/extensions/extension_pref_value_map.h b/chrome/browser/extensions/extension_pref_value_map.h
index 54538e41cdca30b066c582fbd1f5442a41381f62..7f520bf74d49869aaca449a5df75ad96ad1bdd34 100644
--- a/chrome/browser/extensions/extension_pref_value_map.h
+++ b/chrome/browser/extensions/extension_pref_value_map.h
@@ -10,8 +10,11 @@
#include <set>
#include <string>
+#include "base/observer_list.h"
#include "base/time.h"
-#include "chrome/browser/prefs/value_map_pref_store.h"
+#include "base/values.h"
+#include "chrome/browser/prefs/pref_value_map.h"
+#include "chrome/browser/profiles/profile_keyed_service.h"
#include "chrome/browser/extensions/extension_prefs_scope.h"
// Non-persistent data container that is shared by ExtensionPrefStores. All
@@ -43,7 +46,7 @@
// .reg = regular value
// .inc = incognito value
// Extension B has higher precedence than A.
-class ExtensionPrefValueMap {
+class ExtensionPrefValueMap : public ProfileKeyedService {
public:
// Observer interface for monitoring ExtensionPrefValueMap.
class Observer {
@@ -64,6 +67,9 @@ class ExtensionPrefValueMap {
ExtensionPrefValueMap();
virtual ~ExtensionPrefValueMap();
+ // ProfileKeyedService implementation.
+ virtual void Shutdown() OVERRIDE;
+
// Set an extension preference |value| for |key| of extension |ext_id|.
// Takes ownership of |value|.
// Note that regular extension pref values need to be reported to
@@ -163,6 +169,11 @@ class ExtensionPrefValueMap {
// are stored in ExtensionPrefStores.
ExtensionEntryMap entries_;
+ // In normal Profile shutdown, Shutdown() notifies observers that we are
+ // being destroyed. In tests, it isn't called, so the notification must
+ // be done in the destructor. This bit tracks whether it has been done yet.
+ bool destroyed_;
+
ObserverList<Observer, true> observers_;
DISALLOW_COPY_AND_ASSIGN(ExtensionPrefValueMap);

Powered by Google App Engine
This is Rietveld 408576698