| Index: ppapi/tests/test_file_io.cc
|
| ===================================================================
|
| --- ppapi/tests/test_file_io.cc (revision 90603)
|
| +++ ppapi/tests/test_file_io.cc (working copy)
|
| @@ -111,21 +111,23 @@
|
| }
|
|
|
| void TestFileIO::RunTest() {
|
| - RUN_TEST(Open);
|
| - RUN_TEST(ReadWriteSetLength);
|
| - RUN_TEST(TouchQuery);
|
| - RUN_TEST(AbortCalls);
|
| + RUN_ASYNC_TEST(Open);
|
| + RUN_ASYNC_TEST(ReadWriteSetLength);
|
| + RUN_ASYNC_TEST(TouchQuery);
|
| + RUN_ASYNC_TEST(AbortCalls);
|
| // TODO(viettrungluu): add tests:
|
| // - that PP_ERROR_PENDING is correctly returned
|
| // - that operations respect the file open modes (flags)
|
| }
|
|
|
| std::string TestFileIO::TestOpen() {
|
| - TestCompletionCallback callback(instance_->pp_instance());
|
| + TestCompletionCallback callback(instance_->pp_instance(), force_async_);
|
|
|
| pp::FileSystem_Dev file_system(instance_, PP_FILESYSTEMTYPE_LOCALTEMPORARY);
|
| pp::FileRef_Dev file_ref(file_system, "/file_open");
|
| int32_t rv = file_system.Open(1024, callback);
|
| + if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
|
| + return ReportError("FileSystem::Open force_async", rv);
|
| if (rv == PP_OK_COMPLETIONPENDING)
|
| rv = callback.WaitForResult();
|
| if (rv != PP_OK)
|
| @@ -217,11 +219,13 @@
|
| }
|
|
|
| std::string TestFileIO::TestReadWriteSetLength() {
|
| - TestCompletionCallback callback(instance_->pp_instance());
|
| + TestCompletionCallback callback(instance_->pp_instance(), force_async_);
|
|
|
| pp::FileSystem_Dev file_system(instance_, PP_FILESYSTEMTYPE_LOCALTEMPORARY);
|
| pp::FileRef_Dev file_ref(file_system, "/file_read_write_setlength");
|
| int32_t rv = file_system.Open(1024, callback);
|
| + if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
|
| + return ReportError("FileSystem::Open force_async", rv);
|
| if (rv == PP_OK_COMPLETIONPENDING)
|
| rv = callback.WaitForResult();
|
| if (rv != PP_OK)
|
| @@ -234,6 +238,8 @@
|
| PP_FILEOPENFLAG_READ |
|
| PP_FILEOPENFLAG_WRITE,
|
| callback);
|
| + if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
|
| + return ReportError("FileIO::Open force_async", rv);
|
| if (rv == PP_OK_COMPLETIONPENDING)
|
| rv = callback.WaitForResult();
|
| if (rv != PP_OK)
|
| @@ -254,6 +260,8 @@
|
|
|
| // Truncate the file.
|
| rv = file_io.SetLength(4, callback);
|
| + if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
|
| + return ReportError("FileIO::SetLength force_async", rv);
|
| if (rv == PP_OK_COMPLETIONPENDING)
|
| rv = callback.WaitForResult();
|
| if (rv != PP_OK)
|
| @@ -291,6 +299,8 @@
|
|
|
| // Extend the file.
|
| rv = file_io.SetLength(16, callback);
|
| + if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
|
| + return ReportError("FileIO::SetLength force_async", rv);
|
| if (rv == PP_OK_COMPLETIONPENDING)
|
| rv = callback.WaitForResult();
|
| if (rv != PP_OK)
|
| @@ -332,10 +342,12 @@
|
| }
|
|
|
| std::string TestFileIO::TestTouchQuery() {
|
| - TestCompletionCallback callback(instance_->pp_instance());
|
| + TestCompletionCallback callback(instance_->pp_instance(), force_async_);
|
|
|
| pp::FileSystem_Dev file_system(instance_, PP_FILESYSTEMTYPE_LOCALTEMPORARY);
|
| int32_t rv = file_system.Open(1024, callback);
|
| + if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
|
| + return ReportError("FileSystem::Open force_async", rv);
|
| if (rv == PP_OK_COMPLETIONPENDING)
|
| rv = callback.WaitForResult();
|
| if (rv != PP_OK)
|
| @@ -348,6 +360,8 @@
|
| PP_FILEOPENFLAG_TRUNCATE |
|
| PP_FILEOPENFLAG_WRITE,
|
| callback);
|
| + if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
|
| + return ReportError("FileIO::Open force_async", rv);
|
| if (rv == PP_OK_COMPLETIONPENDING)
|
| rv = callback.WaitForResult();
|
| if (rv != PP_OK)
|
| @@ -355,6 +369,8 @@
|
|
|
| // Write some data to have a non-zero file size.
|
| rv = file_io.Write(0, "test", 4, callback);
|
| + if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
|
| + return ReportError("FileIO::Write force_async", rv);
|
| if (rv == PP_OK_COMPLETIONPENDING)
|
| rv = callback.WaitForResult();
|
| if (rv != 4)
|
| @@ -365,41 +381,49 @@
|
| const PP_Time last_access_time = 123 * 24 * 3600.0;
|
| const PP_Time last_modified_time = 246.0;
|
| rv = file_io.Touch(last_access_time, last_modified_time, callback);
|
| + if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
|
| + return ReportError("FileIO::Touch force_async", rv);
|
| if (rv == PP_OK_COMPLETIONPENDING)
|
| rv = callback.WaitForResult();
|
| if (rv != PP_OK)
|
| - return ReportError("FileSystem::Touch", rv);
|
| + return ReportError("FileIO::Touch", rv);
|
|
|
| PP_FileInfo_Dev info;
|
| rv = file_io.Query(&info, callback);
|
| + if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
|
| + return ReportError("FileIO::Query force_async", rv);
|
| if (rv == PP_OK_COMPLETIONPENDING)
|
| rv = callback.WaitForResult();
|
| if (rv != PP_OK)
|
| - return ReportError("FileSystem::Query", rv);
|
| + return ReportError("FileIO::Query", rv);
|
|
|
| if ((info.size != 4) ||
|
| (info.type != PP_FILETYPE_REGULAR) ||
|
| (info.system_type != PP_FILESYSTEMTYPE_LOCALTEMPORARY) ||
|
| (info.last_access_time != last_access_time) ||
|
| (info.last_modified_time != last_modified_time))
|
| - return "FileSystem::Query() has returned bad data.";
|
| + return "FileIO::Query() has returned bad data.";
|
|
|
| // Call |Query()| again, to make sure it works a second time.
|
| rv = file_io.Query(&info, callback);
|
| + if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
|
| + return ReportError("FileIO::Query force_async", rv);
|
| if (rv == PP_OK_COMPLETIONPENDING)
|
| rv = callback.WaitForResult();
|
| if (rv != PP_OK)
|
| - return ReportError("FileSystem::Query", rv);
|
| + return ReportError("FileIO::Query", rv);
|
|
|
| PASS();
|
| }
|
|
|
| std::string TestFileIO::TestAbortCalls() {
|
| - TestCompletionCallback callback(instance_->pp_instance());
|
| + TestCompletionCallback callback(instance_->pp_instance(), force_async_);
|
|
|
| pp::FileSystem_Dev file_system(instance_, PP_FILESYSTEMTYPE_LOCALTEMPORARY);
|
| pp::FileRef_Dev file_ref(file_system, "/file_abort_calls");
|
| int32_t rv = file_system.Open(1024, callback);
|
| + if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
|
| + return ReportError("FileSystem::Open force_async", rv);
|
| if (rv == PP_OK_COMPLETIONPENDING)
|
| rv = callback.WaitForResult();
|
| if (rv != PP_OK)
|
| @@ -411,6 +435,8 @@
|
| rv = file_io.Open(file_ref,
|
| PP_FILEOPENFLAG_CREATE | PP_FILEOPENFLAG_WRITE,
|
| callback);
|
| + if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
|
| + return ReportError("FileIO::Open force_async", rv);
|
| if (rv == PP_OK_COMPLETIONPENDING)
|
| rv = callback.WaitForResult();
|
| if (rv != PP_OK)
|
| @@ -430,6 +456,8 @@
|
| callback.reset_run_count();
|
| rv = pp::FileIO_Dev(instance_)
|
| .Open(file_ref, PP_FILEOPENFLAG_READ,callback);
|
| + if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
|
| + return ReportError("FileIO::Open force_async", rv);
|
| if (callback.run_count() > 0)
|
| return "FileIO::Open ran callback synchronously.";
|
| if (rv == PP_OK_COMPLETIONPENDING) {
|
| @@ -447,6 +475,8 @@
|
| {
|
| pp::FileIO_Dev file_io(instance_);
|
| rv = file_io.Open(file_ref, PP_FILEOPENFLAG_READ, callback);
|
| + if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
|
| + return ReportError("FileIO::Open force_async", rv);
|
| if (rv == PP_OK_COMPLETIONPENDING)
|
| rv = callback.WaitForResult();
|
| if (rv != PP_OK)
|
| @@ -454,6 +484,8 @@
|
|
|
| callback.reset_run_count();
|
| rv = file_io.Query(&info, callback);
|
| + if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
|
| + return ReportError("FileIO::Query force_async", rv);
|
| } // Destroy |file_io|.
|
| if (rv == PP_OK_COMPLETIONPENDING) {
|
| // Save a copy and make sure |info| doesn't get written to.
|
| @@ -474,6 +506,8 @@
|
| {
|
| pp::FileIO_Dev file_io(instance_);
|
| rv = file_io.Open(file_ref, PP_FILEOPENFLAG_WRITE, callback);
|
| + if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
|
| + return ReportError("FileIO::Open force_async", rv);
|
| if (rv == PP_OK_COMPLETIONPENDING)
|
| rv = callback.WaitForResult();
|
| if (rv != PP_OK)
|
| @@ -481,6 +515,8 @@
|
|
|
| callback.reset_run_count();
|
| rv = file_io.Touch(0, 0, callback);
|
| + if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
|
| + return ReportError("FileIO::Touch force_async", rv);
|
| } // Destroy |file_io|.
|
| if (rv == PP_OK_COMPLETIONPENDING) {
|
| rv = callback.WaitForResult();
|
| @@ -497,6 +533,8 @@
|
| {
|
| pp::FileIO_Dev file_io(instance_);
|
| rv = file_io.Open(file_ref, PP_FILEOPENFLAG_READ, callback);
|
| + if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
|
| + return ReportError("FileIO::Open force_async", rv);
|
| if (rv == PP_OK_COMPLETIONPENDING)
|
| rv = callback.WaitForResult();
|
| if (rv != PP_OK)
|
| @@ -504,6 +542,8 @@
|
|
|
| callback.reset_run_count();
|
| rv = file_io.Read(0, buf, sizeof(buf), callback);
|
| + if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
|
| + return ReportError("FileIO::Read force_async", rv);
|
| } // Destroy |file_io|.
|
| if (rv == PP_OK_COMPLETIONPENDING) {
|
| // Save a copy and make sure |buf| doesn't get written to.
|
| @@ -525,6 +565,8 @@
|
| {
|
| pp::FileIO_Dev file_io(instance_);
|
| rv = file_io.Open(file_ref, PP_FILEOPENFLAG_READ, callback);
|
| + if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
|
| + return ReportError("FileIO::Open force_async", rv);
|
| if (rv == PP_OK_COMPLETIONPENDING)
|
| rv = callback.WaitForResult();
|
| if (rv != PP_OK)
|
| @@ -532,6 +574,8 @@
|
|
|
| callback.reset_run_count();
|
| rv = file_io.Write(0, buf, sizeof(buf), callback);
|
| + if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
|
| + return ReportError("FileIO::Write force_async", rv);
|
| } // Destroy |file_io|.
|
| if (rv == PP_OK_COMPLETIONPENDING) {
|
| rv = callback.WaitForResult();
|
| @@ -547,6 +591,8 @@
|
| {
|
| pp::FileIO_Dev file_io(instance_);
|
| rv = file_io.Open(file_ref, PP_FILEOPENFLAG_READ, callback);
|
| + if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
|
| + return ReportError("FileIO::Open force_async", rv);
|
| if (rv == PP_OK_COMPLETIONPENDING)
|
| rv = callback.WaitForResult();
|
| if (rv != PP_OK)
|
| @@ -554,6 +600,8 @@
|
|
|
| callback.reset_run_count();
|
| rv = file_io.SetLength(3, callback);
|
| + if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
|
| + return ReportError("FileIO::SetLength force_async", rv);
|
| } // Destroy |file_io|.
|
| if (rv == PP_OK_COMPLETIONPENDING) {
|
| rv = callback.WaitForResult();
|
| @@ -569,6 +617,8 @@
|
| {
|
| pp::FileIO_Dev file_io(instance_);
|
| rv = file_io.Open(file_ref, PP_FILEOPENFLAG_READ, callback);
|
| + if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
|
| + return ReportError("FileIO::Open force_async", rv);
|
| if (rv == PP_OK_COMPLETIONPENDING)
|
| rv = callback.WaitForResult();
|
| if (rv != PP_OK)
|
| @@ -576,6 +626,8 @@
|
|
|
| callback.reset_run_count();
|
| rv = file_io.Flush(callback);
|
| + if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
|
| + return ReportError("FileIO::Flush force_async", rv);
|
| } // Destroy |file_io|.
|
| if (rv == PP_OK_COMPLETIONPENDING) {
|
| rv = callback.WaitForResult();
|
| @@ -614,7 +666,7 @@
|
| bool open_if_exists = !!(expectations & OPEN_IF_EXISTS);
|
| bool truncate_if_exists = !!(expectations & TRUNCATE_IF_EXISTS);
|
|
|
| - TestCompletionCallback callback(instance_->pp_instance());
|
| + TestCompletionCallback callback(instance_->pp_instance(), force_async_);
|
| pp::FileRef_Dev existent_file_ref(
|
| *file_system, "/match_open_expectation_existent_non_empty_file");
|
| pp::FileRef_Dev nonexistent_file_ref(
|
| @@ -623,12 +675,16 @@
|
| // Setup files for test.
|
| {
|
| int32_t rv = existent_file_ref.Delete(callback);
|
| + if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
|
| + return ReportError("FileRef::Delete force_async", rv);
|
| if (rv == PP_OK_COMPLETIONPENDING)
|
| rv = callback.WaitForResult();
|
| if (rv != PP_OK && rv != PP_ERROR_FILENOTFOUND)
|
| return ReportError("FileRef::Delete", rv);
|
|
|
| rv = nonexistent_file_ref.Delete(callback);
|
| + if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
|
| + return ReportError("FileRef::Delete force_async", rv);
|
| if (rv == PP_OK_COMPLETIONPENDING)
|
| rv = callback.WaitForResult();
|
| if (rv != PP_OK && rv != PP_ERROR_FILENOTFOUND)
|
| @@ -638,6 +694,8 @@
|
| rv = existent_file_io.Open(existent_file_ref,
|
| PP_FILEOPENFLAG_CREATE | PP_FILEOPENFLAG_WRITE,
|
| callback);
|
| + if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
|
| + return ReportError("FileIO::Open force_async", rv);
|
| if (rv == PP_OK_COMPLETIONPENDING)
|
| rv = callback.WaitForResult();
|
| if (rv != PP_OK)
|
| @@ -651,6 +709,8 @@
|
|
|
| pp::FileIO_Dev existent_file_io(instance_);
|
| int32_t rv = existent_file_io.Open(existent_file_ref, open_flags, callback);
|
| + if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
|
| + return ReportError("FileIO::Open force_async", rv);
|
| if (rv == PP_OK_COMPLETIONPENDING)
|
| rv = callback.WaitForResult();
|
| if ((invalid_combination && rv == PP_OK) ||
|
| @@ -661,6 +721,8 @@
|
| if (!invalid_combination && open_if_exists) {
|
| PP_FileInfo_Dev info;
|
| rv = existent_file_io.Query(&info, callback);
|
| + if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
|
| + return ReportError("FileIO::Query force_async", rv);
|
| if (rv == PP_OK_COMPLETIONPENDING)
|
| rv = callback.WaitForResult();
|
| if (rv != PP_OK)
|
| @@ -672,6 +734,8 @@
|
|
|
| pp::FileIO_Dev nonexistent_file_io(instance_);
|
| rv = nonexistent_file_io.Open(nonexistent_file_ref, open_flags, callback);
|
| + if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
|
| + return ReportError("FileIO::Open force_async", rv);
|
| if (rv == PP_OK_COMPLETIONPENDING)
|
| rv = callback.WaitForResult();
|
| if ((invalid_combination && rv == PP_OK) ||
|
|
|