Home | History | Annotate | Download | only in tracked
      1 // Copyright 2014 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 CHROME_BROWSER_PREFS_TRACKED_HASH_STORE_CONTENTS_H_
      6 #define CHROME_BROWSER_PREFS_TRACKED_HASH_STORE_CONTENTS_H_
      7 
      8 #include <string>
      9 
     10 #include "base/memory/scoped_ptr.h"
     11 
     12 namespace base {
     13 class DictionaryValue;
     14 } // namespace base
     15 
     16 // Provides access to the contents of a preference hash store. The store
     17 // contains the following data:
     18 // Contents: a client-defined dictionary that should map preference names to
     19 // MACs.
     20 // Version: a client-defined version number for the format of Contents.
     21 // Super MAC: a MAC that authenticates the entirety of Contents.
     22 // Legacy hash stores may have an ID that was incorporated into MAC
     23 // calculations. The ID, if any, is available via |hash_store_id()|.
     24 class HashStoreContents {
     25  public:
     26   // Used to modify a DictionaryValue stored in the preference hash store. The
     27   // MutableDictionary should be destroyed when modifications are complete in
     28   // order to allow them to be committed to the underlying storage.
     29   class MutableDictionary {
     30    public:
     31     virtual ~MutableDictionary() {}
     32     // Returns the DictionaryValue, which will be created if it does not already
     33     // exist.
     34     virtual base::DictionaryValue* operator->() = 0;
     35   };
     36 
     37   virtual ~HashStoreContents() {}
     38 
     39   // Returns the hash-store ID. May be empty.
     40   virtual std::string hash_store_id() const = 0;
     41 
     42   // Discards all data related to this hash store.
     43   virtual void Reset() = 0;
     44 
     45   // Indicates whether any data is currently stored for this hash store.
     46   virtual bool IsInitialized() const = 0;
     47 
     48   // Retrieves the contents of this hash store. May return NULL if the hash
     49   // store has not been initialized.
     50   virtual const base::DictionaryValue* GetContents() const = 0;
     51 
     52   // Provides mutable access to the contents of this hash store.
     53   virtual scoped_ptr<MutableDictionary> GetMutableContents() = 0;
     54 
     55   // Retrieves the super MAC value previously stored by SetSuperMac. May be
     56   // empty if no super MAC has been stored.
     57   virtual std::string GetSuperMac() const = 0;
     58 
     59   // Stores a super MAC value for this hash store.
     60   virtual void SetSuperMac(const std::string& super_mac) = 0;
     61 };
     62 
     63 #endif  // CHROME_BROWSER_PREFS_TRACKED_HASH_STORE_CONTENTS_H_
     64