Index: ppapi/tests/test_file_ref.cc |
diff --git a/ppapi/tests/test_file_ref.cc b/ppapi/tests/test_file_ref.cc |
index 0a10a32192819ce8118b42855ad1234795b0c720..54ac31624650a9a42312a77a14022c4f5d1fea80 100644 |
--- a/ppapi/tests/test_file_ref.cc |
+++ b/ppapi/tests/test_file_ref.cc |
@@ -112,6 +112,7 @@ void TestFileRef::RunTests(const std::string& filter) { |
RUN_CALLBACK_TEST(TestFileRef, GetPath, filter); |
RUN_CALLBACK_TEST(TestFileRef, GetParent, filter); |
RUN_CALLBACK_TEST(TestFileRef, MakeDirectory, filter); |
+ RUN_CALLBACK_TEST(TestFileRef, MakeDirectoryExclusive, filter); |
RUN_CALLBACK_TEST(TestFileRef, QueryAndTouchFile, filter); |
RUN_CALLBACK_TEST(TestFileRef, DeleteFileAndDirectory, filter); |
RUN_CALLBACK_TEST(TestFileRef, RenameFileAndDirectory, filter); |
@@ -337,6 +338,47 @@ std::string TestFileRef::TestMakeDirectory() { |
PASS(); |
} |
+std::string TestFileRef::TestMakeDirectoryExclusive() { |
+ TestCompletionCallback callback(instance_->pp_instance(), callback_type()); |
+ |
+ // Open. |
+ pp::FileSystem file_system(instance_, PP_FILESYSTEMTYPE_LOCALTEMPORARY); |
+ callback.WaitForResult(file_system.Open(1024, callback.GetCallback())); |
+ CHECK_CALLBACK_BEHAVIOR(callback); |
+ ASSERT_EQ(PP_OK, callback.result()); |
+ |
+ // Clean up. |
+ pp::FileRef dir_ref(file_system, "/dir_exclusive"); |
+ int32_t rv = DeleteDirectoryRecursively(&dir_ref); |
+ ASSERT_TRUE(rv == PP_OK || rv == PP_ERROR_FILENOTFOUND); |
+ |
+ // MakeDirectoryExclusive. |
+ callback.WaitForResult(dir_ref.MakeDirectoryExclusive( |
+ PP_FALSE, callback.GetCallback())); |
+ CHECK_CALLBACK_BEHAVIOR(callback); |
+ ASSERT_EQ(PP_OK, callback.result()); |
+ |
+ // MakeDirectoryExclusive on the existing directory should fail. |
+ callback.WaitForResult(dir_ref.MakeDirectoryExclusive( |
+ PP_FALSE, callback.GetCallback())); |
+ CHECK_CALLBACK_BEHAVIOR(callback); |
+ ASSERT_EQ(PP_ERROR_FILEEXISTS, callback.result()); |
+ |
+ // MakeDirectoryExclusive with nested path. |
+ dir_ref = pp::FileRef(file_system, "/dir_exclusive/dir1/dir2"); |
+ callback.WaitForResult(dir_ref.MakeDirectoryExclusive( |
+ PP_FALSE, callback.GetCallback())); |
+ CHECK_CALLBACK_BEHAVIOR(callback); |
+ ASSERT_EQ(PP_ERROR_FILENOTFOUND, callback.result()); |
+ |
+ callback.WaitForResult(dir_ref.MakeDirectoryExclusive( |
+ PP_TRUE, callback.GetCallback())); |
+ CHECK_CALLBACK_BEHAVIOR(callback); |
+ ASSERT_EQ(PP_OK, callback.result()); |
+ |
+ PASS(); |
+} |
+ |
std::string TestFileRef::TestQueryAndTouchFile() { |
TestCompletionCallback callback(instance_->pp_instance(), callback_type()); |
pp::FileSystem file_system(instance_, PP_FILESYSTEMTYPE_LOCALTEMPORARY); |