summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortzik@chromium.org <tzik@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-07 03:24:28 +0000
committertzik@chromium.org <tzik@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-07 03:24:28 +0000
commit566f223796e1bb9c72fcb0418778259a04f6d4d4 (patch)
tree67361bf5dc31674ca91c677e47cd06ed214da211
parentde82f9e2035c4259ff38c4a045abe4f549f71a62 (diff)
downloadchromium_src-566f223796e1bb9c72fcb0418778259a04f6d4d4.zip
chromium_src-566f223796e1bb9c72fcb0418778259a04f6d4d4.tar.gz
chromium_src-566f223796e1bb9c72fcb0418778259a04f6d4d4.tar.bz2
Add 'recursive' flag to FileSystemFileUtil::CreateFileEnumerator.
BUG=114732 TEST=existing tests Review URL: http://codereview.chromium.org/9592027 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@125315 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--webkit/fileapi/cross_file_util_helper.cc3
-rw-r--r--webkit/fileapi/file_system_file_util.cc6
-rw-r--r--webkit/fileapi/file_system_file_util.h3
-rw-r--r--webkit/fileapi/file_util_helper.cc2
-rw-r--r--webkit/fileapi/local_file_util.cc5
-rw-r--r--webkit/fileapi/local_file_util.h3
-rw-r--r--webkit/fileapi/native_file_util.cc5
-rw-r--r--webkit/fileapi/native_file_util.h3
-rw-r--r--webkit/fileapi/obfuscated_file_util.cc17
-rw-r--r--webkit/fileapi/obfuscated_file_util.h3
-rw-r--r--webkit/fileapi/sandbox_mount_point_provider.cc2
11 files changed, 32 insertions, 20 deletions
diff --git a/webkit/fileapi/cross_file_util_helper.cc b/webkit/fileapi/cross_file_util_helper.cc
index 9a550a3..56d504b 100644
--- a/webkit/fileapi/cross_file_util_helper.cc
+++ b/webkit/fileapi/cross_file_util_helper.cc
@@ -119,7 +119,8 @@ PlatformFileError CrossFileUtilHelper::CopyOrMoveDirectory(
return error;
scoped_ptr<FileSystemFileUtil::AbstractFileEnumerator> file_enum(
- src_util_->CreateFileEnumerator(context_, src_path));
+ src_util_->CreateFileEnumerator(context_, src_path,
+ true /* recursive */));
FilePath src_file_path_each;
while (!(src_file_path_each = file_enum->Next()).empty()) {
FilePath dest_file_path_each(dest_path.internal_path());
diff --git a/webkit/fileapi/file_system_file_util.cc b/webkit/fileapi/file_system_file_util.cc
index b542104..baf75e3 100644
--- a/webkit/fileapi/file_system_file_util.cc
+++ b/webkit/fileapi/file_system_file_util.cc
@@ -101,9 +101,11 @@ PlatformFileError FileSystemFileUtil::ReadDirectory(
FileSystemFileUtil::AbstractFileEnumerator*
FileSystemFileUtil::CreateFileEnumerator(
FileSystemOperationContext* context,
- const FileSystemPath& root_path) {
+ const FileSystemPath& root_path,
+ bool recursive) {
if (underlying_file_util_.get()) {
- return underlying_file_util_->CreateFileEnumerator(context, root_path);
+ return underlying_file_util_->CreateFileEnumerator(context, root_path,
+ recursive);
}
NOTREACHED() << "Subclasses must provide implementation if they have no"
<< "underlying_file_util";
diff --git a/webkit/fileapi/file_system_file_util.h b/webkit/fileapi/file_system_file_util.h
index f71449a..9d098a0 100644
--- a/webkit/fileapi/file_system_file_util.h
+++ b/webkit/fileapi/file_system_file_util.h
@@ -106,7 +106,8 @@ class FileSystemFileUtil {
// instance.
virtual AbstractFileEnumerator* CreateFileEnumerator(
FileSystemOperationContext* context,
- const FileSystemPath& root_path);
+ const FileSystemPath& root_path,
+ bool recursive);
// Maps |virtual_path| given |context| into |local_file_path| which represents
// physical file location on the host OS.
diff --git a/webkit/fileapi/file_util_helper.cc b/webkit/fileapi/file_util_helper.cc
index 46163ea..1310f18 100644
--- a/webkit/fileapi/file_util_helper.cc
+++ b/webkit/fileapi/file_util_helper.cc
@@ -33,7 +33,7 @@ base::PlatformFileError FileUtilHelper::DeleteDirectoryRecursive(
const FileSystemPath& path) {
scoped_ptr<FileSystemFileUtil::AbstractFileEnumerator> file_enum(
- file_util->CreateFileEnumerator(context, path));
+ file_util->CreateFileEnumerator(context, path, true /* recursive */));
FilePath file_path_each;
std::stack<FilePath> directories;
while (!(file_path_each = file_enum->Next()).empty()) {
diff --git a/webkit/fileapi/local_file_util.cc b/webkit/fileapi/local_file_util.cc
index 0e0cb69..bb52ba9 100644
--- a/webkit/fileapi/local_file_util.cc
+++ b/webkit/fileapi/local_file_util.cc
@@ -128,12 +128,13 @@ PlatformFileError LocalFileUtil::ReadDirectory(
FileSystemFileUtil::AbstractFileEnumerator* LocalFileUtil::CreateFileEnumerator(
FileSystemOperationContext* context,
- const FileSystemPath& root_path) {
+ const FileSystemPath& root_path,
+ bool recursive) {
FileSystemPath local_path = GetLocalPath(context, root_path);
if (local_path.internal_path().empty())
return new EmptyFileEnumerator();
return new LocalFileEnumerator(
- local_path.internal_path(), root_path.internal_path(), true,
+ local_path.internal_path(), root_path.internal_path(), recursive,
static_cast<file_util::FileEnumerator::FileType>(
file_util::FileEnumerator::FILES |
file_util::FileEnumerator::DIRECTORIES));
diff --git a/webkit/fileapi/local_file_util.h b/webkit/fileapi/local_file_util.h
index c981183..d711d37 100644
--- a/webkit/fileapi/local_file_util.h
+++ b/webkit/fileapi/local_file_util.h
@@ -66,7 +66,8 @@ class LocalFileUtil : public FileSystemFileUtil {
std::vector<base::FileUtilProxy::Entry>* entries) OVERRIDE;
virtual AbstractFileEnumerator* CreateFileEnumerator(
FileSystemOperationContext* context,
- const FileSystemPath& root_path) OVERRIDE;
+ const FileSystemPath& root_path,
+ bool recursive) OVERRIDE;
virtual PlatformFileError GetLocalFilePath(
FileSystemOperationContext* context,
const FileSystemPath& file_system_path,
diff --git a/webkit/fileapi/native_file_util.cc b/webkit/fileapi/native_file_util.cc
index a30ac1c..1482448 100644
--- a/webkit/fileapi/native_file_util.cc
+++ b/webkit/fileapi/native_file_util.cc
@@ -174,9 +174,10 @@ PlatformFileError NativeFileUtil::ReadDirectory(
FileSystemFileUtil::AbstractFileEnumerator*
NativeFileUtil::CreateFileEnumerator(
FileSystemOperationContext* unused,
- const FileSystemPath& root_path) {
+ const FileSystemPath& root_path,
+ bool recursive) {
return new NativeFileEnumerator(
- root_path.internal_path(), true,
+ root_path.internal_path(), recursive,
static_cast<file_util::FileEnumerator::FileType>(
file_util::FileEnumerator::FILES |
file_util::FileEnumerator::DIRECTORIES));
diff --git a/webkit/fileapi/native_file_util.h b/webkit/fileapi/native_file_util.h
index 0e2ee05..54fe6ac 100644
--- a/webkit/fileapi/native_file_util.h
+++ b/webkit/fileapi/native_file_util.h
@@ -55,7 +55,8 @@ class NativeFileUtil : public FileSystemFileUtil {
std::vector<base::FileUtilProxy::Entry>* entries) OVERRIDE;
virtual AbstractFileEnumerator* CreateFileEnumerator(
FileSystemOperationContext* unused,
- const FileSystemPath& root_path) OVERRIDE;
+ const FileSystemPath& root_path,
+ bool recursive) OVERRIDE;
virtual PlatformFileError GetLocalFilePath(
FileSystemOperationContext* unused,
const FileSystemPath& file_system_path,
diff --git a/webkit/fileapi/obfuscated_file_util.cc b/webkit/fileapi/obfuscated_file_util.cc
index 1edc3cf..5f5cb09 100644
--- a/webkit/fileapi/obfuscated_file_util.cc
+++ b/webkit/fileapi/obfuscated_file_util.cc
@@ -119,12 +119,14 @@ class ObfuscatedFileEnumerator
FileSystemDirectoryDatabase* db,
FileSystemOperationContext* context,
FileSystemFileUtil* underlying_file_util,
- const FileSystemPath& virtual_root_path)
+ const FileSystemPath& virtual_root_path,
+ bool recursive)
: base_path_(base_path),
virtual_root_path_(virtual_root_path),
db_(db),
context_(context),
- underlying_file_util_(underlying_file_util) {
+ underlying_file_util_(underlying_file_util),
+ recursive_(recursive) {
DCHECK(db_);
DCHECK(context_);
DCHECK(underlying_file_util_);
@@ -139,8 +141,7 @@ class ObfuscatedFileEnumerator
return;
FileRecord record = { file_id, file_info,
virtual_root_path.internal_path() };
- display_queue_.push(record);
- Next(); // Enumerators don't include the directory itself.
+ recurse_queue_.push(record);
}
~ObfuscatedFileEnumerator() {}
@@ -151,7 +152,7 @@ class ObfuscatedFileEnumerator
return FilePath();
current_ = display_queue_.front();
display_queue_.pop();
- if (current_.file_info.is_directory())
+ if (recursive_ && current_.file_info.is_directory())
recurse_queue_.push(current_);
return current_.file_path;
}
@@ -216,6 +217,7 @@ class ObfuscatedFileEnumerator
FileSystemDirectoryDatabase* db_;
FileSystemOperationContext* context_;
FileSystemFileUtil* underlying_file_util_;
+ bool recursive_;
};
class ObfuscatedOriginEnumerator
@@ -512,7 +514,8 @@ PlatformFileError ObfuscatedFileUtil::ReadDirectory(
FileSystemFileUtil::AbstractFileEnumerator*
ObfuscatedFileUtil::CreateFileEnumerator(
FileSystemOperationContext* context,
- const FileSystemPath& root_path) {
+ const FileSystemPath& root_path,
+ bool recursive) {
FileSystemDirectoryDatabase* db = GetDirectoryDatabase(
root_path.origin(), root_path.type(), false);
if (!db)
@@ -523,7 +526,7 @@ ObfuscatedFileUtil::CreateFileEnumerator(
db,
context,
underlying_file_util(),
- root_path);
+ root_path, recursive);
}
PlatformFileError ObfuscatedFileUtil::GetLocalFilePath(
diff --git a/webkit/fileapi/obfuscated_file_util.h b/webkit/fileapi/obfuscated_file_util.h
index be9fb85..bcc96f9c 100644
--- a/webkit/fileapi/obfuscated_file_util.h
+++ b/webkit/fileapi/obfuscated_file_util.h
@@ -97,7 +97,8 @@ class ObfuscatedFileUtil : public FileSystemFileUtil,
virtual AbstractFileEnumerator* CreateFileEnumerator(
FileSystemOperationContext* context,
- const FileSystemPath& root_path) OVERRIDE;
+ const FileSystemPath& root_path,
+ bool recursive) OVERRIDE;
virtual base::PlatformFileError GetLocalFilePath(
FileSystemOperationContext* context,
diff --git a/webkit/fileapi/sandbox_mount_point_provider.cc b/webkit/fileapi/sandbox_mount_point_provider.cc
index c99c358..808de02 100644
--- a/webkit/fileapi/sandbox_mount_point_provider.cc
+++ b/webkit/fileapi/sandbox_mount_point_provider.cc
@@ -530,7 +530,7 @@ int64 SandboxMountPointProvider::GetOriginUsageOnFileThread(
FileSystemOperationContext context(NULL);
FileSystemPath path(origin_url, type, FilePath());
scoped_ptr<FileSystemFileUtil::AbstractFileEnumerator> enumerator(
- sandbox_file_util_->CreateFileEnumerator(&context, path));
+ sandbox_file_util_->CreateFileEnumerator(&context, path, true));
FilePath file_path_each;
int64 usage = 0;