// Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_PREFS_PREF_HASH_STORE_IMPL_H_ #define CHROME_BROWSER_PREFS_PREF_HASH_STORE_IMPL_H_ #include #include "base/compiler_specific.h" #include "base/macros.h" #include "base/memory/scoped_ptr.h" #include "chrome/browser/prefs/pref_hash_calculator.h" #include "chrome/browser/prefs/pref_hash_store.h" class HashStoreContents; class PrefHashStoreTransaction; // Implements PrefHashStoreImpl by storing preference hashes in a // HashStoreContents. class PrefHashStoreImpl : public PrefHashStore { public: enum StoreVersion { // No hashes have been stored in this PrefHashStore yet. VERSION_UNINITIALIZED = 0, // The hashes in this PrefHashStore were stored before the introduction // of a version number and should be re-initialized. VERSION_PRE_MIGRATION = 1, // The hashes in this PrefHashStore were stored using the latest algorithm. VERSION_LATEST = 2, }; // Constructs a PrefHashStoreImpl that calculates hashes using // |seed| and |device_id| and stores them in |contents|. // // The same |seed| and |device_id| must be used to load and validate // previously stored hashes in |contents|. PrefHashStoreImpl(const std::string& seed, const std::string& device_id, bool use_super_mac); virtual ~PrefHashStoreImpl(); // Provides an external HashStoreContents implementation to be used. // BeginTransaction() will ignore |storage| if this is provided. void set_legacy_hash_store_contents( scoped_ptr legacy_hash_store_contents); // Clears the contents of this PrefHashStore. |IsInitialized()| will return // false after this call. void Reset(); // PrefHashStore implementation. virtual scoped_ptr BeginTransaction( scoped_ptr storage) OVERRIDE; private: class PrefHashStoreTransactionImpl; const PrefHashCalculator pref_hash_calculator_; scoped_ptr legacy_hash_store_contents_; bool use_super_mac_; DISALLOW_COPY_AND_ASSIGN(PrefHashStoreImpl); }; #endif // CHROME_BROWSER_PREFS_PREF_HASH_STORE_IMPL_H_