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

Unified Diff: webkit/fileapi/isolated_file_util_unittest.cc

Issue 12212030: Re-implement IsolateFileUtil tests on top of new cross-fs operation architecture (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: addressed comments Created 7 years, 10 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 | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/fileapi/isolated_file_util_unittest.cc
diff --git a/webkit/fileapi/isolated_file_util_unittest.cc b/webkit/fileapi/isolated_file_util_unittest.cc
index 448cbef8c6f9f4a61772de1088a92ac878444544..faf83d76b5b662a7d167284ce547ca1e0405d226 100644
--- a/webkit/fileapi/isolated_file_util_unittest.cc
+++ b/webkit/fileapi/isolated_file_util_unittest.cc
@@ -3,6 +3,7 @@
// found in the LICENSE file.
#include <map>
+#include <queue>
#include <set>
#include <string>
#include <vector>
@@ -14,11 +15,11 @@
#include "base/message_loop_proxy.h"
#include "base/time.h"
#include "testing/gtest/include/gtest/gtest.h"
+#include "webkit/fileapi/async_file_test_helper.h"
#include "webkit/fileapi/external_mount_points.h"
#include "webkit/fileapi/file_system_context.h"
#include "webkit/fileapi/file_system_operation_context.h"
#include "webkit/fileapi/file_system_task_runners.h"
-#include "webkit/fileapi/file_util_helper.h"
#include "webkit/fileapi/isolated_context.h"
#include "webkit/fileapi/isolated_file_util.h"
#include "webkit/fileapi/local_file_system_operation.h"
@@ -35,6 +36,8 @@ namespace fileapi {
namespace {
+typedef AsyncFileTestHelper::FileEntryList FileEntryList;
+
// Used in IsolatedFileUtilTest::SimulateDropFiles().
// Random root paths in which we create each file/directory of the
// RegularTestCases (so that we can simulate a drop with files/directories
@@ -51,12 +54,41 @@ base::FilePath GetTopLevelPath(const base::FilePath& path) {
return base::FilePath(components[0]);
}
-bool IsDirectoryEmpty(FileSystemOperationContext* context,
- FileSystemFileUtil* file_util,
- const FileSystemURL& url) {
- scoped_ptr<FileSystemFileUtil::AbstractFileEnumerator> file_enum =
- file_util->CreateFileEnumerator(context, url, false /* recursive */);
- return file_enum->Next().empty();
+bool IsDirectoryEmpty(FileSystemContext* context, const FileSystemURL& url) {
+ FileEntryList entries;
+ EXPECT_EQ(base::PLATFORM_FILE_OK,
+ AsyncFileTestHelper::ReadDirectory(context, url, &entries));
+ return entries.empty();
+}
+
+FileSystemURL GetEntryURL(FileSystemContext* file_system_context,
+ const FileSystemURL& dir,
+ const FilePath::StringType& name) {
+ return file_system_context->CreateCrackedFileSystemURL(
+ dir.origin(),
+ dir.mount_type(),
+ dir.virtual_path().Append(name));
+}
+
+FilePath GetRelativeVirtualPath(const FileSystemURL& root,
+ const FileSystemURL& url) {
+ if (root.virtual_path().empty())
+ return url.virtual_path();
+ FilePath relative;
+ const bool success = root.virtual_path().AppendRelativePath(
+ url.virtual_path(), &relative);
+ DCHECK(success);
+ return relative;
+}
+
+FileSystemURL GetOtherURL(FileSystemContext* file_system_context,
+ const FileSystemURL& root,
+ const FileSystemURL& other_root,
+ const FileSystemURL& url) {
+ return file_system_context->CreateCrackedFileSystemURL(
+ other_root.origin(),
+ other_root.mount_type(),
+ other_root.virtual_path().Append(GetRelativeVirtualPath(root, url)));
}
} // namespace
@@ -65,8 +97,7 @@ bool IsDirectoryEmpty(FileSystemOperationContext* context,
// IsolatedFileUtil.
class IsolatedFileUtilTest : public testing::Test {
public:
- IsolatedFileUtilTest()
- : other_file_util_helper_(GURL("http://foo/"), kFileSystemTypeTest) {}
+ IsolatedFileUtilTest() {}
virtual void SetUp() {
ASSERT_TRUE(data_dir_.CreateUniqueTempDir());
@@ -85,15 +116,11 @@ class IsolatedFileUtilTest : public testing::Test {
partition_dir_.path(),
CreateAllowFileAccessOptions());
- // For cross-FileUtil copy/move tests.
- other_file_util_helper_.SetUp(file_system_context_);
-
isolated_context()->AddReference(filesystem_id_);
}
virtual void TearDown() {
isolated_context()->RemoveReference(filesystem_id_);
- other_file_util_helper_.TearDown();
}
protected:
@@ -107,14 +134,12 @@ class IsolatedFileUtilTest : public testing::Test {
return file_system_context_.get();
}
FileSystemFileUtil* file_util() const { return file_util_.get(); }
- FileSystemFileUtil* other_file_util() const {
- return other_file_util_helper_.file_util();
- }
std::string filesystem_id() const { return filesystem_id_; }
- base::FilePath GetTestCasePlatformPath(const base::FilePath::StringType& path) {
- return toplevel_root_map_[GetTopLevelPath(base::FilePath(path))].Append(path).
- NormalizePathSeparators();
+ base::FilePath GetTestCasePlatformPath(
+ const base::FilePath::StringType& path) {
+ return toplevel_root_map_[GetTopLevelPath(base::FilePath(path))]
+ .Append(path).NormalizePathSeparators();
}
base::FilePath GetTestCaseLocalPath(const base::FilePath& path) {
@@ -133,31 +158,28 @@ class IsolatedFileUtilTest : public testing::Test {
virtual_path);
}
- FileSystemURL GetOtherFileSystemURL(const base::FilePath& path) {
- return other_file_util_helper_.CreateURL(GetTestCaseLocalPath(path));
+ FileSystemURL GetOtherFileSystemURL(const base::FilePath& path) const {
+ return file_system_context()->CreateCrackedFileSystemURL(
+ GURL("http://example.com"),
+ kFileSystemTypeTemporary,
+ FilePath().AppendASCII("dest").Append(path));
}
- void VerifyFilesHaveSameContent(FileSystemFileUtil* file_util1,
- FileSystemFileUtil* file_util2,
- const FileSystemURL& url1,
+ void VerifyFilesHaveSameContent(const FileSystemURL& url1,
const FileSystemURL& url2) {
- scoped_ptr<FileSystemOperationContext> context;
-
// Get the file info for url1.
base::PlatformFileInfo info1;
- base::FilePath platform_path1;
- context.reset(new FileSystemOperationContext(file_system_context()));
+ FilePath platform_path1;
ASSERT_EQ(base::PLATFORM_FILE_OK,
- file_util1->GetFileInfo(context.get(), url1,
- &info1, &platform_path1));
+ AsyncFileTestHelper::GetMetadata(
+ file_system_context(), url1, &info1, &platform_path1));
// Get the file info for url2.
base::PlatformFileInfo info2;
base::FilePath platform_path2;
- context.reset(new FileSystemOperationContext(file_system_context()));
ASSERT_EQ(base::PLATFORM_FILE_OK,
- file_util2->GetFileInfo(context.get(), url2,
- &info2, &platform_path2));
+ AsyncFileTestHelper::GetMetadata(
+ file_system_context(), url2, &info2, &platform_path2));
// See if file info matches with the other one.
EXPECT_EQ(info1.is_directory, info2.is_directory);
@@ -171,48 +193,57 @@ class IsolatedFileUtilTest : public testing::Test {
EXPECT_EQ(content1, content2);
}
- void VerifyDirectoriesHaveSameContent(FileSystemFileUtil* file_util1,
- FileSystemFileUtil* file_util2,
- const FileSystemURL& root1,
+ void VerifyDirectoriesHaveSameContent(const FileSystemURL& root1,
const FileSystemURL& root2) {
- scoped_ptr<FileSystemOperationContext> context;
base::FilePath root_path1 = root1.path();
base::FilePath root_path2 = root2.path();
- context.reset(new FileSystemOperationContext(file_system_context()));
- scoped_ptr<FileSystemFileUtil::AbstractFileEnumerator> file_enum1 =
- file_util1->CreateFileEnumerator(context.get(), root1,
- true /* recursive */);
+ FileEntryList entries;
+ std::queue<FileSystemURL> directories;
- base::FilePath current;
+ directories.push(root1);
std::set<base::FilePath> file_set1;
- while (!(current = file_enum1->Next()).empty()) {
- if (file_enum1->IsDirectory())
- continue;
- base::FilePath relative;
- root_path1.AppendRelativePath(current, &relative);
- file_set1.insert(relative);
+ while (!directories.empty()) {
+ FileSystemURL dir = directories.front();
+ directories.pop();
+
+ ASSERT_EQ(base::PLATFORM_FILE_OK,
+ AsyncFileTestHelper::ReadDirectory(
+ file_system_context(), dir, &entries));
+ for (size_t i = 0; i < entries.size(); ++i) {
+ FileSystemURL url = GetEntryURL(file_system_context(),
+ dir, entries[i].name);
+ if (entries[i].is_directory) {
+ directories.push(url);
+ continue;
+ }
+ file_set1.insert(GetRelativeVirtualPath(root1, url));
+ }
}
- context.reset(new FileSystemOperationContext(file_system_context()));
- scoped_ptr<FileSystemFileUtil::AbstractFileEnumerator> file_enum2 =
- file_util2->CreateFileEnumerator(context.get(), root2,
- true /* recursive */);
-
- while (!(current = file_enum2->Next()).empty()) {
- base::FilePath relative;
- root_path2.AppendRelativePath(current, &relative);
- FileSystemURL url1 = root1.WithPath(root_path1.Append(relative));
- FileSystemURL url2 = root2.WithPath(root_path2.Append(relative));
- if (file_enum2->IsDirectory()) {
- FileSystemOperationContext context1(file_system_context());
- FileSystemOperationContext context2(file_system_context());
- EXPECT_EQ(IsDirectoryEmpty(&context1, file_util1, url1),
- IsDirectoryEmpty(&context2, file_util2, url2));
- continue;
+ directories.push(root2);
+ while (!directories.empty()) {
+ FileSystemURL dir = directories.front();
+ directories.pop();
+
+ ASSERT_EQ(base::PLATFORM_FILE_OK,
+ AsyncFileTestHelper::ReadDirectory(
+ file_system_context(), dir, &entries));
+ for (size_t i = 0; i < entries.size(); ++i) {
+ FileSystemURL url2 = GetEntryURL(file_system_context(),
+ dir, entries[i].name);
+ FileSystemURL url1 = GetOtherURL(file_system_context(),
+ root2, root1, url2);
+ if (entries[i].is_directory) {
+ directories.push(url2);
+ EXPECT_EQ(IsDirectoryEmpty(file_system_context(), url1),
+ IsDirectoryEmpty(file_system_context(), url2));
+ continue;
+ }
+ base::FilePath relative = GetRelativeVirtualPath(root2, url2);
+ EXPECT_TRUE(file_set1.find(relative) != file_set1.end());
+ VerifyFilesHaveSameContent(url1, url2);
}
- EXPECT_TRUE(file_set1.find(relative) != file_set1.end());
- VerifyFilesHaveSameContent(file_util1, file_util2, url1, url2);
}
}
@@ -255,7 +286,6 @@ class IsolatedFileUtilTest : public testing::Test {
scoped_refptr<FileSystemContext> file_system_context_;
std::map<base::FilePath, base::FilePath> toplevel_root_map_;
scoped_ptr<IsolatedFileUtil> file_util_;
- LocalFileSystemTestOriginHelper other_file_util_helper_;
DISALLOW_COPY_AND_ASSIGN(IsolatedFileUtilTest);
};
@@ -336,7 +366,8 @@ TEST_F(IsolatedFileUtilTest, ReadDirectoryTest) {
<< ": " << test_case.path);
// Read entries in the directory to construct the expected results map.
- typedef std::map<base::FilePath::StringType, base::FileUtilProxy::Entry> EntryMap;
+ typedef std::map<base::FilePath::StringType,
+ base::FileUtilProxy::Entry> EntryMap;
EntryMap expected_entry_map;
FileEnumerator file_enum(
@@ -356,11 +387,10 @@ TEST_F(IsolatedFileUtilTest, ReadDirectoryTest) {
// Perform ReadDirectory in the isolated filesystem.
FileSystemURL url = GetFileSystemURL(base::FilePath(test_case.path));
- std::vector<base::FileUtilProxy::Entry> entries;
- FileSystemOperationContext context(file_system_context());
+ FileEntryList entries;
ASSERT_EQ(base::PLATFORM_FILE_OK,
- FileUtilHelper::ReadDirectory(
- &context, file_util(), url, &entries));
+ AsyncFileTestHelper::ReadDirectory(
+ file_system_context(), url, &entries));
EXPECT_EQ(expected_entry_map.size(), entries.size());
for (size_t i = 0; i < entries.size(); ++i) {
@@ -392,82 +422,71 @@ TEST_F(IsolatedFileUtilTest, GetLocalFilePathTest) {
}
TEST_F(IsolatedFileUtilTest, CopyOutFileTest) {
- scoped_ptr<FileSystemOperationContext> context(
- new FileSystemOperationContext(file_system_context()));
- FileSystemURL root_url = GetFileSystemURL(base::FilePath());
- scoped_ptr<FileSystemFileUtil::AbstractFileEnumerator> file_enum(
- file_util()->CreateFileEnumerator(context.get(),
- root_url,
- true /* recursive */));
- base::FilePath current;
- while (!(current = file_enum->Next()).empty()) {
- if (file_enum->IsDirectory())
- continue;
-
- SCOPED_TRACE(testing::Message() << "Testing file copy "
- << current.value());
+ FileSystemURL src_root = GetFileSystemURL(base::FilePath());
+ FileSystemURL dest_root = GetOtherFileSystemURL(base::FilePath());
- FileSystemURL src_url = root_url.WithPath(current);
- FileSystemURL dest_url = GetOtherFileSystemURL(current);
+ FileEntryList entries;
+ std::queue<FileSystemURL> directories;
+ directories.push(src_root);
- // Create the parent directory of the destination.
- context.reset(new FileSystemOperationContext(file_system_context()));
- ASSERT_EQ(base::PLATFORM_FILE_OK,
- other_file_util()->CreateDirectory(
- context.get(),
- GetOtherFileSystemURL(current.DirName()),
- false /* exclusive */,
- true /* recursive */));
+ ASSERT_EQ(base::PLATFORM_FILE_OK,
+ AsyncFileTestHelper::CreateDirectory(file_system_context(),
+ dest_root));
- context.reset(new FileSystemOperationContext(file_system_context()));
+ while (!directories.empty()) {
+ FileSystemURL dir = directories.front();
+ directories.pop();
ASSERT_EQ(base::PLATFORM_FILE_OK,
- FileUtilHelper::Copy(
- context.get(),
- file_util(), other_file_util(),
- src_url, dest_url));
-
- VerifyFilesHaveSameContent(file_util(), other_file_util(),
- src_url, dest_url);
+ AsyncFileTestHelper::ReadDirectory(file_system_context(),
+ dir, &entries));
+ for (size_t i = 0; i < entries.size(); ++i) {
+ FileSystemURL src_url = GetEntryURL(file_system_context(),
+ dir, entries[i].name);
+ FileSystemURL dest_url = GetOtherURL(file_system_context(),
+ src_root, dest_root, src_url);
+
+ if (entries[i].is_directory) {
+ ASSERT_EQ(base::PLATFORM_FILE_OK,
+ AsyncFileTestHelper::CreateDirectory(file_system_context(),
+ dest_url));
+ directories.push(src_url);
+ continue;
+ }
+ SCOPED_TRACE(testing::Message() << "Testing file copy "
+ << src_url.path().value());
+ ASSERT_EQ(base::PLATFORM_FILE_OK,
+ AsyncFileTestHelper::Copy(file_system_context(),
+ src_url, dest_url));
+ VerifyFilesHaveSameContent(src_url, dest_url);
+ }
}
}
TEST_F(IsolatedFileUtilTest, CopyOutDirectoryTest) {
- scoped_ptr<FileSystemOperationContext> context(
- new FileSystemOperationContext(file_system_context()));
- FileSystemURL root_url = GetFileSystemURL(base::FilePath());
- scoped_ptr<FileSystemFileUtil::AbstractFileEnumerator> file_enum(
- file_util()->CreateFileEnumerator(context.get(),
- root_url,
- false /* recursive */));
- base::FilePath current;
- while (!(current = file_enum->Next()).empty()) {
- if (!file_enum->IsDirectory())
+ FileSystemURL src_root = GetFileSystemURL(base::FilePath());
+ FileSystemURL dest_root = GetOtherFileSystemURL(base::FilePath());
+
+ ASSERT_EQ(base::PLATFORM_FILE_OK,
+ AsyncFileTestHelper::CreateDirectory(file_system_context(),
+ dest_root));
+
+ FileEntryList entries;
+ ASSERT_EQ(base::PLATFORM_FILE_OK,
+ AsyncFileTestHelper::ReadDirectory(file_system_context(),
+ src_root, &entries));
+ for (size_t i = 0; i < entries.size(); ++i) {
+ if (!entries[i].is_directory)
continue;
-
- SCOPED_TRACE(testing::Message() << "Testing directory copy "
- << current.value());
-
- FileSystemURL src_url = root_url.WithPath(current);
- FileSystemURL dest_url = GetOtherFileSystemURL(current);
-
- // Create the parent directory of the destination.
- context.reset(new FileSystemOperationContext(file_system_context()));
- ASSERT_EQ(base::PLATFORM_FILE_OK,
- other_file_util()->CreateDirectory(
- context.get(),
- GetOtherFileSystemURL(current.DirName()),
- false /* exclusive */,
- true /* recursive */));
-
- context.reset(new FileSystemOperationContext(file_system_context()));
+ FileSystemURL src_url = GetEntryURL(file_system_context(),
+ src_root, entries[i].name);
+ FileSystemURL dest_url = GetOtherURL(file_system_context(),
+ src_root, dest_root, src_url);
+ SCOPED_TRACE(testing::Message() << "Testing file copy "
+ << src_url.path().value());
ASSERT_EQ(base::PLATFORM_FILE_OK,
- FileUtilHelper::Copy(
- context.get(),
- file_util(), other_file_util(),
- src_url, dest_url));
-
- VerifyDirectoriesHaveSameContent(file_util(), other_file_util(),
- src_url, dest_url);
+ AsyncFileTestHelper::Copy(file_system_context(),
+ src_url, dest_url));
+ VerifyDirectoriesHaveSameContent(src_url, dest_url);
}
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698