15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#ifndef EXTENSIONS_BROWSER_EXTENSION_PREF_STORE_H_
65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#define EXTENSIONS_BROWSER_EXTENSION_PREF_STORE_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string>
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/prefs/value_map_pref_store.h"
115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "extensions/browser/extension_pref_value_map.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// A (non-persistent) PrefStore implementation that holds effective preferences
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// set by extensions. These preferences are managed by and fetched from an
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// ExtensionPrefValueMap.
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ExtensionPrefStore : public ValueMapPrefStore,
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           public ExtensionPrefValueMap::Observer {
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Constructs an ExtensionPrefStore for a regular or an incognito profile.
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ExtensionPrefStore(ExtensionPrefValueMap* extension_pref_value_map,
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     bool incognito_pref_store);
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Overrides for ExtensionPrefValueMap::Observer:
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnInitializationCompleted() OVERRIDE;
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnPrefValueChanged(const std::string& key) OVERRIDE;
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnExtensionPrefValueMapDestruction() OVERRIDE;
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected:
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~ExtensionPrefStore();
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ExtensionPrefValueMap* extension_pref_value_map_;  // Weak pointer.
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool incognito_pref_store_;
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(ExtensionPrefStore);
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif  // EXTENSIONS_BROWSER_EXTENSION_PREF_STORE_H_
39