15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 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) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef BASE_PREFS_VALUE_MAP_PREF_STORE_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define BASE_PREFS_VALUE_MAP_PREF_STORE_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <map> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/observer_list.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/prefs/base_prefs_export.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/prefs/pref_value_map.h" 155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/prefs/writeable_pref_store.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// A basic PrefStore implementation that uses a simple name-value map for 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// storing the preference values. 195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class BASE_PREFS_EXPORT ValueMapPrefStore : public WriteablePrefStore { 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ValueMapPrefStore(); 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // PrefStore overrides: 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool GetValue(const std::string& key, 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::Value** value) const OVERRIDE; 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void AddObserver(PrefStore::Observer* observer) OVERRIDE; 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void RemoveObserver(PrefStore::Observer* observer) OVERRIDE; 28424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) virtual bool HasObservers() const OVERRIDE; 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // WriteablePrefStore overrides: 315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void SetValue(const std::string& key, base::Value* value) OVERRIDE; 325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void RemoveValue(const std::string& key) OVERRIDE; 33f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual bool GetMutableValue(const std::string& key, 34f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) base::Value** value) OVERRIDE; 35f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual void ReportValueChanged(const std::string& key) OVERRIDE; 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void SetValueSilently(const std::string& key, 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch base::Value* value) OVERRIDE; 385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~ValueMapPrefStore(); 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Notify observers about the initialization completed event. 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void NotifyInitializationCompleted(); 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefValueMap prefs_; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ObserverList<PrefStore::Observer, true> observers_; 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ValueMapPrefStore); 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // BASE_PREFS_VALUE_MAP_PREF_STORE_H_ 54