• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2006-2008 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 #include "net/disk_cache/cache_util.h"
6 
7 #include "base/file_util.h"
8 #include "base/logging.h"
9 #include "base/string_util.h"
10 
11 namespace disk_cache {
12 
MoveCache(const FilePath & from_path,const FilePath & to_path)13 bool MoveCache(const FilePath& from_path, const FilePath& to_path) {
14 #if defined(OS_CHROMEOS)
15   // For ChromeOS, we don't actually want to rename the cache
16   // directory, because if we do, then it'll get recreated through the
17   // encrypted filesystem (with encrypted names), and we won't be able
18   // to see these directories anymore in an unmounted encrypted
19   // filesystem, so we just move each item in the cache to a new
20   // directory.
21   if (!file_util::CreateDirectory(to_path)) {
22     LOG(ERROR) << "Unable to create destination cache directory.";
23     return false;
24   }
25   file_util::FileEnumerator iter(
26       from_path,
27       /* recursive */ false,
28       static_cast<file_util::FileEnumerator::FILE_TYPE>(
29           file_util::FileEnumerator::DIRECTORIES |
30           file_util::FileEnumerator::FILES));
31   for (FilePath name = iter.Next(); !name.value().empty(); name = iter.Next()) {
32     FilePath destination = to_path.Append(name.BaseName());
33     if (!file_util::Move(name, destination)) {
34       LOG(ERROR) << "Unable to move cache item.";
35       return false;
36     }
37   }
38   return true;
39 #else
40   return file_util::Move(from_path, to_path);
41 #endif
42 }
43 
DeleteCache(const FilePath & path,bool remove_folder)44 void DeleteCache(const FilePath& path, bool remove_folder) {
45   file_util::FileEnumerator iter(path,
46                                  /* recursive */ false,
47                                  file_util::FileEnumerator::FILES);
48   for (FilePath file = iter.Next(); !file.value().empty(); file = iter.Next()) {
49     if (!file_util::Delete(file, /* recursive */ false)) {
50       LOG(WARNING) << "Unable to delete cache.";
51       return;
52     }
53   }
54 
55   if (remove_folder) {
56     if (!file_util::Delete(path, /* recursive */ false)) {
57       LOG(WARNING) << "Unable to delete cache folder.";
58       return;
59     }
60   }
61 }
62 
DeleteCacheFile(const FilePath & name)63 bool DeleteCacheFile(const FilePath& name) {
64   return file_util::Delete(name, false);
65 }
66 
67 }  // namespace disk_cache
68