xref: /aosp_15_r20/external/cronet/net/disk_cache/cache_util.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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