diff options
author | tzik@chromium.org <tzik@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-07 03:24:28 +0000 |
---|---|---|
committer | tzik@chromium.org <tzik@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-07 03:24:28 +0000 |
commit | 566f223796e1bb9c72fcb0418778259a04f6d4d4 (patch) | |
tree | 67361bf5dc31674ca91c677e47cd06ed214da211 | |
parent | de82f9e2035c4259ff38c4a045abe4f549f71a62 (diff) | |
download | chromium_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.cc | 3 | ||||
-rw-r--r-- | webkit/fileapi/file_system_file_util.cc | 6 | ||||
-rw-r--r-- | webkit/fileapi/file_system_file_util.h | 3 | ||||
-rw-r--r-- | webkit/fileapi/file_util_helper.cc | 2 | ||||
-rw-r--r-- | webkit/fileapi/local_file_util.cc | 5 | ||||
-rw-r--r-- | webkit/fileapi/local_file_util.h | 3 | ||||
-rw-r--r-- | webkit/fileapi/native_file_util.cc | 5 | ||||
-rw-r--r-- | webkit/fileapi/native_file_util.h | 3 | ||||
-rw-r--r-- | webkit/fileapi/obfuscated_file_util.cc | 17 | ||||
-rw-r--r-- | webkit/fileapi/obfuscated_file_util.h | 3 | ||||
-rw-r--r-- | webkit/fileapi/sandbox_mount_point_provider.cc | 2 |
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; |