Index: webkit/fileapi/isolated_context_unittest.cc |
diff --git a/webkit/fileapi/isolated_context_unittest.cc b/webkit/fileapi/isolated_context_unittest.cc |
index 5a828f58d98d917dc8dfdb6e104eeed7fc05cd91..ee54557f68b68dfde51fe98d09e4e7af738a68fa 100644 |
--- a/webkit/fileapi/isolated_context_unittest.cc |
+++ b/webkit/fileapi/isolated_context_unittest.cc |
@@ -9,6 +9,7 @@ |
#include "base/basictypes.h" |
#include "base/logging.h" |
#include "testing/gtest/include/gtest/gtest.h" |
+#include "webkit/fileapi/isolated_context.h" |
#define FPL(x) FILE_PATH_LITERAL(x) |
@@ -20,15 +21,23 @@ |
namespace fileapi { |
+typedef IsolatedContext::FileInfo FileInfo; |
+ |
namespace { |
const FilePath kTestPaths[] = { |
- FilePath(DRIVE FPL("/a/b")), |
+ FilePath(DRIVE FPL("/a/b.txt")), |
FilePath(DRIVE FPL("/c/d/e")), |
FilePath(DRIVE FPL("/h/")), |
+ FilePath(DRIVE FPL("/")), |
#if defined(FILE_PATH_USES_WIN_SEPARATORS) |
FilePath(DRIVE FPL("\\foo\\bar")), |
+ FilePath(DRIVE FPL("\\")), |
#endif |
+ // For duplicated base name test. |
+ FilePath(DRIVE FPL("/")), |
+ FilePath(DRIVE FPL("/f/e")), |
+ FilePath(DRIVE FPL("/f/b.txt")), |
}; |
} // namespace |
@@ -41,12 +50,15 @@ class IsolatedContextTest : public testing::Test { |
} |
void SetUp() { |
- id_ = IsolatedContext::GetInstance()->RegisterIsolatedFileSystem(fileset_); |
+ IsolatedContext::FileInfoSet files; |
+ for (size_t i = 0; i < arraysize(kTestPaths); ++i) |
+ names_.push_back(files.AddPath(kTestPaths[i].NormalizePathSeparators())); |
+ id_ = IsolatedContext::GetInstance()->RegisterFileSystem(files); |
ASSERT_FALSE(id_.empty()); |
} |
void TearDown() { |
- IsolatedContext::GetInstance()->RevokeIsolatedFileSystem(id_); |
+ IsolatedContext::GetInstance()->RevokeFileSystem(id_); |
} |
IsolatedContext* isolated_context() const { |
@@ -55,7 +67,8 @@ class IsolatedContextTest : public testing::Test { |
protected: |
std::string id_; |
- std::set<FilePath> fileset_; |
+ std::multiset<FilePath> fileset_; |
+ std::vector<std::string> names_; |
private: |
DISALLOW_COPY_AND_ASSIGN(IsolatedContextTest); |
@@ -63,40 +76,41 @@ class IsolatedContextTest : public testing::Test { |
TEST_F(IsolatedContextTest, RegisterAndRevokeTest) { |
// See if the returned top-level entries match with what we registered. |
- std::vector<FilePath> toplevels; |
- ASSERT_TRUE(isolated_context()->GetTopLevelPaths(id_, &toplevels)); |
+ std::vector<FileInfo> toplevels; |
+ ASSERT_TRUE(isolated_context()->GetRegisteredFileInfo(id_, &toplevels)); |
ASSERT_EQ(fileset_.size(), toplevels.size()); |
for (size_t i = 0; i < toplevels.size(); ++i) { |
- ASSERT_TRUE(fileset_.find(toplevels[i]) != fileset_.end()); |
+ ASSERT_TRUE(fileset_.find(toplevels[i].path) != fileset_.end()); |
} |
- // See if the basename of each registered kTestPaths (that is what we |
- // register in SetUp() by RegisterIsolatedFileSystem) is properly cracked as |
+ // See if the name of each registered kTestPaths (that is what we |
+ // register in SetUp() by RegisterFileSystem) is properly cracked as |
// a valid virtual path in the isolated filesystem. |
for (size_t i = 0; i < arraysize(kTestPaths); ++i) { |
- FilePath virtual_path = isolated_context()->CreateVirtualPath( |
- id_, kTestPaths[i].BaseName()); |
+ FilePath virtual_path = isolated_context()->CreateVirtualRootPath(id_) |
+ .AppendASCII(names_[i]); |
std::string cracked_id; |
- FilePath root_path, cracked_path; |
+ FileInfo root_info; |
+ FilePath cracked_path; |
ASSERT_TRUE(isolated_context()->CrackIsolatedPath( |
- virtual_path, &cracked_id, &root_path, &cracked_path)); |
+ virtual_path, &cracked_id, &root_info, &cracked_path)); |
ASSERT_EQ(kTestPaths[i].NormalizePathSeparators().value(), |
cracked_path.value()); |
- ASSERT_TRUE(fileset_.find(root_path.NormalizePathSeparators()) |
+ ASSERT_TRUE(fileset_.find(root_info.path.NormalizePathSeparators()) |
!= fileset_.end()); |
ASSERT_EQ(id_, cracked_id); |
} |
// Revoking the current one and registering a new (empty) one. |
- isolated_context()->RevokeIsolatedFileSystem(id_); |
- std::string id2 = isolated_context()->RegisterIsolatedFileSystem( |
- std::set<FilePath>()); |
+ isolated_context()->RevokeFileSystem(id_); |
+ std::string id2 = isolated_context()->RegisterFileSystem( |
+ IsolatedContext::FileInfoSet()); |
- // Make sure the GetTopLevelPaths returns true only for the new one. |
- ASSERT_TRUE(isolated_context()->GetTopLevelPaths(id2, &toplevels)); |
- ASSERT_FALSE(isolated_context()->GetTopLevelPaths(id_, &toplevels)); |
+ // Make sure the GetRegisteredFileInfo returns true only for the new one. |
+ ASSERT_TRUE(isolated_context()->GetRegisteredFileInfo(id2, &toplevels)); |
+ ASSERT_FALSE(isolated_context()->GetRegisteredFileInfo(id_, &toplevels)); |
- isolated_context()->RevokeIsolatedFileSystem(id2); |
+ isolated_context()->RevokeFileSystem(id2); |
} |
TEST_F(IsolatedContextTest, CrackWithRelativePaths) { |
@@ -122,18 +136,19 @@ TEST_F(IsolatedContextTest, CrackWithRelativePaths) { |
for (size_t j = 0; j < ARRAYSIZE_UNSAFE(relatives); ++j) { |
SCOPED_TRACE(testing::Message() << "Testing " |
<< kTestPaths[i].value() << " " << relatives[j].path); |
- FilePath virtual_path = isolated_context()->CreateVirtualPath( |
- id_, kTestPaths[i].BaseName().Append(relatives[j].path)); |
+ FilePath virtual_path = isolated_context()->CreateVirtualRootPath(id_) |
+ .AppendASCII(names_[i]).Append(relatives[j].path); |
std::string cracked_id; |
- FilePath root_path, cracked_path; |
+ FileInfo root_info; |
+ FilePath cracked_path; |
if (!relatives[j].valid) { |
ASSERT_FALSE(isolated_context()->CrackIsolatedPath( |
- virtual_path, &cracked_id, &root_path, &cracked_path)); |
+ virtual_path, &cracked_id, &root_info, &cracked_path)); |
continue; |
} |
ASSERT_TRUE(isolated_context()->CrackIsolatedPath( |
- virtual_path, &cracked_id, &root_path, &cracked_path)); |
- ASSERT_TRUE(fileset_.find(root_path.NormalizePathSeparators()) |
+ virtual_path, &cracked_id, &root_info, &cracked_path)); |
+ ASSERT_TRUE(fileset_.find(root_info.path.NormalizePathSeparators()) |
!= fileset_.end()); |
ASSERT_EQ(kTestPaths[i].Append(relatives[j].path) |
.NormalizePathSeparators().value(), |
@@ -145,24 +160,23 @@ TEST_F(IsolatedContextTest, CrackWithRelativePaths) { |
TEST_F(IsolatedContextTest, TestWithVirtualRoot) { |
std::string cracked_id; |
- FilePath root_path, cracked_path; |
- const FilePath root(FPL("/")); |
+ FilePath cracked_path; |
// Trying to crack virtual root "/" returns true but with empty cracked path |
// as "/" of the isolated filesystem is a pure virtual directory |
// that has no corresponding platform directory. |
- FilePath virtual_path = isolated_context()->CreateVirtualPath(id_, root); |
+ FilePath virtual_path = isolated_context()->CreateVirtualRootPath(id_); |
ASSERT_TRUE(isolated_context()->CrackIsolatedPath( |
- virtual_path, &cracked_id, &root_path, &cracked_path)); |
+ virtual_path, &cracked_id, NULL, &cracked_path)); |
ASSERT_EQ(FPL(""), cracked_path.value()); |
ASSERT_EQ(id_, cracked_id); |
// Trying to crack "/foo" should fail (because "foo" is not the one |
// included in the kTestPaths). |
- virtual_path = isolated_context()->CreateVirtualPath( |
- id_, FilePath(FPL("foo"))); |
+ virtual_path = isolated_context()->CreateVirtualRootPath( |
+ id_).AppendASCII("foo"); |
ASSERT_FALSE(isolated_context()->CrackIsolatedPath( |
- virtual_path, &cracked_id, &root_path, &cracked_path)); |
+ virtual_path, &cracked_id, NULL, &cracked_path)); |
} |
} // namespace fileapi |