summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/extension_pref_value_map.h
diff options
context:
space:
mode:
authoryoz@chromium.org <yoz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-04-06 16:26:09 +0000
committeryoz@chromium.org <yoz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-04-06 16:26:09 +0000
commitef9bba156249c4c90d2477d9d0f61b2297538c55 (patch)
treee9dffaf7221803e19136b955062c3920b9916eca /chrome/browser/extensions/extension_pref_value_map.h
parentefdb7e7199b5f4ecae006c437ea2edc6b1c2e758 (diff)
downloadchromium_src-ef9bba156249c4c90d2477d9d0f61b2297538c55.zip
chromium_src-ef9bba156249c4c90d2477d9d0f61b2297538c55.tar.gz
chromium_src-ef9bba156249c4c90d2477d9d0f61b2297538c55.tar.bz2
Make ExtensionPrefValueMap a ProfileKeyedService.
BUG=104095 TEST=no Review URL: http://codereview.chromium.org/9764006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@131136 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/extension_pref_value_map.h')
-rw-r--r--chrome/browser/extensions/extension_pref_value_map.h17
1 files changed, 14 insertions, 3 deletions
diff --git a/chrome/browser/extensions/extension_pref_value_map.h b/chrome/browser/extensions/extension_pref_value_map.h
index 54538e4..2a168ad 100644
--- a/chrome/browser/extensions/extension_pref_value_map.h
+++ b/chrome/browser/extensions/extension_pref_value_map.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 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.
@@ -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);