1 // Copyright 2011 The Chromium Authors 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_CACHE_UTIL_H_ 6 #define NET_DISK_CACHE_CACHE_UTIL_H_ 7 8 #include <stdint.h> 9 10 #include "base/feature_list.h" 11 #include "base/functional/callback_forward.h" 12 #include "net/base/net_export.h" 13 #include "net/disk_cache/disk_cache.h" 14 15 namespace base { 16 class FilePath; 17 } 18 19 namespace disk_cache { 20 21 // Experiment to increase the cache size to see the impact on various 22 // performance metrics. 23 NET_EXPORT_PRIVATE BASE_DECLARE_FEATURE(kChangeDiskCacheSizeExperiment); 24 25 // Moves the cache files from the given path to another location. 26 // Fails if the destination exists already, or if it doesn't have 27 // permission for the operation. This is basically a rename operation 28 // for the cache directory. Returns true if successful. On ChromeOS, 29 // this moves the cache contents, and leaves the empty cache 30 // directory. 31 NET_EXPORT_PRIVATE bool MoveCache(const base::FilePath& from_path, 32 const base::FilePath& to_path); 33 34 // Deletes the cache files stored on |path|, and optionally also attempts to 35 // delete the folder itself. 36 NET_EXPORT_PRIVATE void DeleteCache(const base::FilePath& path, 37 bool remove_folder); 38 39 // Deletes the given directory recursively, asynchronously. `callback` will 40 // called with whether the operation succeeded. 41 // This is done by: 42 // 1. Renaming the directory to another directory, 43 // 2. Calling `callback` with the result, and 44 // 3. Deleting the directory. 45 // This means the caller won't know the result of 3. 46 NET_EXPORT_PRIVATE void CleanupDirectory( 47 const base::FilePath& path, 48 base::OnceCallback<void(bool)> callback); 49 50 // This runs 1. (see the above comments) synchronously. 51 bool CleanupDirectorySync(const base::FilePath& path); 52 53 // Returns the preferred max cache size given the available disk space and 54 // cache type. 55 NET_EXPORT_PRIVATE int PreferredCacheSize( 56 int64_t available, 57 net::CacheType type = net::DISK_CACHE); 58 59 // The default cache size should not ideally be exposed, but the blockfile 60 // backend uses it for reasons that include testing. 61 NET_EXPORT_PRIVATE extern const int kDefaultCacheSize; 62 63 } // namespace disk_cache 64 65 #endif // NET_DISK_CACHE_CACHE_UTIL_H_ 66