| 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..08a0fabf0a987a4ca886f8393e0a062ef5050df6 100644
|
| --- a/storage/browser/fileapi/sandbox_file_system_backend_delegate.cc
|
| +++ b/storage/browser/fileapi/sandbox_file_system_backend_delegate.cc
|
| @@ -648,6 +648,28 @@ 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)) {
|
| + // There shouldn't be an existing file system directory in the destination.
|
| + DCHECK(!base::PathExists(destination->GetBaseDirectoryForOriginAndType(
|
| + origin_url, type, false /* create */)));
|
| +
|
| + base::FilePath 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());
|
| }
|
|
|