1 // Copyright (c) 2012 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 CHROME_SERVICE_SERVICE_PROCESS_PREFS_H_ 6 #define CHROME_SERVICE_SERVICE_PROCESS_PREFS_H_ 7 8 #include <string> 9 10 #include "base/prefs/json_pref_store.h" 11 12 namespace base { 13 class DictionaryValue; 14 class ListValue; 15 class SequencedTaskRunner; 16 } 17 18 // Manages persistent preferences for the service process. This is basically a 19 // thin wrapper around JsonPrefStore for more comfortable use. 20 class ServiceProcessPrefs { 21 public: 22 // |sequenced_task_runner| must be a shutdown-blocking task runner. 23 ServiceProcessPrefs(const base::FilePath& pref_filename, 24 base::SequencedTaskRunner* task_runner); 25 ~ServiceProcessPrefs(); 26 27 // Read preferences from the backing file. 28 void ReadPrefs(); 29 30 // Write the data to the backing file. 31 void WritePrefs(); 32 33 // Returns a string preference for |key|. 34 std::string GetString(const std::string& key, 35 const std::string& default_value) const; 36 37 // Set a string |value| for |key|. 38 void SetString(const std::string& key, const std::string& value); 39 40 // Returns a boolean preference for |key|. 41 bool GetBoolean(const std::string& key, bool default_value) const; 42 43 // Set a boolean |value| for |key|. 44 void SetBoolean(const std::string& key, bool value); 45 46 // Returns an int preference for |key|. 47 int GetInt(const std::string& key, int default_value) const; 48 49 // Set an int |value| for |key|. 50 void SetInt(const std::string& key, int value); 51 52 // Returns a dictionary preference for |key|. 53 const base::DictionaryValue* GetDictionary(const std::string& key) const; 54 55 // Returns a list for |key|. 56 const base::ListValue* GetList(const std::string& key) const; 57 58 // Set a |value| for |key|. 59 void SetValue(const std::string& key, base::Value* value); 60 61 // Removes the pref specified by |key|. 62 void RemovePref(const std::string& key); 63 64 private: 65 scoped_refptr<JsonPrefStore> prefs_; 66 67 DISALLOW_COPY_AND_ASSIGN(ServiceProcessPrefs); 68 }; 69 70 #endif // CHROME_SERVICE_SERVICE_PROCESS_PREFS_H_ 71