cache_util_posix.cc revision a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7
148d4a001b3faaa707716ea6bd93dd98b487768ceBenjamin Franzke// Copyright (c) 2011 The Chromium Authors. All rights reserved. 248d4a001b3faaa707716ea6bd93dd98b487768ceBenjamin Franzke// Use of this source code is governed by a BSD-style license that can be 348d4a001b3faaa707716ea6bd93dd98b487768ceBenjamin Franzke// found in the LICENSE file. 448d4a001b3faaa707716ea6bd93dd98b487768ceBenjamin Franzke 548d4a001b3faaa707716ea6bd93dd98b487768ceBenjamin Franzke#include "net/disk_cache/cache_util.h" 648d4a001b3faaa707716ea6bd93dd98b487768ceBenjamin Franzke 748d4a001b3faaa707716ea6bd93dd98b487768ceBenjamin Franzke#include "base/file_util.h" 848d4a001b3faaa707716ea6bd93dd98b487768ceBenjamin Franzke#include "base/files/file_enumerator.h" 948d4a001b3faaa707716ea6bd93dd98b487768ceBenjamin Franzke#include "base/logging.h" 1048d4a001b3faaa707716ea6bd93dd98b487768ceBenjamin Franzke#include "base/strings/string_util.h" 1148d4a001b3faaa707716ea6bd93dd98b487768ceBenjamin Franzke 1248d4a001b3faaa707716ea6bd93dd98b487768ceBenjamin Franzkenamespace disk_cache { 1348d4a001b3faaa707716ea6bd93dd98b487768ceBenjamin Franzke 1448d4a001b3faaa707716ea6bd93dd98b487768ceBenjamin Franzkebool MoveCache(const base::FilePath& from_path, const base::FilePath& to_path) { 1548d4a001b3faaa707716ea6bd93dd98b487768ceBenjamin Franzke#if defined(OS_CHROMEOS) 1648d4a001b3faaa707716ea6bd93dd98b487768ceBenjamin Franzke // For ChromeOS, we don't actually want to rename the cache 1748d4a001b3faaa707716ea6bd93dd98b487768ceBenjamin Franzke // directory, because if we do, then it'll get recreated through the 1848d4a001b3faaa707716ea6bd93dd98b487768ceBenjamin Franzke // encrypted filesystem (with encrypted names), and we won't be able 1948d4a001b3faaa707716ea6bd93dd98b487768ceBenjamin Franzke // to see these directories anymore in an unmounted encrypted 2048d4a001b3faaa707716ea6bd93dd98b487768ceBenjamin Franzke // filesystem, so we just move each item in the cache to a new 2148d4a001b3faaa707716ea6bd93dd98b487768ceBenjamin Franzke // directory. 2248d4a001b3faaa707716ea6bd93dd98b487768ceBenjamin Franzke if (!base::CreateDirectory(to_path)) { 2348d4a001b3faaa707716ea6bd93dd98b487768ceBenjamin Franzke LOG(ERROR) << "Unable to create destination cache directory."; 2448d4a001b3faaa707716ea6bd93dd98b487768ceBenjamin Franzke return false; 2548d4a001b3faaa707716ea6bd93dd98b487768ceBenjamin Franzke } 2648d4a001b3faaa707716ea6bd93dd98b487768ceBenjamin Franzke base::FileEnumerator iter(from_path, false /* not recursive */, 2748d4a001b3faaa707716ea6bd93dd98b487768ceBenjamin Franzke base::FileEnumerator::DIRECTORIES | base::FileEnumerator::FILES); 2848d4a001b3faaa707716ea6bd93dd98b487768ceBenjamin Franzke for (base::FilePath name = iter.Next(); !name.value().empty(); 2948d4a001b3faaa707716ea6bd93dd98b487768ceBenjamin Franzke name = iter.Next()) { 30b52a0f22813c8e09747ece41173c21f22d4fc369Francisco Jerez base::FilePath destination = to_path.Append(name.BaseName()); 31b52a0f22813c8e09747ece41173c21f22d4fc369Francisco Jerez if (!base::Move(name, destination)) { 32b52a0f22813c8e09747ece41173c21f22d4fc369Francisco Jerez LOG(ERROR) << "Unable to move cache item."; 33b52a0f22813c8e09747ece41173c21f22d4fc369Francisco Jerez return false; 34b52a0f22813c8e09747ece41173c21f22d4fc369Francisco Jerez } 35b52a0f22813c8e09747ece41173c21f22d4fc369Francisco Jerez } 3648d4a001b3faaa707716ea6bd93dd98b487768ceBenjamin Franzke return true; 37b52a0f22813c8e09747ece41173c21f22d4fc369Francisco Jerez#else 38b52a0f22813c8e09747ece41173c21f22d4fc369Francisco Jerez return base::Move(from_path, to_path); 39b52a0f22813c8e09747ece41173c21f22d4fc369Francisco Jerez#endif 40b52a0f22813c8e09747ece41173c21f22d4fc369Francisco Jerez} 41b52a0f22813c8e09747ece41173c21f22d4fc369Francisco Jerez 42b52a0f22813c8e09747ece41173c21f22d4fc369Francisco Jerezbool DeleteCacheFile(const base::FilePath& name) { 43b52a0f22813c8e09747ece41173c21f22d4fc369Francisco Jerez return base::DeleteFile(name, false); 44b52a0f22813c8e09747ece41173c21f22d4fc369Francisco Jerez} 45b52a0f22813c8e09747ece41173c21f22d4fc369Francisco Jerez 4648d4a001b3faaa707716ea6bd93dd98b487768ceBenjamin Franzke} // namespace disk_cache 4748d4a001b3faaa707716ea6bd93dd98b487768ceBenjamin Franzke