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_PREF_SERVICE_HASH_STORE_CONTENTS_H_
      6 #define CHROME_BROWSER_PREFS_TRACKED_PREF_SERVICE_HASH_STORE_CONTENTS_H_
      7 
      8 #include <string>
      9 
     10 #include "base/compiler_specific.h"
     11 #include "base/macros.h"
     12 #include "chrome/browser/prefs/tracked/hash_store_contents.h"
     13 
     14 class PrefRegistrySimple;
     15 class PrefService;
     16 
     17 // Implements HashStoreContents by storing hashes in a PrefService. Multiple
     18 // separate hash stores may coexist in the PrefService by using distinct hash
     19 // store IDs.
     20 // TODO(erikwright): This class is only used to recreate preference state as in
     21 // M35, to test migration behaviour. Remove this class when
     22 // ProfilePrefStoreManagerTest no longer depends on it.
     23 class PrefServiceHashStoreContents : public HashStoreContents {
     24  public:
     25   // Constructs a HashStoreContents that stores hashes in |pref_service|.
     26   // Multiple hash stores can use the same |pref_service| with distinct
     27   // |hash_store_id|s.
     28   //
     29   // |pref_service| must have previously been configured using |RegisterPrefs|.
     30   PrefServiceHashStoreContents(const std::string& hash_store_id,
     31                                PrefService* pref_service);
     32 
     33   // A dictionary pref which maps profile names to dictionary values which hold
     34   // hashes of profile prefs that we track to detect changes that happen outside
     35   // of Chrome.
     36   static const char kProfilePreferenceHashes[];
     37 
     38   // The name of a dict that is stored as a child of
     39   // |prefs::kProfilePreferenceHashes|. Each child node is a string whose name
     40   // is a hash store ID and whose value is the super MAC for the corresponding
     41   // hash store.
     42   static const char kHashOfHashesDict[];
     43 
     44   // The name of a dict that is stored as a child of
     45   // |prefs::kProfilePreferenceHashes|. Each child node is a number whose name
     46   // is a hash store ID and whose value is the version of the corresponding
     47   // hash store.
     48   static const char kStoreVersionsDict[];
     49 
     50   // Registers required preferences.
     51   static void RegisterPrefs(PrefRegistrySimple* registry);
     52 
     53   // Deletes stored hashes for all profiles from |pref_service|.
     54   static void ResetAllPrefHashStores(PrefService* pref_service);
     55 
     56   // HashStoreContents implementation
     57   virtual std::string hash_store_id() const OVERRIDE;
     58   virtual void Reset() OVERRIDE;
     59   virtual bool IsInitialized() const OVERRIDE;
     60   virtual const base::DictionaryValue* GetContents() const OVERRIDE;
     61   virtual scoped_ptr<MutableDictionary> GetMutableContents() OVERRIDE;
     62   virtual std::string GetSuperMac() const OVERRIDE;
     63   virtual void SetSuperMac(const std::string& super_mac) OVERRIDE;
     64 
     65  private:
     66   const std::string hash_store_id_;
     67   PrefService* pref_service_;
     68 
     69   DISALLOW_COPY_AND_ASSIGN(PrefServiceHashStoreContents);
     70 };
     71 
     72 #endif  // CHROME_BROWSER_PREFS_TRACKED_PREF_SERVICE_HASH_STORE_CONTENTS_H_
     73