summaryrefslogtreecommitdiffstats
path: root/webkit/fileapi
diff options
context:
space:
mode:
authortzik@chromium.org <tzik@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-19 05:03:03 +0000
committertzik@chromium.org <tzik@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-19 05:03:03 +0000
commitf1ddaa4a69d5e6d17d1fc9a1062c26be4712d4fd (patch)
tree31e0799180f03a47db0f3e0377b9eadcec7dcf7c /webkit/fileapi
parent4012362511707f3f1db4fb63248f0cc5b6d7f990 (diff)
downloadchromium_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.h2
-rw-r--r--webkit/fileapi/file_system_file_util.cc3
-rw-r--r--webkit/fileapi/obfuscated_file_system_file_util.cc62
-rw-r--r--webkit/fileapi/obfuscated_file_system_file_util.h8
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