| Index: rlz/chromeos/lib/rlz_value_store_chromeos.h
|
| diff --git a/rlz/mac/lib/rlz_value_store_mac.h b/rlz/chromeos/lib/rlz_value_store_chromeos.h
|
| similarity index 44%
|
| copy from rlz/mac/lib/rlz_value_store_mac.h
|
| copy to rlz/chromeos/lib/rlz_value_store_chromeos.h
|
| index b7ffb4e820ebf07657dec1fbf9cb10e10d16a891..245ae0081a8df9d540d52cfa28d1a192abbb31bb 100644
|
| --- a/rlz/mac/lib/rlz_value_store_mac.h
|
| +++ b/rlz/chromeos/lib/rlz_value_store_chromeos.h
|
| @@ -2,22 +2,41 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#ifndef RLZ_MAC_LIB_RLZ_VALUE_STORE_MAC_H_
|
| -#define RLZ_MAC_LIB_RLZ_VALUE_STORE_MAC_H_
|
| +#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/threading/non_thread_safe.h"
|
| #include "rlz/lib/rlz_value_store.h"
|
| -#include "base/compiler_specific.h"
|
| -#include "base/memory/scoped_nsobject.h"
|
|
|
| -@class NSDictionary;
|
| -@class NSMutableDictionary;
|
| +namespace base {
|
| +class ListValue;
|
| +class SequencedTaskRunner;
|
| +class Value;
|
| +}
|
| +
|
| +template <typename T> struct DefaultSingletonTraits;
|
|
|
| namespace rlz_lib {
|
|
|
| -// An implementation of RlzValueStore for mac. It stores information in a
|
| -// plist file in the user's Application Support folder.
|
| -class RlzValueStoreMac : public RlzValueStore {
|
| +// 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,
|
| + 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);
|
| +
|
| + // 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();
|
| +
|
| + // RlzValueStore overrides:
|
| virtual bool HasAccess(AccessType type) OVERRIDE;
|
|
|
| virtual bool WritePingTime(Product product, int64 time) OVERRIDE;
|
| @@ -47,34 +66,32 @@ class RlzValueStoreMac : public RlzValueStore {
|
| virtual void CollectGarbage() OVERRIDE;
|
|
|
| private:
|
| - // |dict| is the dictionary that backs all data. plist_path is the name of the
|
| - // plist file, used solely for implementing HasAccess().
|
| - RlzValueStoreMac(NSMutableDictionary* dict, NSString* plist_path);
|
| - virtual ~RlzValueStoreMac();
|
| - friend class ScopedRlzValueStoreLock;
|
| -
|
| - // Returns the backing dictionary that should be written to disk.
|
| - NSDictionary* dictionary();
|
| -
|
| - // Returns the dictionary to which all data should be written. Usually, this
|
| - // is just |dictionary()|, but if supplementary branding is used, it's a
|
| - // subdirectory at key "brand_<supplementary branding code>".
|
| - // Note that windows stores data at
|
| - // rlz/name (e.g. "pingtime")/supplementalbranding/productcode
|
| - // Mac on the other hand does
|
| - // supplementalbranding/productcode/pingtime.
|
| - NSMutableDictionary* WorkingDict();
|
| -
|
| - // Returns the subdirectory of |WorkingDict()| used to store data for
|
| - // product p.
|
| - NSMutableDictionary* ProductDict(Product p);
|
| -
|
| - scoped_nsobject<NSMutableDictionary> dict_;
|
| - scoped_nsobject<NSString> plist_path_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(RlzValueStoreMac);
|
| + friend struct DefaultSingletonTraits<RlzValueStoreChromeOS>;
|
| +
|
| + // Used by JsonPrefStore for write operations.
|
| + static base::SequencedTaskRunner* io_task_runner_;
|
| +
|
| + static bool created_;
|
| +
|
| + 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_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(RlzValueStoreChromeOS);
|
| };
|
|
|
| } // namespace rlz_lib
|
|
|
| -#endif // RLZ_MAC_LIB_RLZ_VALUE_STORE_MAC_H_
|
| +#endif // RLZ_CHROMEOS_LIB_RLZ_VALUE_STORE_CHROMEOS_H_
|
|
|