| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "webkit/fileapi/async_file_util_adapter.h" | 5 #include "webkit/fileapi/async_file_util_adapter.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/sequenced_task_runner.h" | 8 #include "base/sequenced_task_runner.h" |
| 9 #include "base/task_runner_util.h" | 9 #include "base/task_runner_util.h" |
| 10 #include "webkit/blob/shareable_file_reference.h" |
| 10 #include "webkit/fileapi/file_system_context.h" | 11 #include "webkit/fileapi/file_system_context.h" |
| 11 #include "webkit/fileapi/file_system_file_util.h" | 12 #include "webkit/fileapi/file_system_file_util.h" |
| 12 #include "webkit/fileapi/file_system_operation_context.h" | 13 #include "webkit/fileapi/file_system_operation_context.h" |
| 13 #include "webkit/fileapi/file_system_url.h" | 14 #include "webkit/fileapi/file_system_url.h" |
| 14 #include "webkit/fileapi/file_system_util.h" | 15 #include "webkit/fileapi/file_system_util.h" |
| 15 | 16 |
| 16 namespace fileapi { | |
| 17 | |
| 18 using base::Bind; | 17 using base::Bind; |
| 19 using base::Callback; | 18 using base::Callback; |
| 20 using base::Owned; | 19 using base::Owned; |
| 21 using base::PlatformFileError; | 20 using base::PlatformFileError; |
| 22 using base::Unretained; | 21 using base::Unretained; |
| 22 using webkit_blob::ShareableFileReference; |
| 23 |
| 24 namespace fileapi { |
| 23 | 25 |
| 24 namespace { | 26 namespace { |
| 25 | 27 |
| 26 class EnsureFileExistsHelper { | 28 class EnsureFileExistsHelper { |
| 27 public: | 29 public: |
| 28 EnsureFileExistsHelper() : error_(base::PLATFORM_FILE_OK), created_(false) {} | 30 EnsureFileExistsHelper() : error_(base::PLATFORM_FILE_OK), created_(false) {} |
| 29 | 31 |
| 30 void RunWork(FileSystemFileUtil* file_util, | 32 void RunWork(FileSystemFileUtil* file_util, |
| 31 FileSystemOperationContext* context, | 33 FileSystemOperationContext* context, |
| 32 const FileSystemURL& url) { | 34 const FileSystemURL& url) { |
| 33 error_ = file_util->EnsureFileExists(context, url, &created_); | 35 error_ = file_util->EnsureFileExists(context, url, &created_); |
| 34 } | 36 } |
| 35 | 37 |
| 36 void Reply(const AsyncFileUtil::EnsureFileExistsCallback& callback) { | 38 void Reply(const AsyncFileUtil::EnsureFileExistsCallback& callback) { |
| 37 if (!callback.is_null()) | 39 if (!callback.is_null()) |
| 38 callback.Run(error_, created_); | 40 callback.Run(error_, created_); |
| 39 } | 41 } |
| 40 | 42 |
| 41 private: | 43 private: |
| 42 base::PlatformFileError error_; | 44 base::PlatformFileError error_; |
| 43 bool created_; | 45 bool created_; |
| 44 DISALLOW_COPY_AND_ASSIGN(EnsureFileExistsHelper); | 46 DISALLOW_COPY_AND_ASSIGN(EnsureFileExistsHelper); |
| 45 }; | 47 }; |
| 46 | 48 |
| 47 class GetFileInfoHelper { | 49 class GetFileInfoHelper { |
| 48 public: | 50 public: |
| 49 GetFileInfoHelper() | 51 GetFileInfoHelper() |
| 50 : error_(base::PLATFORM_FILE_OK), | 52 : error_(base::PLATFORM_FILE_OK) {} |
| 51 snapshot_policy_(kSnapshotFileUnknown) {} | |
| 52 | 53 |
| 53 void GetFileInfo(FileSystemFileUtil* file_util, | 54 void GetFileInfo(FileSystemFileUtil* file_util, |
| 54 FileSystemOperationContext* context, | 55 FileSystemOperationContext* context, |
| 55 const FileSystemURL& url) { | 56 const FileSystemURL& url) { |
| 56 error_ = file_util->GetFileInfo(context, url, &file_info_, &platform_path_); | 57 error_ = file_util->GetFileInfo(context, url, &file_info_, &platform_path_); |
| 57 } | 58 } |
| 58 | 59 |
| 59 void CreateSnapshotFile(FileSystemFileUtil* file_util, | 60 void CreateSnapshotFile(FileSystemFileUtil* file_util, |
| 60 FileSystemOperationContext* context, | 61 FileSystemOperationContext* context, |
| 61 const FileSystemURL& url) { | 62 const FileSystemURL& url) { |
| 62 error_ = file_util->CreateSnapshotFile( | 63 scoped_file_ = file_util->CreateSnapshotFile( |
| 63 context, url, &file_info_, &platform_path_, &snapshot_policy_); | 64 context, url, &error_, &file_info_, &platform_path_); |
| 64 } | 65 } |
| 65 | 66 |
| 66 void ReplyFileInfo(const AsyncFileUtil::GetFileInfoCallback& callback) { | 67 void ReplyFileInfo(const AsyncFileUtil::GetFileInfoCallback& callback) { |
| 67 if (!callback.is_null()) | 68 if (!callback.is_null()) |
| 68 callback.Run(error_, file_info_, platform_path_); | 69 callback.Run(error_, file_info_, platform_path_); |
| 69 } | 70 } |
| 70 | 71 |
| 71 void ReplySnapshotFile( | 72 void ReplySnapshotFile( |
| 72 const AsyncFileUtil::CreateSnapshotFileCallback& callback) { | 73 const AsyncFileUtil::CreateSnapshotFileCallback& callback) { |
| 73 DCHECK(snapshot_policy_ != kSnapshotFileUnknown); | |
| 74 if (!callback.is_null()) | 74 if (!callback.is_null()) |
| 75 callback.Run(error_, file_info_, platform_path_, snapshot_policy_); | 75 callback.Run(error_, file_info_, platform_path_, |
| 76 ShareableFileReference::GetOrCreate(scoped_file_.Pass())); |
| 76 } | 77 } |
| 77 | 78 |
| 78 private: | 79 private: |
| 79 base::PlatformFileError error_; | 80 base::PlatformFileError error_; |
| 80 base::PlatformFileInfo file_info_; | 81 base::PlatformFileInfo file_info_; |
| 81 base::FilePath platform_path_; | 82 base::FilePath platform_path_; |
| 82 SnapshotFilePolicy snapshot_policy_; | 83 webkit_blob::ScopedFile scoped_file_; |
| 83 DISALLOW_COPY_AND_ASSIGN(GetFileInfoHelper); | 84 DISALLOW_COPY_AND_ASSIGN(GetFileInfoHelper); |
| 84 }; | 85 }; |
| 85 | 86 |
| 86 class ReadDirectoryHelper { | 87 class ReadDirectoryHelper { |
| 87 public: | 88 public: |
| 88 ReadDirectoryHelper() : error_(base::PLATFORM_FILE_OK) {} | 89 ReadDirectoryHelper() : error_(base::PLATFORM_FILE_OK) {} |
| 89 | 90 |
| 90 void RunWork(FileSystemFileUtil* file_util, | 91 void RunWork(FileSystemFileUtil* file_util, |
| 91 FileSystemOperationContext* context, | 92 FileSystemOperationContext* context, |
| 92 const FileSystemURL& url) { | 93 const FileSystemURL& url) { |
| (...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 297 const CreateSnapshotFileCallback& callback) { | 298 const CreateSnapshotFileCallback& callback) { |
| 298 GetFileInfoHelper* helper = new GetFileInfoHelper; | 299 GetFileInfoHelper* helper = new GetFileInfoHelper; |
| 299 return context->task_runner()->PostTaskAndReply( | 300 return context->task_runner()->PostTaskAndReply( |
| 300 FROM_HERE, | 301 FROM_HERE, |
| 301 Bind(&GetFileInfoHelper::CreateSnapshotFile, Unretained(helper), | 302 Bind(&GetFileInfoHelper::CreateSnapshotFile, Unretained(helper), |
| 302 sync_file_util_.get(), context, url), | 303 sync_file_util_.get(), context, url), |
| 303 Bind(&GetFileInfoHelper::ReplySnapshotFile, Owned(helper), callback)); | 304 Bind(&GetFileInfoHelper::ReplySnapshotFile, Owned(helper), callback)); |
| 304 } | 305 } |
| 305 | 306 |
| 306 } // namespace fileapi | 307 } // namespace fileapi |
| OLD | NEW |