Home | History | Annotate | Download | only in browser
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef EXTENSIONS_BROWSER_EXTENSION_PREF_STORE_H_
      6 #define EXTENSIONS_BROWSER_EXTENSION_PREF_STORE_H_
      7 
      8 #include <string>
      9 
     10 #include "base/prefs/value_map_pref_store.h"
     11 #include "extensions/browser/extension_pref_value_map.h"
     12 
     13 // A (non-persistent) PrefStore implementation that holds effective preferences
     14 // set by extensions. These preferences are managed by and fetched from an
     15 // ExtensionPrefValueMap.
     16 class ExtensionPrefStore : public ValueMapPrefStore,
     17                            public ExtensionPrefValueMap::Observer {
     18  public:
     19   // Constructs an ExtensionPrefStore for a regular or an incognito profile.
     20   ExtensionPrefStore(ExtensionPrefValueMap* extension_pref_value_map,
     21                      bool incognito_pref_store);
     22 
     23   // Overrides for ExtensionPrefValueMap::Observer:
     24   virtual void OnInitializationCompleted() OVERRIDE;
     25   virtual void OnPrefValueChanged(const std::string& key) OVERRIDE;
     26   virtual void OnExtensionPrefValueMapDestruction() OVERRIDE;
     27 
     28  protected:
     29   virtual ~ExtensionPrefStore();
     30 
     31  private:
     32   ExtensionPrefValueMap* extension_pref_value_map_;  // Weak pointer.
     33   bool incognito_pref_store_;
     34 
     35   DISALLOW_COPY_AND_ASSIGN(ExtensionPrefStore);
     36 };
     37 
     38 #endif  // EXTENSIONS_BROWSER_EXTENSION_PREF_STORE_H_
     39