| 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 "storage/browser/fileapi/async_file_util_adapter.h" | 5 #include "storage/browser/fileapi/async_file_util_adapter.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/sequenced_task_runner.h" | 10 #include "base/sequenced_task_runner.h" |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 79 base::File::Error error_; | 79 base::File::Error error_; |
| 80 base::File::Info file_info_; | 80 base::File::Info file_info_; |
| 81 base::FilePath platform_path_; | 81 base::FilePath platform_path_; |
| 82 storage::ScopedFile scoped_file_; | 82 storage::ScopedFile scoped_file_; |
| 83 DISALLOW_COPY_AND_ASSIGN(GetFileInfoHelper); | 83 DISALLOW_COPY_AND_ASSIGN(GetFileInfoHelper); |
| 84 }; | 84 }; |
| 85 | 85 |
| 86 void ReadDirectoryHelper(FileSystemFileUtil* file_util, | 86 void ReadDirectoryHelper(FileSystemFileUtil* file_util, |
| 87 FileSystemOperationContext* context, | 87 FileSystemOperationContext* context, |
| 88 const FileSystemURL& url, | 88 const FileSystemURL& url, |
| 89 base::SingleThreadTaskRunner* origin_loop, | 89 base::SingleThreadTaskRunner* origin_runner, |
| 90 const AsyncFileUtil::ReadDirectoryCallback& callback) { | 90 const AsyncFileUtil::ReadDirectoryCallback& callback) { |
| 91 base::File::Info file_info; | 91 base::File::Info file_info; |
| 92 base::FilePath platform_path; | 92 base::FilePath platform_path; |
| 93 base::File::Error error = file_util->GetFileInfo( | 93 base::File::Error error = file_util->GetFileInfo( |
| 94 context, url, &file_info, &platform_path); | 94 context, url, &file_info, &platform_path); |
| 95 | 95 |
| 96 if (error == base::File::FILE_OK && !file_info.is_directory) | 96 if (error == base::File::FILE_OK && !file_info.is_directory) |
| 97 error = base::File::FILE_ERROR_NOT_A_DIRECTORY; | 97 error = base::File::FILE_ERROR_NOT_A_DIRECTORY; |
| 98 | 98 |
| 99 std::vector<DirectoryEntry> entries; | 99 std::vector<DirectoryEntry> entries; |
| 100 if (error != base::File::FILE_OK) { | 100 if (error != base::File::FILE_OK) { |
| 101 origin_loop->PostTask( | 101 origin_runner->PostTask( |
| 102 FROM_HERE, base::Bind(callback, error, entries, false /* has_more */)); | 102 FROM_HERE, base::Bind(callback, error, entries, false /* has_more */)); |
| 103 return; | 103 return; |
| 104 } | 104 } |
| 105 | 105 |
| 106 // Note: Increasing this value may make some tests in LayoutTests meaningless. | 106 // Note: Increasing this value may make some tests in LayoutTests meaningless. |
| 107 // (Namely, read-directory-many.html and read-directory-sync-many.html are | 107 // (Namely, read-directory-many.html and read-directory-sync-many.html are |
| 108 // assuming that they are reading much more entries than this constant.) | 108 // assuming that they are reading much more entries than this constant.) |
| 109 const size_t kResultChunkSize = 100; | 109 const size_t kResultChunkSize = 100; |
| 110 | 110 |
| 111 scoped_ptr<FileSystemFileUtil::AbstractFileEnumerator> file_enum( | 111 scoped_ptr<FileSystemFileUtil::AbstractFileEnumerator> file_enum( |
| 112 file_util->CreateFileEnumerator(context, url)); | 112 file_util->CreateFileEnumerator(context, url)); |
| 113 | 113 |
| 114 base::FilePath current; | 114 base::FilePath current; |
| 115 while (!(current = file_enum->Next()).empty()) { | 115 while (!(current = file_enum->Next()).empty()) { |
| 116 DirectoryEntry entry; | 116 DirectoryEntry entry; |
| 117 entry.is_directory = file_enum->IsDirectory(); | 117 entry.is_directory = file_enum->IsDirectory(); |
| 118 entry.name = VirtualPath::BaseName(current).value(); | 118 entry.name = VirtualPath::BaseName(current).value(); |
| 119 entry.size = file_enum->Size(); | 119 entry.size = file_enum->Size(); |
| 120 entry.last_modified_time = file_enum->LastModifiedTime(); | 120 entry.last_modified_time = file_enum->LastModifiedTime(); |
| 121 entries.push_back(entry); | 121 entries.push_back(entry); |
| 122 | 122 |
| 123 if (entries.size() == kResultChunkSize) { | 123 if (entries.size() == kResultChunkSize) { |
| 124 origin_loop->PostTask( | 124 origin_runner->PostTask( |
| 125 FROM_HERE, base::Bind(callback, base::File::FILE_OK, entries, | 125 FROM_HERE, base::Bind(callback, base::File::FILE_OK, entries, |
| 126 true /* has_more */)); | 126 true /* has_more */)); |
| 127 entries.clear(); | 127 entries.clear(); |
| 128 } | 128 } |
| 129 } | 129 } |
| 130 origin_loop->PostTask( | 130 origin_runner->PostTask( |
| 131 FROM_HERE, base::Bind(callback, base::File::FILE_OK, entries, | 131 FROM_HERE, base::Bind(callback, base::File::FILE_OK, entries, |
| 132 false /* has_more */)); | 132 false /* has_more */)); |
| 133 } | 133 } |
| 134 | 134 |
| 135 void RunCreateOrOpenCallback( | 135 void RunCreateOrOpenCallback( |
| 136 FileSystemOperationContext* context, | 136 FileSystemOperationContext* context, |
| 137 const AsyncFileUtil::CreateOrOpenCallback& callback, | 137 const AsyncFileUtil::CreateOrOpenCallback& callback, |
| 138 base::File file) { | 138 base::File file) { |
| 139 callback.Run(file.Pass(), base::Closure()); | 139 callback.Run(file.Pass(), base::Closure()); |
| 140 } | 140 } |
| (...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 343 GetFileInfoHelper* helper = new GetFileInfoHelper; | 343 GetFileInfoHelper* helper = new GetFileInfoHelper; |
| 344 const bool success = context_ptr->task_runner()->PostTaskAndReply( | 344 const bool success = context_ptr->task_runner()->PostTaskAndReply( |
| 345 FROM_HERE, | 345 FROM_HERE, |
| 346 Bind(&GetFileInfoHelper::CreateSnapshotFile, Unretained(helper), | 346 Bind(&GetFileInfoHelper::CreateSnapshotFile, Unretained(helper), |
| 347 sync_file_util_.get(), base::Owned(context_ptr), url), | 347 sync_file_util_.get(), base::Owned(context_ptr), url), |
| 348 Bind(&GetFileInfoHelper::ReplySnapshotFile, Owned(helper), callback)); | 348 Bind(&GetFileInfoHelper::ReplySnapshotFile, Owned(helper), callback)); |
| 349 DCHECK(success); | 349 DCHECK(success); |
| 350 } | 350 } |
| 351 | 351 |
| 352 } // namespace storage | 352 } // namespace storage |
| OLD | NEW |