1 // Copyright 2013 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 NET_DISK_CACHE_SIMPLE_SIMPLE_VERSION_UPGRADE_H_ 6 #define NET_DISK_CACHE_SIMPLE_SIMPLE_VERSION_UPGRADE_H_ 7 8 // Defines functionality to upgrade the file structure of the Simple Cache 9 // Backend on disk. Assumes no backend operations are running simultaneously. 10 // Hence must be run at cache initialization step. 11 12 #include "base/basictypes.h" 13 #include "net/base/net_export.h" 14 15 namespace base { 16 class FilePath; 17 } 18 19 namespace disk_cache { 20 21 // Performs all necessary disk IO to upgrade the cache structure if it is 22 // needed. 23 // 24 // Returns true iff no errors were found during consistency checks and all 25 // necessary transitions succeeded. If this function fails, there is nothing 26 // left to do other than dropping the whole cache directory. 27 NET_EXPORT_PRIVATE bool UpgradeSimpleCacheOnDisk(const base::FilePath& path); 28 29 // The format for the fake index has mistakenly acquired two extra fields that 30 // do not contain any useful data. Since they were equal to zero, they are now 31 // mandatated to be zero. 32 struct NET_EXPORT_PRIVATE FakeIndexData { 33 FakeIndexData(); 34 35 // Must be equal to simplecache_v4::kSimpleInitialMagicNumber. 36 uint64 initial_magic_number; 37 38 // Must be equal kSimpleVersion when the cache backend is instantiated. 39 uint32 version; 40 41 uint32 unused_must_be_zero1; 42 uint32 unused_must_be_zero2; 43 }; 44 45 // Exposed for testing. 46 NET_EXPORT_PRIVATE bool UpgradeIndexV5V6(const base::FilePath& cache_directory); 47 48 } // namespace disk_cache 49 50 #endif // NET_DISK_CACHE_SIMPLE_SIMPLE_VERSION_UPGRADE_H_ 51