Home | History | Annotate | Download | only in disk_cache
      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 
     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 
     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 
     63 bool DeleteCacheFile(const FilePath& name) {
     64   return file_util::Delete(name, false);
     65 }
     66 
     67 }  // namespace disk_cache
     68