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 // TODO(brettw) remove this forwarding header when prefs is completely moved to | 5 #ifndef BASE_PREFS_TESTING_PREF_STORE_H_ |
6 // components. | 6 #define BASE_PREFS_TESTING_PREF_STORE_H_ |
7 #include "components/prefs/testing_pref_store.h" | 7 |
| 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 |