Index: rlz/chromeos/lib/rlz_value_store_chromeos.h |
diff --git a/rlz/chromeos/lib/rlz_value_store_chromeos.h b/rlz/chromeos/lib/rlz_value_store_chromeos.h |
index c9456a828e9552f8f8ab33bb3109fdb78bdaee57..476041894e97a38c818cd80da7e3a7d8972862c0 100644 |
--- a/rlz/chromeos/lib/rlz_value_store_chromeos.h |
+++ b/rlz/chromeos/lib/rlz_value_store_chromeos.h |
@@ -5,8 +5,9 @@ |
#ifndef RLZ_CHROMEOS_LIB_RLZ_VALUE_STORE_CHROMEOS_H_ |
#define RLZ_CHROMEOS_LIB_RLZ_VALUE_STORE_CHROMEOS_H_ |
-#include "base/prefs/persistent_pref_store.h" |
+#include "base/file_path.h" |
#include "base/threading/non_thread_safe.h" |
+#include "base/values.h" |
#include "rlz/lib/rlz_value_store.h" |
namespace base { |
@@ -15,28 +16,19 @@ class SequencedTaskRunner; |
class Value; |
} |
-template <typename T> struct DefaultSingletonTraits; |
- |
namespace rlz_lib { |
-// An implementation of RlzValueStore for ChromeOS. Unlike Mac and Win |
-// counterparts, it's non thread-safe and should only be accessed on a single |
-// Thread instance that has a MessageLoop. |
-class RlzValueStoreChromeOS : public RlzValueStore { |
+// An implementation of RlzValueStore for ChromeOS. |
+class RlzValueStoreChromeOS : public RlzValueStore, |
+ public base::NonThreadSafe { |
public: |
- static RlzValueStoreChromeOS* GetInstance(); |
- |
- // Sets the MessageLoopProxy that underlying PersistentPrefStore will post I/O |
- // tasks to. Must be called before the first GetInstance() call. |
- static void SetIOTaskRunner(base::SequencedTaskRunner* io_task_runner); |
- |
- // Must be invoked during shutdown to commit pending I/O. |
- static void Cleanup(); |
+ // // Sets the task runner that will be used by ImportantFileWriter for write |
+ // // operations. |
+ // static void SetFileTaskRunner(base::SequencedTaskRunner* file_task_runner); |
- // Resets the store to its initial state. Should only be used for testing. |
- // Same restrictions as for calling GetInstance() for the first time apply, |
- // i.e. must call SetIOTaskRunner first. |
- static void ResetForTesting(); |
+ // Creates new instance and synchronously reads data from file. |
+ RlzValueStoreChromeOS(const FilePath& store_path); |
+ virtual ~RlzValueStoreChromeOS(); |
// RlzValueStore overrides: |
virtual bool HasAccess(AccessType type) OVERRIDE; |
@@ -68,28 +60,23 @@ class RlzValueStoreChromeOS : public RlzValueStore { |
virtual void CollectGarbage() OVERRIDE; |
private: |
- friend struct DefaultSingletonTraits<RlzValueStoreChromeOS>; |
- |
- // Used by JsonPrefStore for write operations. |
- static base::SequencedTaskRunner* io_task_runner_; |
+ // Reads RLZ store from file. |
+ void ReadStore(); |
- static bool created_; |
+ // Writes RLZ store back to file. |
+ void WriteStore(); |
- RlzValueStoreChromeOS(); |
- virtual ~RlzValueStoreChromeOS(); |
- |
- // Initializes RLZ store. |
- void ReadPrefs(); |
- |
- // Retrieves list at path |list_name| from JSON store. |
- base::ListValue* GetList(std::string list_name); |
// Adds |value| to list at |list_name| path in JSON store. |
bool AddValueToList(std::string list_name, base::Value* value); |
// Removes |value| from list at |list_name| path in JSON store. |
bool RemoveValueFromList(std::string list_name, const base::Value& value); |
- // Store with RLZ data. |
- scoped_refptr<PersistentPrefStore> rlz_store_; |
+ // In-memory store with RLZ data. |
+ scoped_ptr<base::DictionaryValue> rlz_store_; |
+ |
+ FilePath store_path_; |
+ |
+ bool read_only_; |
DISALLOW_COPY_AND_ASSIGN(RlzValueStoreChromeOS); |
}; |