| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2013 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 "webkit/browser/fileapi/transient_file_util.h" | |
| 6 | |
| 7 #include <string> | |
| 8 | |
| 9 #include "base/bind.h" | |
| 10 #include "base/files/file_path.h" | |
| 11 #include "webkit/browser/fileapi/file_system_operation_context.h" | |
| 12 #include "webkit/browser/fileapi/file_system_url.h" | |
| 13 #include "webkit/browser/fileapi/isolated_context.h" | |
| 14 | |
| 15 using storage::ScopedFile; | |
| 16 | |
| 17 namespace storage { | |
| 18 | |
| 19 namespace { | |
| 20 | |
| 21 void RevokeFileSystem(const std::string& filesystem_id, | |
| 22 const base::FilePath& /*path*/) { | |
| 23 IsolatedContext::GetInstance()->RevokeFileSystem(filesystem_id); | |
| 24 } | |
| 25 | |
| 26 } // namespace | |
| 27 | |
| 28 ScopedFile TransientFileUtil::CreateSnapshotFile( | |
| 29 FileSystemOperationContext* context, | |
| 30 const FileSystemURL& url, | |
| 31 base::File::Error* error, | |
| 32 base::File::Info* file_info, | |
| 33 base::FilePath* platform_path) { | |
| 34 DCHECK(file_info); | |
| 35 *error = GetFileInfo(context, url, file_info, platform_path); | |
| 36 if (*error == base::File::FILE_OK && file_info->is_directory) | |
| 37 *error = base::File::FILE_ERROR_NOT_A_FILE; | |
| 38 if (*error != base::File::FILE_OK) | |
| 39 return ScopedFile(); | |
| 40 | |
| 41 // Sets-up a transient filesystem. | |
| 42 DCHECK(!platform_path->empty()); | |
| 43 DCHECK(!url.filesystem_id().empty()); | |
| 44 | |
| 45 ScopedFile scoped_file( | |
| 46 *platform_path, | |
| 47 ScopedFile::DELETE_ON_SCOPE_OUT, | |
| 48 context->task_runner()); | |
| 49 scoped_file.AddScopeOutCallback( | |
| 50 base::Bind(&RevokeFileSystem, url.filesystem_id()), NULL); | |
| 51 | |
| 52 return scoped_file.Pass(); | |
| 53 } | |
| 54 | |
| 55 } // namespace storage | |
| OLD | NEW |