diff options
author | tzik@chromium.org <tzik@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-19 05:03:03 +0000 |
---|---|---|
committer | tzik@chromium.org <tzik@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-19 05:03:03 +0000 |
commit | f1ddaa4a69d5e6d17d1fc9a1062c26be4712d4fd (patch) | |
tree | 31e0799180f03a47db0f3e0377b9eadcec7dcf7c /webkit/fileapi | |
parent | 4012362511707f3f1db4fb63248f0cc5b6d7f990 (diff) | |
download | chromium_src-f1ddaa4a69d5e6d17d1fc9a1062c26be4712d4fd.zip chromium_src-f1ddaa4a69d5e6d17d1fc9a1062c26be4712d4fd.tar.gz chromium_src-f1ddaa4a69d5e6d17d1fc9a1062c26be4712d4fd.tar.bz2 |
Adding FileUtilProxy::Entry::{size,last_modified_time},
and FileEnumerator::{GetFilesize,GetLastModifiedTime}.
BUG=89134
TEST=None
Review URL: http://codereview.chromium.org/7355013
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@92975 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/fileapi')
-rw-r--r-- | webkit/fileapi/file_system_directory_database.h | 2 | ||||
-rw-r--r-- | webkit/fileapi/file_system_file_util.cc | 3 | ||||
-rw-r--r-- | webkit/fileapi/obfuscated_file_system_file_util.cc | 62 | ||||
-rw-r--r-- | webkit/fileapi/obfuscated_file_system_file_util.h | 8 |
4 files changed, 55 insertions, 20 deletions
diff --git a/webkit/fileapi/file_system_directory_database.h b/webkit/fileapi/file_system_directory_database.h index 2735b9d..d363499 100644 --- a/webkit/fileapi/file_system_directory_database.h +++ b/webkit/fileapi/file_system_directory_database.h @@ -38,7 +38,7 @@ class FileSystemDirectoryDatabase { FileInfo(); ~FileInfo(); - bool is_directory() { + bool is_directory() const { return data_path.empty(); } diff --git a/webkit/fileapi/file_system_file_util.cc b/webkit/fileapi/file_system_file_util.cc index 41ff6f4..13f2527 100644 --- a/webkit/fileapi/file_system_file_util.cc +++ b/webkit/fileapi/file_system_file_util.cc @@ -128,6 +128,9 @@ PlatformFileError FileSystemFileUtil::ReadDirectory( // This will just give the entry's name instead of entire path // if we use current.value(). entry.name = file_util::FileEnumerator::GetFilename(info).value(); + entry.size = file_util::FileEnumerator::GetFilesize(info); + entry.last_modified_time = + file_util::FileEnumerator::GetLastModifiedTime(info); // TODO(rkc): Fix this also once we've refactored file_util // http://code.google.com/p/chromium-os/issues/detail?id=15948 // This currently just prevents a file from showing up at all diff --git a/webkit/fileapi/obfuscated_file_system_file_util.cc b/webkit/fileapi/obfuscated_file_system_file_util.cc index 47cf37e..1f2ccfd 100644 --- a/webkit/fileapi/obfuscated_file_system_file_util.cc +++ b/webkit/fileapi/obfuscated_file_system_file_util.cc @@ -172,24 +172,8 @@ PlatformFileError ObfuscatedFileSystemFileUtil::GetFileInfo( if (!db->GetFileWithPath(virtual_path, &file_id)) return base::PLATFORM_FILE_ERROR_NOT_FOUND; FileInfo local_info; - if (!db->GetFileInfo(file_id, &local_info)) { - NOTREACHED(); - return base::PLATFORM_FILE_ERROR_FAILED; - } - if (local_info.is_directory()) { - file_info->is_directory = true; - file_info->is_symbolic_link = false; - file_info->last_modified = local_info.modification_time; - *platform_file_path = FilePath(); - // We don't fill in ctime or atime. - return base::PLATFORM_FILE_OK; - } - if (local_info.data_path.empty()) - return base::PLATFORM_FILE_ERROR_INVALID_OPERATION; - FilePath data_path = DataPathToLocalPath(context->src_origin_url(), - context->src_type(), local_info.data_path); - return underlying_file_util_->GetFileInfo( - context, data_path, file_info, platform_file_path); + return GetFileInfoInternal(db, context, file_id, + &local_info, file_info, platform_file_path); } PlatformFileError ObfuscatedFileSystemFileUtil::ReadDirectory( @@ -226,13 +210,20 @@ PlatformFileError ObfuscatedFileSystemFileUtil::ReadDirectory( } std::vector<FileId>::iterator iter; for (iter = children.begin(); iter != children.end(); ++iter) { - if (!db->GetFileInfo(*iter, &file_info)) { + base::PlatformFileInfo platform_file_info; + FilePath file_path; + if (GetFileInfoInternal(db, context, *iter, + &file_info, &platform_file_info, &file_path) != + base::PLATFORM_FILE_OK) { NOTREACHED(); return base::PLATFORM_FILE_ERROR_FAILED; } + base::FileUtilProxy::Entry entry; entry.name = file_info.name; entry.is_directory = file_info.is_directory(); + entry.size = entry.is_directory ? 0 : platform_file_info.size; + entry.last_modified_time = platform_file_info.last_modified; entries->push_back(entry); } return base::PLATFORM_FILE_OK; @@ -719,6 +710,39 @@ ObfuscatedFileSystemFileUtil::CreateFileEnumerator( return new ObfuscatedFileSystemFileEnumerator(db, root_path); } +PlatformFileError ObfuscatedFileSystemFileUtil::GetFileInfoInternal( + FileSystemDirectoryDatabase* db, + FileSystemOperationContext* context, + FileId file_id, + FileInfo* local_info, + base::PlatformFileInfo* file_info, + FilePath* platform_file_path) { + DCHECK(db); + DCHECK(context); + DCHECK(file_info); + DCHECK(platform_file_path); + + if (!db->GetFileInfo(file_id, local_info)) { + NOTREACHED(); + return base::PLATFORM_FILE_ERROR_FAILED; + } + + if (local_info->is_directory()) { + file_info->is_directory = true; + file_info->is_symbolic_link = false; + file_info->last_modified = local_info->modification_time; + *platform_file_path = FilePath(); + // We don't fill in ctime or atime. + return base::PLATFORM_FILE_OK; + } + if (local_info->data_path.empty()) + return base::PLATFORM_FILE_ERROR_INVALID_OPERATION; + FilePath data_path = DataPathToLocalPath(context->src_origin_url(), + context->src_type(), local_info->data_path); + return underlying_file_util_->GetFileInfo( + context, data_path, file_info, platform_file_path); +} + PlatformFileError ObfuscatedFileSystemFileUtil::CreateFile( FileSystemOperationContext* context, const GURL& origin_url, FileSystemType type, const FilePath& source_path, diff --git a/webkit/fileapi/obfuscated_file_system_file_util.h b/webkit/fileapi/obfuscated_file_system_file_util.h index 53f572e..966a4c3 100644 --- a/webkit/fileapi/obfuscated_file_system_file_util.h +++ b/webkit/fileapi/obfuscated_file_system_file_util.h @@ -187,6 +187,14 @@ class ObfuscatedFileSystemFileUtil : public FileSystemFileUtil, typedef FileSystemDirectoryDatabase::FileId FileId; typedef FileSystemDirectoryDatabase::FileInfo FileInfo; + base::PlatformFileError GetFileInfoInternal( + FileSystemDirectoryDatabase* db, + FileSystemOperationContext* context, + FileId file_id, + FileInfo* local_info, + base::PlatformFileInfo* file_info, + FilePath* platform_file_path); + // Creates a new file, both the underlying backing file and the entry in the // database. file_info is an in-out parameter. Supply the name and // parent_id; data_path is ignored. On success, data_path will |