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 14class PrefRegistrySimple; 15class 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. 23class 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