blob: 5ed56c66b348b594dfec621f9db782723670c4bb [file] [log] [blame]
Alex Deymoaea4c1c2015-08-19 20:24:43 -07001//
2// Copyright (C) 2012 The Android Open Source Project
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15//
Darin Petkov30030592010-07-27 13:53:20 -070016
Gilad Arnoldcf175a02014-07-10 16:48:47 -070017#ifndef UPDATE_ENGINE_PREFS_H_
18#define UPDATE_ENGINE_PREFS_H_
Darin Petkov30030592010-07-27 13:53:20 -070019
Alex Vakulenkod2779df2014-06-16 13:19:00 -070020#include <string>
21
Alex Vakulenko75039d72014-03-25 12:36:28 -070022#include <base/files/file_path.h>
Darin Petkov30030592010-07-27 13:53:20 -070023#include "gtest/gtest_prod.h" // for FRIEND_TEST
24#include "update_engine/prefs_interface.h"
25
26namespace chromeos_update_engine {
27
28// Implements a preference store by storing the value associated with
29// a key in a separate file named after the key under a preference
30// store directory.
31
32class Prefs : public PrefsInterface {
33 public:
Darin Petkov1cbd78f2010-07-29 12:38:34 -070034 Prefs() {}
35
Darin Petkov30030592010-07-27 13:53:20 -070036 // Initializes the store by associating this object with |prefs_dir|
37 // as the preference store directory. Returns true on success, false
38 // otherwise.
Alex Vakulenko75039d72014-03-25 12:36:28 -070039 bool Init(const base::FilePath& prefs_dir);
Darin Petkov30030592010-07-27 13:53:20 -070040
41 // PrefsInterface methods.
Alex Deymo610277e2014-11-11 21:18:11 -080042 bool GetString(const std::string& key, std::string* value) override;
43 bool SetString(const std::string& key, const std::string& value) override;
44 bool GetInt64(const std::string& key, int64_t* value) override;
45 bool SetInt64(const std::string& key, const int64_t value) override;
46 bool GetBoolean(const std::string& key, bool* value) override;
47 bool SetBoolean(const std::string& key, const bool value) override;
Darin Petkov30030592010-07-27 13:53:20 -070048
Alex Deymo610277e2014-11-11 21:18:11 -080049 bool Exists(const std::string& key) override;
50 bool Delete(const std::string& key) override;
Jay Srinivasan480ddfa2012-06-01 19:15:26 -070051
Darin Petkov30030592010-07-27 13:53:20 -070052 private:
53 FRIEND_TEST(PrefsTest, GetFileNameForKey);
54 FRIEND_TEST(PrefsTest, GetFileNameForKeyBadCharacter);
55 FRIEND_TEST(PrefsTest, GetFileNameForKeyEmpty);
56
57 // Sets |filename| to the full path to the file containing the data
58 // associated with |key|. Returns true on success, false otherwise.
Alex Vakulenko75039d72014-03-25 12:36:28 -070059 bool GetFileNameForKey(const std::string& key, base::FilePath* filename);
Darin Petkov30030592010-07-27 13:53:20 -070060
61 // Preference store directory.
Alex Vakulenko75039d72014-03-25 12:36:28 -070062 base::FilePath prefs_dir_;
Darin Petkov1cbd78f2010-07-29 12:38:34 -070063
64 DISALLOW_COPY_AND_ASSIGN(Prefs);
Darin Petkov30030592010-07-27 13:53:20 -070065};
66
67} // namespace chromeos_update_engine
68
Gilad Arnoldcf175a02014-07-10 16:48:47 -070069#endif // UPDATE_ENGINE_PREFS_H_