Chromium Code Reviews| Index: webkit/fileapi/obfuscated_file_system_file_util.cc |
| diff --git a/webkit/fileapi/obfuscated_file_system_file_util.cc b/webkit/fileapi/obfuscated_file_system_file_util.cc |
| index dc6b70e80461d2299a24a73e14a8aae02f51cbcc..4550f57958eeffee794df15caa1c4b36bdcc1524 100644 |
| --- a/webkit/fileapi/obfuscated_file_system_file_util.cc |
| +++ b/webkit/fileapi/obfuscated_file_system_file_util.cc |
| @@ -664,8 +664,15 @@ class ObfuscatedFileSystemFileEnumerator |
| : public FileSystemFileUtil::AbstractFileEnumerator { |
| public: |
| ObfuscatedFileSystemFileEnumerator( |
| - FileSystemDirectoryDatabase* db, const FilePath& virtual_root_path) |
| - : db_(db) { |
| + const FilePath& base_path, |
| + FileSystemDirectoryDatabase* db, |
| + FileSystemOperationContext* context, |
|
ericu
2011/08/25 18:29:30
You're assuming that this context will remain vali
tzik
2011/08/26 02:41:53
Make sense. I added a comment there.
|
| + FileSystemFileUtil* underlying_file_util, |
| + const FilePath& virtual_root_path) |
| + : base_path_(base_path), |
| + db_(db), |
| + context_(context), |
| + underlying_file_util_(underlying_file_util) { |
|
kinuko
2011/08/25 09:28:49
DCHECK() for pointers? (db, context, underlying_fu
tzik
2011/08/26 02:41:53
Done.
|
| FileId file_id; |
| FileInfo file_info; |
| if (!db_->GetFileWithPath(virtual_root_path, &file_id)) |
| @@ -681,7 +688,7 @@ class ObfuscatedFileSystemFileEnumerator |
| ~ObfuscatedFileSystemFileEnumerator() {} |
| - virtual FilePath Next() { |
| + virtual FilePath Next() OVERRIDE { |
| ProcessRecurseQueue(); |
| if (display_queue_.empty()) |
| return FilePath(); |
| @@ -692,7 +699,25 @@ class ObfuscatedFileSystemFileEnumerator |
| return current_.file_path; |
| } |
| - virtual bool IsDirectory() { |
| + virtual int64 Size() OVERRIDE { |
| + if (IsDirectory()) |
| + return 0; |
| + FileSystemOperationContext context(*context_); |
|
ericu
2011/08/25 18:29:30
There's no need to copy the context here; just pas
tzik
2011/08/26 02:41:53
I see. Done.
|
| + |
| + base::PlatformFileInfo file_info; |
| + FilePath platform_file_path; |
| + |
| + FilePath local_path = base_path_.Append(current_.file_info.data_path); |
| + base::PlatformFileError error = underlying_file_util_->GetFileInfo( |
| + &context, local_path, &file_info, &platform_file_path); |
| + if (error != base::PLATFORM_FILE_OK) { |
| + LOG(WARNING) << "Lost a backing file."; |
| + return 0; |
| + } |
| + return file_info.size; |
| + } |
| + |
| + virtual bool IsDirectory() OVERRIDE { |
| return current_.file_info.is_directory(); |
| } |
| @@ -728,7 +753,10 @@ class ObfuscatedFileSystemFileEnumerator |
| std::queue<FileRecord> display_queue_; |
| std::queue<FileRecord> recurse_queue_; |
| FileRecord current_; |
| + FilePath base_path_; |
| FileSystemDirectoryDatabase* db_; |
| + FileSystemOperationContext* context_; |
| + FileSystemFileUtil* underlying_file_util_; |
| }; |
| class ObfuscatedFileSystemOriginEnumerator |
| @@ -793,7 +821,13 @@ ObfuscatedFileSystemFileUtil::CreateFileEnumerator( |
| context->src_origin_url(), context->src_type(), false); |
| if (!db) |
| return new FileSystemFileUtil::EmptyFileEnumerator(); |
| - return new ObfuscatedFileSystemFileEnumerator(db, root_path); |
| + return new ObfuscatedFileSystemFileEnumerator( |
| + GetDirectoryForOriginAndType(context->src_origin_url(), |
| + context->src_type(), false), |
| + db, |
| + context, |
| + underlying_file_util_.get(), |
| + root_path); |
| } |
| PlatformFileError ObfuscatedFileSystemFileUtil::GetFileInfoInternal( |