Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(817)

Unified Diff: storage/browser/fileapi/sandbox_file_system_backend_delegate.cc

Issue 671873004: Migrates legacy packaged app data when it's upgraded to a platform app (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addresses review comments Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: storage/browser/fileapi/sandbox_file_system_backend_delegate.cc
diff --git a/storage/browser/fileapi/sandbox_file_system_backend_delegate.cc b/storage/browser/fileapi/sandbox_file_system_backend_delegate.cc
index 9fb6b0edb56d2f9e3e9ef50392059a80ea8ea07e..18b1a5eb0848428506ca62b768960b4ccbfb1300 100644
--- a/storage/browser/fileapi/sandbox_file_system_backend_delegate.cc
+++ b/storage/browser/fileapi/sandbox_file_system_backend_delegate.cc
@@ -648,6 +648,36 @@ void SandboxFileSystemBackendDelegate::CollectOpenFileSystemMetrics(
#undef REPORT
}
+void SandboxFileSystemBackendDelegate::CopyFileSystem(
+ const GURL& origin_url,
+ FileSystemType type,
+ SandboxFileSystemBackendDelegate* destination) {
+ DCHECK(file_task_runner()->RunsTasksOnCurrentThread());
+
+ base::FilePath base_path =
+ GetBaseDirectoryForOriginAndType(origin_url, type, false /* create */);
+ if (base::PathExists(base_path)) {
+ // Delete any existing file system directories in the destination. A
+ // previously failed migration
+ // may have left behind partially copied directories.
+ base::FilePath dest_path = destination->GetBaseDirectoryForOriginAndType(
+ origin_url, type, false /* create */);
+ if (base::PathExists(dest_path)) {
cmumford 2015/01/06 15:30:27 Consider disposing of the exists check and just ca
+ // Make sure we're not about to delete our own file system.
+ CHECK(base_path != dest_path);
cmumford 2015/01/06 15:30:27 CHECK_NE
+ base::DeleteFile(dest_path, true);
+ }
+
+ // Create the required path in the destination
+ dest_path = destination->GetBaseDirectoryForOriginAndType(
+ origin_url, type, true /* create */);
+
+ obfuscated_file_util()->CloseFileSystemForOriginAndType(
+ origin_url, GetTypeString(type));
+ base::CopyDirectory(base_path, dest_path.DirName(), true /* rescursive */);
+ }
+}
+
ObfuscatedFileUtil* SandboxFileSystemBackendDelegate::obfuscated_file_util() {
return static_cast<ObfuscatedFileUtil*>(sync_file_util());
}

Powered by Google App Engine
This is Rietveld 408576698