OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef BASE_PREFS_TESTING_PREF_STORE_H_ | 5 // TODO(brettw) remove this forwarding header when prefs is completely moved to |
6 #define BASE_PREFS_TESTING_PREF_STORE_H_ | 6 // components. |
7 | 7 #include "components/prefs/testing_pref_store.h" |
8 #include <stdint.h> | |
9 | |
10 #include <string> | |
11 | |
12 #include "base/compiler_specific.h" | |
13 #include "base/macros.h" | |
14 #include "base/observer_list.h" | |
15 #include "base/prefs/persistent_pref_store.h" | |
16 #include "base/prefs/pref_value_map.h" | |
17 | |
18 // |TestingPrefStore| is a preference store implementation that allows tests to | |
19 // explicitly manipulate the contents of the store, triggering notifications | |
20 // where appropriate. | |
21 class TestingPrefStore : public PersistentPrefStore { | |
22 public: | |
23 TestingPrefStore(); | |
24 | |
25 // Overriden from PrefStore. | |
26 bool GetValue(const std::string& key, | |
27 const base::Value** result) const override; | |
28 void AddObserver(PrefStore::Observer* observer) override; | |
29 void RemoveObserver(PrefStore::Observer* observer) override; | |
30 bool HasObservers() const override; | |
31 bool IsInitializationComplete() const override; | |
32 | |
33 // PersistentPrefStore overrides: | |
34 bool GetMutableValue(const std::string& key, base::Value** result) override; | |
35 void ReportValueChanged(const std::string& key, uint32_t flags) override; | |
36 void SetValue(const std::string& key, | |
37 scoped_ptr<base::Value> value, | |
38 uint32_t flags) override; | |
39 void SetValueSilently(const std::string& key, | |
40 scoped_ptr<base::Value> value, | |
41 uint32_t flags) override; | |
42 void RemoveValue(const std::string& key, uint32_t flags) override; | |
43 bool ReadOnly() const override; | |
44 PrefReadError GetReadError() const override; | |
45 PersistentPrefStore::PrefReadError ReadPrefs() override; | |
46 void ReadPrefsAsync(ReadErrorDelegate* error_delegate) override; | |
47 void CommitPendingWrite() override; | |
48 void SchedulePendingLossyWrites() override; | |
49 | |
50 // Marks the store as having completed initialization. | |
51 void SetInitializationCompleted(); | |
52 | |
53 // Used for tests to trigger notifications explicitly. | |
54 void NotifyPrefValueChanged(const std::string& key); | |
55 void NotifyInitializationCompleted(); | |
56 | |
57 // Some convenience getters/setters. | |
58 void SetString(const std::string& key, const std::string& value); | |
59 void SetInteger(const std::string& key, int value); | |
60 void SetBoolean(const std::string& key, bool value); | |
61 | |
62 bool GetString(const std::string& key, std::string* value) const; | |
63 bool GetInteger(const std::string& key, int* value) const; | |
64 bool GetBoolean(const std::string& key, bool* value) const; | |
65 | |
66 // Determines whether ReadPrefsAsync completes immediately. Defaults to false | |
67 // (non-blocking). To block, invoke this with true (blocking) before the call | |
68 // to ReadPrefsAsync. To unblock, invoke again with false (non-blocking) after | |
69 // the call to ReadPrefsAsync. | |
70 void SetBlockAsyncRead(bool block_async_read); | |
71 | |
72 // Getter and Setter methods for setting and getting the state of the | |
73 // |TestingPrefStore|. | |
74 virtual void set_read_only(bool read_only); | |
75 void set_read_success(bool read_success); | |
76 void set_read_error(PersistentPrefStore::PrefReadError read_error); | |
77 bool committed() { return committed_; } | |
78 | |
79 protected: | |
80 ~TestingPrefStore() override; | |
81 | |
82 private: | |
83 // Stores the preference values. | |
84 PrefValueMap prefs_; | |
85 | |
86 // Flag that indicates if the PrefStore is read-only | |
87 bool read_only_; | |
88 | |
89 // The result to pass to PrefStore::Observer::OnInitializationCompleted | |
90 bool read_success_; | |
91 | |
92 // The result to return from ReadPrefs or ReadPrefsAsync. | |
93 PersistentPrefStore::PrefReadError read_error_; | |
94 | |
95 // Whether a call to ReadPrefsAsync should block. | |
96 bool block_async_read_; | |
97 | |
98 // Whether there is a pending call to ReadPrefsAsync. | |
99 bool pending_async_read_; | |
100 | |
101 // Whether initialization has been completed. | |
102 bool init_complete_; | |
103 | |
104 // Whether the store contents have been committed to disk since the last | |
105 // mutation. | |
106 bool committed_; | |
107 | |
108 scoped_ptr<ReadErrorDelegate> error_delegate_; | |
109 base::ObserverList<PrefStore::Observer, true> observers_; | |
110 | |
111 DISALLOW_COPY_AND_ASSIGN(TestingPrefStore); | |
112 }; | |
113 | |
114 #endif // BASE_PREFS_TESTING_PREF_STORE_H_ | |
OLD | NEW |