Home | History | Annotate | Download | only in service
      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