Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(508)

Unified Diff: webkit/fileapi/obfuscated_file_system_file_util.cc

Issue 7717020: Adding Size() to AbstractFileEnumerator (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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(

Powered by Google App Engine
This is Rietveld 408576698