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 RLZ_CHROMEOS_LIB_RLZ_VALUE_STORE_CHROMEOS_H_ 6 #define RLZ_CHROMEOS_LIB_RLZ_VALUE_STORE_CHROMEOS_H_ 7 8 #include "base/files/file_path.h" 9 #include "base/threading/non_thread_safe.h" 10 #include "base/values.h" 11 #include "rlz/lib/rlz_value_store.h" 12 13 namespace base { 14 class ListValue; 15 class SequencedTaskRunner; 16 class Value; 17 } 18 19 namespace rlz_lib { 20 21 // An implementation of RlzValueStore for ChromeOS. 22 class RlzValueStoreChromeOS : public RlzValueStore, 23 public base::NonThreadSafe { 24 public: 25 // // Sets the task runner that will be used by ImportantFileWriter for write 26 // // operations. 27 // static void SetFileTaskRunner(base::SequencedTaskRunner* file_task_runner); 28 29 // Creates new instance and synchronously reads data from file. 30 RlzValueStoreChromeOS(const base::FilePath& store_path); 31 virtual ~RlzValueStoreChromeOS(); 32 33 // RlzValueStore overrides: 34 virtual bool HasAccess(AccessType type) OVERRIDE; 35 36 virtual bool WritePingTime(Product product, int64 time) OVERRIDE; 37 virtual bool ReadPingTime(Product product, int64* time) OVERRIDE; 38 virtual bool ClearPingTime(Product product) OVERRIDE; 39 40 virtual bool WriteAccessPointRlz(AccessPoint access_point, 41 const char* new_rlz) OVERRIDE; 42 virtual bool ReadAccessPointRlz(AccessPoint access_point, 43 char* rlz, 44 size_t rlz_size) OVERRIDE; 45 virtual bool ClearAccessPointRlz(AccessPoint access_point) OVERRIDE; 46 47 virtual bool AddProductEvent(Product product, const char* event_rlz) OVERRIDE; 48 virtual bool ReadProductEvents(Product product, 49 std::vector<std::string>* events) OVERRIDE; 50 virtual bool ClearProductEvent(Product product, 51 const char* event_rlz) OVERRIDE; 52 virtual bool ClearAllProductEvents(Product product) OVERRIDE; 53 54 virtual bool AddStatefulEvent(Product product, 55 const char* event_rlz) OVERRIDE; 56 virtual bool IsStatefulEvent(Product product, 57 const char* event_rlz) OVERRIDE; 58 virtual bool ClearAllStatefulEvents(Product product) OVERRIDE; 59 60 virtual void CollectGarbage() OVERRIDE; 61 62 private: 63 // Reads RLZ store from file. 64 void ReadStore(); 65 66 // Writes RLZ store back to file. 67 void WriteStore(); 68 69 // Adds |value| to list at |list_name| path in JSON store. 70 bool AddValueToList(std::string list_name, base::Value* value); 71 // Removes |value| from list at |list_name| path in JSON store. 72 bool RemoveValueFromList(std::string list_name, const base::Value& value); 73 74 // In-memory store with RLZ data. 75 scoped_ptr<base::DictionaryValue> rlz_store_; 76 77 base::FilePath store_path_; 78 79 bool read_only_; 80 81 DISALLOW_COPY_AND_ASSIGN(RlzValueStoreChromeOS); 82 }; 83 84 } // namespace rlz_lib 85 86 #endif // RLZ_CHROMEOS_LIB_RLZ_VALUE_STORE_CHROMEOS_H_ 87