Index: webkit/fileapi/copy_or_move_file_validator_unittest.cc |
diff --git a/webkit/fileapi/copy_or_move_file_validator_unittest.cc b/webkit/fileapi/copy_or_move_file_validator_unittest.cc |
index e5d4438d75798770b7d0e4116ff5a8093be1b7b3..d33ad6ade7e898acd945233da0333baa04e5cda5 100644 |
--- a/webkit/fileapi/copy_or_move_file_validator_unittest.cc |
+++ b/webkit/fileapi/copy_or_move_file_validator_unittest.cc |
@@ -17,10 +17,16 @@ |
#include "webkit/fileapi/file_system_util.h" |
#include "webkit/fileapi/isolated_context.h" |
#include "webkit/fileapi/mock_file_system_context.h" |
+#include "webkit/fileapi/test_mount_point_provider.h" |
#include "webkit/quota/mock_special_storage_policy.h" |
namespace fileapi { |
+namespace { |
+ |
+const FileSystemType kNoValidatorType = kFileSystemTypeTemporary; |
+const FileSystemType kWithValidatorType = kFileSystemTypeTest; |
+ |
class CopyOrMoveFileValidatorTestHelper { |
public: |
CopyOrMoveFileValidatorTestHelper( |
@@ -39,25 +45,25 @@ class CopyOrMoveFileValidatorTestHelper { |
void SetUp() { |
ASSERT_TRUE(base_.CreateUniqueTempDir()); |
base::FilePath base_dir = base_.path(); |
+ |
file_system_context_ = CreateFileSystemContextForTesting(NULL, base_dir); |
- // Prepare the origin's root directory. |
- if (src_type_ == kFileSystemTypeNativeMedia) { |
- base::FilePath src_path = base_dir.Append(FILE_PATH_LITERAL("src_media")); |
- file_util::CreateDirectory(src_path); |
- src_fsid_ = IsolatedContext::GetInstance()->RegisterFileSystemForPath( |
- kFileSystemTypeNativeMedia, src_path, NULL); |
- } else { |
- FileSystemMountPointProvider* mount_point_provider = |
- file_system_context_->GetMountPointProvider(src_type_); |
- mount_point_provider->GetFileSystemRootPathOnFileThread( |
- SourceURL(std::string()), true /* create */); |
- } |
- DCHECK_EQ(kFileSystemTypeNativeMedia, dest_type_); |
- base::FilePath dest_path = base_dir.Append(FILE_PATH_LITERAL("dest_media")); |
- file_util::CreateDirectory(dest_path); |
- dest_fsid_ = IsolatedContext::GetInstance()->RegisterFileSystemForPath( |
- kFileSystemTypeNativeMedia, dest_path, NULL); |
+ // Set up TestMountPointProvider to require CopyOrMoveFileValidator. |
+ FileSystemMountPointProvider* test_mount_point_provider = |
+ file_system_context_->GetMountPointProvider(kWithValidatorType); |
+ static_cast<TestMountPointProvider*>(test_mount_point_provider)-> |
+ set_require_copy_or_move_validator(true); |
+ |
+ // Sets up source. |
+ FileSystemMountPointProvider* src_mount_point_provider = |
+ file_system_context_->GetMountPointProvider(src_type_); |
+ src_mount_point_provider->GetFileSystemRootPathOnFileThread( |
+ SourceURL(std::string()), true /* create */); |
+ ASSERT_EQ(base::PLATFORM_FILE_OK, CreateDirectory(SourceURL(""))); |
+ |
+ // Sets up dest. |
+ DCHECK_EQ(kWithValidatorType, dest_type_); |
+ ASSERT_EQ(base::PLATFORM_FILE_OK, CreateDirectory(DestURL(""))); |
copy_src_ = SourceURL("copy_src.jpg"); |
move_src_ = SourceURL("move_src.jpg"); |
@@ -76,9 +82,9 @@ class CopyOrMoveFileValidatorTestHelper { |
void SetMediaCopyOrMoveFileValidatorFactory( |
scoped_ptr<CopyOrMoveFileValidatorFactory> factory) { |
FileSystemMountPointProvider* mount_point_provider = |
- file_system_context_->GetMountPointProvider(kFileSystemTypeNativeMedia); |
+ file_system_context_->GetMountPointProvider(kWithValidatorType); |
mount_point_provider->InitializeCopyOrMoveFileValidatorFactory( |
- kFileSystemTypeNativeMedia, factory.Pass()); |
+ kWithValidatorType, factory.Pass()); |
} |
void CopyTest(base::PlatformFileError expected) { |
@@ -115,19 +121,15 @@ class CopyOrMoveFileValidatorTestHelper { |
private: |
FileSystemURL SourceURL(const std::string& path) { |
- if (src_type_ == kFileSystemTypeNativeMedia) { |
- std::string root_fs_url = GetIsolatedFileSystemRootURIString( |
- origin_, src_fsid_, "src_media/"); |
- return file_system_context_->CrackURL(GURL(root_fs_url + path)); |
- } |
return file_system_context_->CreateCrackedFileSystemURL( |
- origin_, src_type_, base::FilePath::FromUTF8Unsafe(path)); |
+ origin_, src_type_, |
+ base::FilePath().AppendASCII("src").AppendASCII(path)); |
} |
FileSystemURL DestURL(const std::string& path) { |
- std::string root_fs_url = GetIsolatedFileSystemRootURIString( |
- origin_, dest_fsid_, "dest_media/"); |
- return file_system_context_->CrackURL(GURL(root_fs_url + path)); |
+ return file_system_context_->CreateCrackedFileSystemURL( |
+ origin_, dest_type_, |
+ base::FilePath().AppendASCII("dest").AppendASCII(path)); |
} |
base::PlatformFileError CreateFile(const FileSystemURL& url, size_t size) { |
@@ -138,6 +140,10 @@ class CopyOrMoveFileValidatorTestHelper { |
return AsyncFileTestHelper::TruncateFile(file_system_context_, url, size); |
} |
+ base::PlatformFileError CreateDirectory(const FileSystemURL& url) { |
+ return AsyncFileTestHelper::CreateDirectory(file_system_context_, url); |
+ } |
+ |
bool FileExists(const FileSystemURL& url, int64 expected_size) { |
return AsyncFileTestHelper::FileExists( |
file_system_context_, url, expected_size); |
@@ -202,23 +208,25 @@ class TestCopyOrMoveFileValidatorFactory |
DISALLOW_COPY_AND_ASSIGN(TestCopyOrMoveFileValidatorFactory); |
}; |
+} // namespace |
+ |
TEST(CopyOrMoveFileValidatorTest, NoValidatorWithin6ameFSType) { |
// Within a file system type, validation is not expected, so it should |
- // work for kFileSystemTypeNativeMedia without a validator set. |
+ // work for kWithValidatorType without a validator set. |
CopyOrMoveFileValidatorTestHelper helper(GURL("http://foo"), |
- kFileSystemTypeNativeMedia, |
- kFileSystemTypeNativeMedia); |
+ kWithValidatorType, |
+ kWithValidatorType); |
helper.SetUp(); |
helper.CopyTest(base::PLATFORM_FILE_OK); |
helper.MoveTest(base::PLATFORM_FILE_OK); |
} |
TEST(CopyOrMoveFileValidatorTest, MissingValidator) { |
- // Copying or moving into a kFileSystemTypeNativeMedia requires a file |
+ // Copying or moving into a kWithValidatorType requires a file |
// validator. An error is expect if copy is attempted without a validator. |
CopyOrMoveFileValidatorTestHelper helper(GURL("http://foo"), |
- kFileSystemTypeTemporary, |
- kFileSystemTypeNativeMedia); |
+ kNoValidatorType, |
+ kWithValidatorType); |
helper.SetUp(); |
helper.CopyTest(base::PLATFORM_FILE_ERROR_SECURITY); |
helper.MoveTest(base::PLATFORM_FILE_ERROR_SECURITY); |
@@ -226,8 +234,8 @@ TEST(CopyOrMoveFileValidatorTest, MissingValidator) { |
TEST(CopyOrMoveFileValidatorTest, AcceptAll) { |
CopyOrMoveFileValidatorTestHelper helper(GURL("http://foo"), |
- kFileSystemTypeTemporary, |
- kFileSystemTypeNativeMedia); |
+ kNoValidatorType, |
+ kWithValidatorType); |
helper.SetUp(); |
scoped_ptr<CopyOrMoveFileValidatorFactory> factory( |
new TestCopyOrMoveFileValidatorFactory(true /*accept_all*/)); |
@@ -239,8 +247,8 @@ TEST(CopyOrMoveFileValidatorTest, AcceptAll) { |
TEST(CopyOrMoveFileValidatorTest, AcceptNone) { |
CopyOrMoveFileValidatorTestHelper helper(GURL("http://foo"), |
- kFileSystemTypeTemporary, |
- kFileSystemTypeNativeMedia); |
+ kNoValidatorType, |
+ kWithValidatorType); |
helper.SetUp(); |
scoped_ptr<CopyOrMoveFileValidatorFactory> factory( |
new TestCopyOrMoveFileValidatorFactory(false /*accept_all*/)); |
@@ -253,8 +261,8 @@ TEST(CopyOrMoveFileValidatorTest, AcceptNone) { |
TEST(CopyOrMoveFileValidatorTest, OverrideValidator) { |
// Once set, you can not override the validator. |
CopyOrMoveFileValidatorTestHelper helper(GURL("http://foo"), |
- kFileSystemTypeTemporary, |
- kFileSystemTypeNativeMedia); |
+ kNoValidatorType, |
+ kWithValidatorType); |
helper.SetUp(); |
scoped_ptr<CopyOrMoveFileValidatorFactory> reject_factory( |
new TestCopyOrMoveFileValidatorFactory(false /*accept_all*/)); |