From ef9bba156249c4c90d2477d9d0f61b2297538c55 Mon Sep 17 00:00:00 2001 From: "yoz@chromium.org" Date: Fri, 6 Apr 2012 16:26:09 +0000 Subject: 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 --- chrome/browser/extensions/extension_pref_value_map.h | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to '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 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 #include +#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 observers_; DISALLOW_COPY_AND_ASSIGN(ExtensionPrefValueMap); -- cgit v1.1