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
12namespace base {
13class DictionaryValue;
14class ListValue;
15class SequencedTaskRunner;
16}
17
18// Manages persistent preferences for the service process. This is basically a
19// thin wrapper around JsonPrefStore for more comfortable use.
20class 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