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

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
« no previous file with comments | « webkit/fileapi/obfuscated_file_system_file_util.h ('k') | webkit/fileapi/sandbox_mount_point_provider.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..94a86e139e935c9469b6582148a41e90c68b95a1 100644
--- a/webkit/fileapi/obfuscated_file_system_file_util.cc
+++ b/webkit/fileapi/obfuscated_file_system_file_util.cc
@@ -5,6 +5,7 @@
#include "webkit/fileapi/obfuscated_file_system_file_util.h"
#include <queue>
+#include <string>
#include <vector>
#include "base/file_util.h"
@@ -50,8 +51,8 @@ bool IsRootDirectory(const FilePath& virtual_path) {
// which FilePath uses wide chars [since they're converted to UTF-8 for storage
// anyway], but as long as the cost is high enough that one can't cheat on quota
// by storing data in paths, it doesn't need to be all that accurate.
-const int64 kPathCreationQuotaCost = 146; // Bytes per inode, basically.
-const int64 kPathByteQuotaCost = 2; // Bytes per byte of path length in UTF-8.
+const int64 kPathCreationQuotaCost = 146; // Bytes per inode, basically.
+const int64 kPathByteQuotaCost = 2; // Bytes per byte of path length in UTF-8.
int64 GetPathQuotaUsage(
int growth_in_number_of_paths,
@@ -79,7 +80,7 @@ void UpdatePathQuotaUsage(
fileapi::FileSystemOperationContext* context,
const GURL& origin_url,
fileapi::FileSystemType type,
- int growth_in_number_of_paths, // -1, 0, or 1
+ int growth_in_number_of_paths, // -1, 0, or 1
int64 growth_in_bytes_of_path_length) {
int64 growth = GetPathQuotaUsage(growth_in_number_of_paths,
growth_in_bytes_of_path_length);
@@ -664,8 +665,19 @@ class ObfuscatedFileSystemFileEnumerator
: public FileSystemFileUtil::AbstractFileEnumerator {
public:
ObfuscatedFileSystemFileEnumerator(
- FileSystemDirectoryDatabase* db, const FilePath& virtual_root_path)
- : db_(db) {
+ const FilePath& base_path,
+ FileSystemDirectoryDatabase* db,
+ FileSystemOperationContext* context,
+ FileSystemFileUtil* underlying_file_util,
+ const FilePath& virtual_root_path)
+ : base_path_(base_path),
+ db_(db),
+ context_(context),
+ underlying_file_util_(underlying_file_util) {
+ DCHECK(db_);
+ DCHECK(context_);
+ DCHECK(underlying_file_util_);
+
FileId file_id;
FileInfo file_info;
if (!db_->GetFileWithPath(virtual_root_path, &file_id))
@@ -681,7 +693,7 @@ class ObfuscatedFileSystemFileEnumerator
~ObfuscatedFileSystemFileEnumerator() {}
- virtual FilePath Next() {
+ virtual FilePath Next() OVERRIDE {
ProcessRecurseQueue();
if (display_queue_.empty())
return FilePath();
@@ -692,7 +704,24 @@ class ObfuscatedFileSystemFileEnumerator
return current_.file_path;
}
- virtual bool IsDirectory() {
+ virtual int64 Size() OVERRIDE {
+ if (IsDirectory())
+ return 0;
+
+ 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 +757,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 +825,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(
« no previous file with comments | « webkit/fileapi/obfuscated_file_system_file_util.h ('k') | webkit/fileapi/sandbox_mount_point_provider.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698