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 |