diff options
author | dmichael@chromium.org <dmichael@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-12-11 04:29:20 +0000 |
---|---|---|
committer | dmichael@chromium.org <dmichael@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-12-11 04:29:20 +0000 |
commit | b469dedec774fcbaf0fbc1db0db607c0fe202f7c (patch) | |
tree | e8f78262a4bf748bbd7034f261ab981f69c45eea /ppapi | |
parent | 792b9b17fc2a2399062ff801ad4fc9814ad5f133 (diff) | |
download | chromium_src-b469dedec774fcbaf0fbc1db0db607c0fe202f7c.zip chromium_src-b469dedec774fcbaf0fbc1db0db607c0fe202f7c.tar.gz chromium_src-b469dedec774fcbaf0fbc1db0db607c0fe202f7c.tar.bz2 |
PPAPI: Convert FileIO tests to new style & test background threads
BUG=92909
Review URL: https://chromiumcodereview.appspot.com/11421137
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@172261 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi')
-rw-r--r-- | ppapi/tests/test_case.h | 7 | ||||
-rw-r--r-- | ppapi/tests/test_file_io.cc | 1155 | ||||
-rw-r--r-- | ppapi/tests/test_url_request.cc | 2 | ||||
-rw-r--r-- | ppapi/tests/test_utils.h | 16 | ||||
-rw-r--r-- | ppapi/tests/test_websocket.cc | 2 | ||||
-rw-r--r-- | ppapi/thunk/enter.cc | 4 |
6 files changed, 472 insertions, 714 deletions
diff --git a/ppapi/tests/test_case.h b/ppapi/tests/test_case.h index b06f941..e0910f5 100644 --- a/ppapi/tests/test_case.h +++ b/ppapi/tests/test_case.h @@ -319,9 +319,10 @@ class TestCaseFactory { // Helper macros for checking values in tests, and returning a location // description of the test fails. #define ASSERT_TRUE(cmd) \ - if (!(cmd)) { \ - return MakeFailureMessage(__FILE__, __LINE__, #cmd); \ - } + do { \ + if (!(cmd)) \ + return MakeFailureMessage(__FILE__, __LINE__, #cmd); \ + } while (false) #define ASSERT_FALSE(cmd) ASSERT_TRUE(!(cmd)) #define ASSERT_EQ(a, b) ASSERT_TRUE((a) == (b)) #define ASSERT_NE(a, b) ASSERT_TRUE((a) != (b)) diff --git a/ppapi/tests/test_file_io.cc b/ppapi/tests/test_file_io.cc index 9f88f00..1aae699 100644 --- a/ppapi/tests/test_file_io.cc +++ b/ppapi/tests/test_file_io.cc @@ -62,21 +62,21 @@ std::string ReportOpenError(int32_t open_flags) { int32_t ReadEntireFile(PP_Instance instance, pp::FileIO* file_io, int32_t offset, - std::string* data) { - TestCompletionCallback callback(instance); + std::string* data, + CallbackType callback_type) { + TestCompletionCallback callback(instance, callback_type); char buf[256]; int32_t read_offset = offset; for (;;) { - int32_t rv = file_io->Read(read_offset, buf, sizeof(buf), callback); - if (rv == PP_OK_COMPLETIONPENDING) - rv = callback.WaitForResult(); - if (rv < 0) - return rv; - if (rv == 0) + callback.WaitForResult( + file_io->Read(read_offset, buf, sizeof(buf), callback)); + if (callback.result() < 0) + return callback.result(); + if (callback.result() == 0) break; - read_offset += rv; - data->append(buf, rv); + read_offset += callback.result(); + data->append(buf, callback.result()); } return PP_OK; @@ -86,9 +86,9 @@ int32_t ReadToArrayEntireFile(PP_Instance instance, pp::FileIO* file_io, int32_t offset, std::string* data, - bool force_async) { + CallbackType callback_type) { TestCompletionCallbackWithOutput< std::vector<char> > callback( - instance, force_async); + instance, callback_type); for (;;) { callback.WaitForResult(file_io->Read(offset, 256, callback)); @@ -108,22 +108,23 @@ int32_t ReadToArrayEntireFile(PP_Instance instance, int32_t WriteEntireBuffer(PP_Instance instance, pp::FileIO* file_io, int32_t offset, - const std::string& data) { - TestCompletionCallback callback(instance); + const std::string& data, + CallbackType callback_type) { + TestCompletionCallback callback(instance, callback_type); int32_t write_offset = offset; const char* buf = data.c_str(); int32_t size = data.size(); while (write_offset < offset + size) { - int32_t rv = file_io->Write(write_offset, &buf[write_offset - offset], - size - write_offset + offset, callback); - if (rv == PP_OK_COMPLETIONPENDING) - rv = callback.WaitForResult(); - if (rv < 0) - return rv; - if (rv == 0) + callback.WaitForResult(file_io->Write(write_offset, + &buf[write_offset - offset], + size - write_offset + offset, + callback)); + if (callback.result() < 0) + return callback.result(); + if (callback.result() == 0) return PP_ERROR_FAILED; - write_offset += rv; + write_offset += callback.result(); } return PP_OK; @@ -136,15 +137,15 @@ bool TestFileIO::Init() { } void TestFileIO::RunTests(const std::string& filter) { - RUN_TEST_FORCEASYNC_AND_NOT(Open, filter); - RUN_TEST_FORCEASYNC_AND_NOT(ReadWriteSetLength, filter); - RUN_TEST_FORCEASYNC_AND_NOT(ReadToArrayWriteSetLength, filter); - RUN_TEST_FORCEASYNC_AND_NOT(TouchQuery, filter); - RUN_TEST_FORCEASYNC_AND_NOT(AbortCalls, filter); - RUN_TEST_FORCEASYNC_AND_NOT(ParallelReads, filter); - RUN_TEST_FORCEASYNC_AND_NOT(ParallelWrites, filter); - RUN_TEST_FORCEASYNC_AND_NOT(NotAllowMixedReadWrite, filter); - RUN_TEST_FORCEASYNC_AND_NOT(WillWriteWillSetLength, filter); + RUN_CALLBACK_TEST(TestFileIO, Open, filter); + RUN_CALLBACK_TEST(TestFileIO, ReadWriteSetLength, filter); + RUN_CALLBACK_TEST(TestFileIO, ReadToArrayWriteSetLength, filter); + RUN_CALLBACK_TEST(TestFileIO, TouchQuery, filter); + RUN_CALLBACK_TEST(TestFileIO, AbortCalls, filter); + RUN_CALLBACK_TEST(TestFileIO, ParallelReads, filter); + RUN_CALLBACK_TEST(TestFileIO, ParallelWrites, filter); + RUN_CALLBACK_TEST(TestFileIO, NotAllowMixedReadWrite, filter); + RUN_CALLBACK_TEST(TestFileIO, WillWriteWillSetLength, filter); // TODO(viettrungluu): add tests: // - that PP_ERROR_PENDING is correctly returned @@ -152,17 +153,13 @@ void TestFileIO::RunTests(const std::string& filter) { } std::string TestFileIO::TestOpen() { - TestCompletionCallback callback(instance_->pp_instance(), force_async_); + TestCompletionCallback callback(instance_->pp_instance(), callback_type()); pp::FileSystem file_system(instance_, PP_FILESYSTEMTYPE_LOCALTEMPORARY); pp::FileRef 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) - return ReportError("FileSystem::Open", rv); + callback.WaitForResult(file_system.Open(1024, callback)); + CHECK_CALLBACK_BEHAVIOR(callback); + ASSERT_EQ(PP_OK, callback.result()); std::string result; result = MatchOpenExpectations( @@ -250,133 +247,106 @@ std::string TestFileIO::TestOpen() { } std::string TestFileIO::TestReadWriteSetLength() { - TestCompletionCallback callback(instance_->pp_instance(), force_async_); + TestCompletionCallback callback(instance_->pp_instance(), callback_type()); pp::FileSystem file_system(instance_, PP_FILESYSTEMTYPE_LOCALTEMPORARY); pp::FileRef 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) - return ReportError("FileSystem::Open", rv); + callback.WaitForResult(file_system.Open(1024, callback)); + CHECK_CALLBACK_BEHAVIOR(callback); + ASSERT_EQ(PP_OK, callback.result()); pp::FileIO file_io(instance_); - rv = file_io.Open(file_ref, - PP_FILEOPENFLAG_CREATE | - PP_FILEOPENFLAG_TRUNCATE | - 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) - return ReportError("FileIO::Open", rv); + callback.WaitForResult(file_io.Open(file_ref, + PP_FILEOPENFLAG_CREATE | + PP_FILEOPENFLAG_TRUNCATE | + PP_FILEOPENFLAG_READ | + PP_FILEOPENFLAG_WRITE, + callback)); + CHECK_CALLBACK_BEHAVIOR(callback); + ASSERT_EQ(PP_OK, callback.result()); // Write something to the file. - rv = WriteEntireBuffer(instance_->pp_instance(), &file_io, 0, "test_test"); - if (rv != PP_OK) - return ReportError("FileIO::Write", rv); + int32_t rv = WriteEntireBuffer(instance_->pp_instance(), &file_io, 0, + "test_test", callback_type()); + ASSERT_EQ(PP_OK, rv); - // Check for failing read operation. + // Attempt to read a negative number of bytes; it should fail. char buf[256]; - rv = file_io.Read(0, buf, -1, // negative number of bytes to read - callback); - if (rv == PP_OK_COMPLETIONPENDING) - rv = callback.WaitForResult(); - if (rv != PP_ERROR_FAILED) - return ReportError("FileIO::Read", rv); + callback.WaitForResult(file_io.Read(0, + buf, + -1, + callback)); + CHECK_CALLBACK_BEHAVIOR(callback); + ASSERT_EQ(PP_ERROR_FAILED, callback.result()); // Read the entire file. std::string read_buffer; - rv = ReadEntireFile(instance_->pp_instance(), &file_io, 0, &read_buffer); - if (rv != PP_OK) - return ReportError("FileIO::Read", rv); - if (read_buffer != "test_test") - return ReportMismatch("FileIO::Read", read_buffer, "test_test"); + rv = ReadEntireFile(instance_->pp_instance(), &file_io, 0, &read_buffer, + callback_type()); + ASSERT_EQ(PP_OK, rv); + ASSERT_EQ(std::string("test_test"), read_buffer); // 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) - return ReportError("FileIO::SetLength", rv); + callback.WaitForResult(file_io.SetLength(4, callback)); + CHECK_CALLBACK_BEHAVIOR(callback); + ASSERT_EQ(PP_OK, callback.result()); // Check the file contents. read_buffer.clear(); - rv = ReadEntireFile(instance_->pp_instance(), &file_io, 0, &read_buffer); - if (rv != PP_OK) - return ReportError("FileIO::Read", rv); - if (read_buffer != "test") - return ReportMismatch("FileIO::Read", read_buffer, "test"); + rv = ReadEntireFile(instance_->pp_instance(), &file_io, 0, &read_buffer, + callback_type()); + ASSERT_EQ(PP_OK, rv); + ASSERT_EQ(std::string("test"), read_buffer); // Try to read past the end of the file. read_buffer.clear(); - rv = ReadEntireFile(instance_->pp_instance(), &file_io, 100, &read_buffer); - if (rv != PP_OK) - return ReportError("FileIO::Read", rv); - if (!read_buffer.empty()) - return ReportMismatch("FileIO::Read", read_buffer, "<empty string>"); + rv = ReadEntireFile(instance_->pp_instance(), &file_io, 100, &read_buffer, + callback_type()); + ASSERT_EQ(PP_OK, rv); + ASSERT_TRUE(read_buffer.empty()); // Write past the end of the file. The file should be zero-padded. - rv = WriteEntireBuffer(instance_->pp_instance(), &file_io, 8, "test"); - if (rv != PP_OK) - return ReportError("FileIO::Write", rv); + rv = WriteEntireBuffer(instance_->pp_instance(), &file_io, 8, "test", + callback_type()); + ASSERT_EQ(PP_OK, rv); // Check the contents of the file. read_buffer.clear(); - rv = ReadEntireFile(instance_->pp_instance(), &file_io, 0, &read_buffer); - if (rv != PP_OK) - return ReportError("FileIO::Read", rv); - if (read_buffer != std::string("test\0\0\0\0test", 12)) - return ReportMismatch("FileIO::Read", read_buffer, - std::string("test\0\0\0\0test", 12)); + rv = ReadEntireFile(instance_->pp_instance(), &file_io, 0, &read_buffer, + callback_type()); + ASSERT_EQ(PP_OK, rv); + ASSERT_EQ(std::string("test\0\0\0\0test", 12), read_buffer); // 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) - return ReportError("FileIO::SetLength", rv); + callback.WaitForResult(file_io.SetLength(16, callback)); + CHECK_CALLBACK_BEHAVIOR(callback); + ASSERT_EQ(PP_OK, callback.result()); // Check the contents of the file. read_buffer.clear(); - rv = ReadEntireFile(instance_->pp_instance(), &file_io, 0, &read_buffer); - if (rv != PP_OK) - return ReportError("FileIO::Read", rv); - if (read_buffer != std::string("test\0\0\0\0test\0\0\0\0", 16)) - return ReportMismatch("FileIO::Read", read_buffer, - std::string("test\0\0\0\0test\0\0\0\0", 16)); + rv = ReadEntireFile(instance_->pp_instance(), &file_io, 0, &read_buffer, + callback_type()); + ASSERT_EQ(PP_OK, rv); + ASSERT_EQ(std::string("test\0\0\0\0test\0\0\0\0", 16), read_buffer); // Write in the middle of the file. - rv = WriteEntireBuffer(instance_->pp_instance(), &file_io, 4, "test"); - if (rv != PP_OK) - return ReportError("FileIO::Write", rv); + rv = WriteEntireBuffer(instance_->pp_instance(), &file_io, 4, "test", + callback_type()); + ASSERT_EQ(PP_OK, rv); // Check the contents of the file. read_buffer.clear(); - rv = ReadEntireFile(instance_->pp_instance(), &file_io, 0, &read_buffer); - if (rv != PP_OK) - return ReportError("FileIO::Read", rv); - if (read_buffer != std::string("testtesttest\0\0\0\0", 16)) - return ReportMismatch("FileIO::Read", read_buffer, - std::string("testtesttest\0\0\0\0", 16)); + rv = ReadEntireFile(instance_->pp_instance(), &file_io, 0, &read_buffer, + callback_type()); + ASSERT_EQ(PP_OK, rv); + ASSERT_EQ(std::string("testtesttest\0\0\0\0", 16), read_buffer); // Read from the middle of the file. read_buffer.clear(); - rv = ReadEntireFile(instance_->pp_instance(), &file_io, 4, &read_buffer); - if (rv != PP_OK) - return ReportError("FileIO::Read", rv); - if (read_buffer != std::string("testtest\0\0\0\0", 12)) - return ReportMismatch("FileIO::Read", read_buffer, - std::string("testtest\0\0\0\0", 12)); + rv = ReadEntireFile(instance_->pp_instance(), &file_io, 4, &read_buffer, + callback_type()); + ASSERT_EQ(PP_OK, rv); + ASSERT_EQ(std::string("testtest\0\0\0\0", 12), read_buffer); PASS(); } @@ -385,201 +355,149 @@ std::string TestFileIO::TestReadWriteSetLength() { // API. With this test case, we can make sure the two Read's have the same // behavior. std::string TestFileIO::TestReadToArrayWriteSetLength() { - TestCompletionCallback callback(instance_->pp_instance(), force_async_); + if (callback_type() == PP_BLOCKING) { + // This test does not make sense for blocking callbacks. + PASS(); + } + TestCompletionCallback callback(instance_->pp_instance(), callback_type()); pp::FileSystem file_system(instance_, PP_FILESYSTEMTYPE_LOCALTEMPORARY); pp::FileRef 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) - return ReportError("FileSystem::Open", rv); + callback.WaitForResult(file_system.Open(1024, callback)); + CHECK_CALLBACK_BEHAVIOR(callback); + ASSERT_EQ(PP_OK, callback.result()); pp::FileIO file_io(instance_); - rv = file_io.Open(file_ref, - PP_FILEOPENFLAG_CREATE | - PP_FILEOPENFLAG_TRUNCATE | - 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) - return ReportError("FileIO::Open", rv); + callback.WaitForResult(file_io.Open(file_ref, + PP_FILEOPENFLAG_CREATE | + PP_FILEOPENFLAG_TRUNCATE | + PP_FILEOPENFLAG_READ | + PP_FILEOPENFLAG_WRITE, + callback)); + CHECK_CALLBACK_BEHAVIOR(callback); + ASSERT_EQ(PP_OK, callback.result()); // Write something to the file. - rv = WriteEntireBuffer(instance_->pp_instance(), &file_io, 0, "test_test"); - if (rv != PP_OK) - return ReportError("FileIO::Write", rv); + int32_t rv = WriteEntireBuffer(instance_->pp_instance(), &file_io, 0, + "test_test", callback_type()); + ASSERT_EQ(PP_OK, rv); TestCompletionCallbackWithOutput< std::vector<char> > callback2( - instance_->pp_instance(), force_async_); - // Check for failing read operation. - callback2.WaitForResult( - file_io.Read(0, -1, // negative number of bytes to read - callback2)); + instance_->pp_instance(), callback_type()); + // Attempt to read a negative number of bytes; it should fail. + callback2.WaitForResult(file_io.Read(0, -1, callback2)); CHECK_CALLBACK_BEHAVIOR(callback2); - if (callback2.result() != PP_ERROR_FAILED) - return ReportError("FileIO::Read", callback2.result()); + ASSERT_EQ(PP_ERROR_FAILED, callback2.result()); // Read the entire file. std::string read_buffer; read_buffer.reserve(10); rv = ReadToArrayEntireFile(instance_->pp_instance(), &file_io, 0, - &read_buffer, force_async_); - if (rv != PP_OK) - return ReportError("FileIO::Read", rv); - if (read_buffer != "test_test") - return ReportMismatch("FileIO::Read", read_buffer, "test_test"); + &read_buffer, callback_type()); + ASSERT_EQ(PP_OK, rv); + ASSERT_EQ(std::string("test_test"), read_buffer); // 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) - return ReportError("FileIO::SetLength", rv); + callback.WaitForResult(file_io.SetLength(4, callback)); + CHECK_CALLBACK_BEHAVIOR(callback); + ASSERT_EQ(PP_OK, rv); // Check the file contents. read_buffer.clear(); rv = ReadToArrayEntireFile(instance_->pp_instance(), &file_io, 0, - &read_buffer, force_async_); - if (rv != PP_OK) - return ReportError("FileIO::Read", rv); - if (read_buffer != "test") - return ReportMismatch("FileIO::Read", read_buffer, "test"); + &read_buffer, callback_type()); + ASSERT_EQ(PP_OK, rv); + ASSERT_EQ(std::string("test"), read_buffer); // Try to read past the end of the file. read_buffer.clear(); rv = ReadToArrayEntireFile(instance_->pp_instance(), &file_io, 100, - &read_buffer, force_async_); - if (rv != PP_OK) - return ReportError("FileIO::Read", rv); - if (!read_buffer.empty()) - return ReportMismatch("FileIO::Read", read_buffer, "<empty string>"); + &read_buffer, callback_type()); + ASSERT_EQ(PP_OK, rv); + ASSERT_TRUE(read_buffer.empty()); // Write past the end of the file. The file should be zero-padded. - rv = WriteEntireBuffer(instance_->pp_instance(), &file_io, 8, "test"); - if (rv != PP_OK) - return ReportError("FileIO::Write", rv); + rv = WriteEntireBuffer(instance_->pp_instance(), &file_io, 8, "test", + callback_type()); + ASSERT_EQ(PP_OK, rv); // Check the contents of the file. read_buffer.clear(); rv = ReadToArrayEntireFile(instance_->pp_instance(), &file_io, 0, - &read_buffer, force_async_); - if (rv != PP_OK) - return ReportError("FileIO::Read", rv); - if (read_buffer != std::string("test\0\0\0\0test", 12)) - return ReportMismatch("FileIO::Read", read_buffer, - std::string("test\0\0\0\0test", 12)); + &read_buffer, callback_type()); + ASSERT_EQ(PP_OK, rv); + ASSERT_EQ(std::string("test\0\0\0\0test", 12), read_buffer); // 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) - return ReportError("FileIO::SetLength", rv); + callback.WaitForResult(file_io.SetLength(16, callback)); + CHECK_CALLBACK_BEHAVIOR(callback); + ASSERT_EQ(PP_OK, callback.result()); // Check the contents of the file. read_buffer.clear(); rv = ReadToArrayEntireFile(instance_->pp_instance(), &file_io, 0, - &read_buffer, force_async_); - if (rv != PP_OK) - return ReportError("FileIO::Read", rv); - if (read_buffer != std::string("test\0\0\0\0test\0\0\0\0", 16)) - return ReportMismatch("FileIO::Read", read_buffer, - std::string("test\0\0\0\0test\0\0\0\0", 16)); + &read_buffer, callback_type()); + ASSERT_EQ(PP_OK, rv); + ASSERT_EQ(std::string("test\0\0\0\0test\0\0\0\0", 16), read_buffer); // Write in the middle of the file. - rv = WriteEntireBuffer(instance_->pp_instance(), &file_io, 4, "test"); - if (rv != PP_OK) - return ReportError("FileIO::Write", rv); + rv = WriteEntireBuffer(instance_->pp_instance(), &file_io, 4, "test", + callback_type()); + ASSERT_EQ(PP_OK, rv); // Check the contents of the file. read_buffer.clear(); rv = ReadToArrayEntireFile(instance_->pp_instance(), &file_io, 0, - &read_buffer, force_async_); - if (rv != PP_OK) - return ReportError("FileIO::Read", rv); - if (read_buffer != std::string("testtesttest\0\0\0\0", 16)) - return ReportMismatch("FileIO::Read", read_buffer, - std::string("testtesttest\0\0\0\0", 16)); + &read_buffer, callback_type()); + ASSERT_EQ(PP_OK, rv); + ASSERT_EQ(std::string("testtesttest\0\0\0\0", 16), read_buffer); // Read from the middle of the file. read_buffer.clear(); rv = ReadToArrayEntireFile(instance_->pp_instance(), &file_io, 4, - &read_buffer, force_async_); - if (rv != PP_OK) - return ReportError("FileIO::Read", rv); - if (read_buffer != std::string("testtest\0\0\0\0", 12)) - return ReportMismatch("FileIO::Read", read_buffer, - std::string("testtest\0\0\0\0", 12)); + &read_buffer, callback_type()); + ASSERT_EQ(PP_OK, rv); + ASSERT_EQ(std::string("testtest\0\0\0\0", 12), read_buffer); PASS(); } std::string TestFileIO::TestTouchQuery() { - TestCompletionCallback callback(instance_->pp_instance(), force_async_); + TestCompletionCallback callback(instance_->pp_instance(), callback_type()); pp::FileSystem 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) - return ReportError("FileSystem::Open", rv); + callback.WaitForResult(file_system.Open(1024, callback)); + CHECK_CALLBACK_BEHAVIOR(callback); + ASSERT_EQ(PP_OK, callback.result()); pp::FileRef file_ref(file_system, "/file_touch"); pp::FileIO file_io(instance_); - rv = file_io.Open(file_ref, - PP_FILEOPENFLAG_CREATE | - 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) - return ReportError("FileIO::Open", rv); + callback.WaitForResult(file_io.Open(file_ref, + PP_FILEOPENFLAG_CREATE | + PP_FILEOPENFLAG_TRUNCATE | + PP_FILEOPENFLAG_WRITE, + callback)); + CHECK_CALLBACK_BEHAVIOR(callback); + ASSERT_EQ(PP_OK, callback.result()); // 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) - return ReportError("FileIO::Write", rv); + callback.WaitForResult(file_io.Write(0, "test", 4, callback)); + CHECK_CALLBACK_BEHAVIOR(callback); + ASSERT_EQ(4, callback.result()); // last_access_time's granularity is 1 day // last_modified_time's granularity is 2 seconds 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("FileIO::Touch", rv); + callback.WaitForResult(file_io.Touch(last_access_time, last_modified_time, + callback)); + CHECK_CALLBACK_BEHAVIOR(callback); + ASSERT_EQ(PP_OK, callback.result()); PP_FileInfo 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("FileIO::Query", rv); + callback.WaitForResult(file_io.Query(&info, callback)); + CHECK_CALLBACK_BEHAVIOR(callback); + ASSERT_EQ(PP_OK, callback.result()); if ((info.size != 4) || (info.type != PP_FILETYPE_REGULAR) || @@ -589,99 +507,75 @@ std::string TestFileIO::TestTouchQuery() { 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("FileIO::Query", rv); + callback.WaitForResult(file_io.Query(&info, callback)); + CHECK_CALLBACK_BEHAVIOR(callback); + ASSERT_EQ(PP_OK, callback.result()); PASS(); } std::string TestFileIO::TestAbortCalls() { - TestCompletionCallback callback(instance_->pp_instance(), force_async_); + TestCompletionCallback callback(instance_->pp_instance(), callback_type()); pp::FileSystem file_system(instance_, PP_FILESYSTEMTYPE_LOCALTEMPORARY); pp::FileRef 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) - return ReportError("FileSystem::Open", rv); - - // First, create a file which to do ops on. + callback.WaitForResult(file_system.Open(1024, callback)); + CHECK_CALLBACK_BEHAVIOR(callback); + ASSERT_EQ(PP_OK, callback.result()); + + int32_t rv = PP_ERROR_FAILED; + // First, create a file on which to do ops. { pp::FileIO file_io(instance_); - 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) - return ReportError("FileIO::Open", rv); + callback.WaitForResult( + file_io.Open(file_ref, + PP_FILEOPENFLAG_CREATE | PP_FILEOPENFLAG_WRITE, + callback)); + CHECK_CALLBACK_BEHAVIOR(callback); + ASSERT_EQ(PP_OK, callback.result()); // N.B.: Should write at least 3 bytes. - rv = WriteEntireBuffer(instance_->pp_instance(), - &file_io, - 0, - "foobarbazquux"); - if (rv != PP_OK) - return ReportError("FileIO::Write", rv); + rv = WriteEntireBuffer(instance_->pp_instance(), &file_io, 0, + "foobarbazquux", callback_type()); + ASSERT_EQ(PP_OK, rv); } // Abort |Open()|. { - callback.reset_run_count(); rv = pp::FileIO(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) { - rv = callback.WaitForResult(); - if (rv != PP_ERROR_ABORTED) - return "FileIO::Open not aborted."; - } else if (rv != PP_OK) { - return ReportError("FileIO::Open", rv); - } + .Open(file_ref, PP_FILEOPENFLAG_READ, callback); } + callback.WaitForResult(rv); + CHECK_CALLBACK_BEHAVIOR(callback); + if (callback_type() == PP_BLOCKING) + ASSERT_EQ(callback.result(), PP_OK); + else + ASSERT_EQ(callback.result(), PP_ERROR_ABORTED); // Abort |Query()|. { PP_FileInfo info = { 0 }; + // Save a copy and make sure |info| doesn't get written to if it is aborted. + PP_FileInfo info_copy; + memcpy(&info_copy, &info, sizeof(info)); { pp::FileIO 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) - return ReportError("FileIO::Open", rv); - - callback.reset_run_count(); + callback.WaitForResult(file_io.Open(file_ref, PP_FILEOPENFLAG_READ, + callback)); + CHECK_CALLBACK_BEHAVIOR(callback); + ASSERT_EQ(PP_OK, callback.result()); + 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. - PP_FileInfo info_copy; - memcpy(&info_copy, &info, sizeof(info)); - rv = callback.WaitForResult(); - if (rv != PP_ERROR_ABORTED) - return "FileIO::Query not aborted."; - if (memcmp(&info_copy, &info, sizeof(info)) != 0) - return "FileIO::Query wrote data after resource destruction."; - } else if (rv != PP_OK) { - return ReportError("FileIO::Query", rv); + callback.WaitForResult(rv); + CHECK_CALLBACK_BEHAVIOR(callback); + if (callback_type() == PP_BLOCKING) { + ASSERT_EQ(callback.result(), PP_OK); + // The operation completed synchronously, so |info| should have changed. + ASSERT_NE(0, memcmp(&info_copy, &info, sizeof(info))); + } else { + ASSERT_EQ(callback.result(), PP_ERROR_ABORTED); + ASSERT_EQ(0, memcmp(&info_copy, &info, sizeof(info))); } } @@ -689,26 +583,19 @@ std::string TestFileIO::TestAbortCalls() { { { pp::FileIO 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) - return ReportError("FileIO::Open", rv); - - callback.reset_run_count(); + callback.WaitForResult(file_io.Open(file_ref, PP_FILEOPENFLAG_WRITE, + callback)); + CHECK_CALLBACK_BEHAVIOR(callback); + ASSERT_EQ(PP_OK, callback.result()); + 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(); - if (rv != PP_ERROR_ABORTED) - return "FileIO::Touch not aborted."; - } else if (rv != PP_OK) { - return ReportError("FileIO::Touch", rv); - } + callback.WaitForResult(rv); + CHECK_CALLBACK_BEHAVIOR(callback); + if (callback_type() == PP_BLOCKING) + ASSERT_EQ(callback.result(), PP_OK); + else + ASSERT_EQ(callback.result(), PP_ERROR_ABORTED); } // Abort |Read()|. @@ -716,30 +603,23 @@ std::string TestFileIO::TestAbortCalls() { char buf[3] = { 0 }; { pp::FileIO 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) - return ReportError("FileIO::Open", rv); - - callback.reset_run_count(); + callback.WaitForResult(file_io.Open(file_ref, PP_FILEOPENFLAG_READ, + callback)); + CHECK_CALLBACK_BEHAVIOR(callback); + ASSERT_EQ(PP_OK, callback.result()); + 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. - char buf_copy[3]; - memcpy(&buf_copy, &buf, sizeof(buf)); - rv = callback.WaitForResult(); - if (rv != PP_ERROR_ABORTED) - return "FileIO::Read not aborted."; - if (memcmp(&buf_copy, &buf, sizeof(buf)) != 0) - return "FileIO::Read wrote data after resource destruction."; - } else if (rv != PP_OK) { - return ReportError("FileIO::Read", rv); + // Save a copy to make sure buf isn't written to in the async case. + char buf_copy[3]; + memcpy(&buf_copy, &buf, sizeof(buf)); + callback.WaitForResult(rv); + CHECK_CALLBACK_BEHAVIOR(callback); + if (callback_type() == PP_BLOCKING) { + ASSERT_EQ(callback.result(), sizeof(buf)); + } else { + ASSERT_EQ(callback.result(), PP_ERROR_ABORTED); + ASSERT_EQ(0, memcmp(&buf_copy, &buf, sizeof(buf))); } } @@ -748,51 +628,38 @@ std::string TestFileIO::TestAbortCalls() { char buf[3] = { 0 }; { pp::FileIO 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) - return ReportError("FileIO::Open", rv); - - callback.reset_run_count(); + callback.WaitForResult(file_io.Open(file_ref, PP_FILEOPENFLAG_WRITE, + callback)); + CHECK_CALLBACK_BEHAVIOR(callback); + ASSERT_EQ(PP_OK, callback.result()); + 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(); - if (rv != PP_ERROR_ABORTED) - return "FileIO::Write not aborted."; - } else if (rv != PP_OK) { - return ReportError("FileIO::Write", rv); - } + callback.WaitForResult(rv); + CHECK_CALLBACK_BEHAVIOR(callback); + if (callback_type() == PP_BLOCKING) + ASSERT_EQ(callback.result(), sizeof(buf)); + else + ASSERT_EQ(callback.result(), PP_ERROR_ABORTED); } // Abort |SetLength()|. { { pp::FileIO 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) - return ReportError("FileIO::Open", rv); - - callback.reset_run_count(); + callback.WaitForResult(file_io.Open(file_ref, PP_FILEOPENFLAG_READ, + callback)); + CHECK_CALLBACK_BEHAVIOR(callback); + ASSERT_EQ(PP_OK, callback.result()); + 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(); - if (rv != PP_ERROR_ABORTED) - return "FileIO::SetLength not aborted."; - } else if (rv != PP_OK) { - return ReportError("FileIO::SetLength", rv); + callback.WaitForResult(rv); + CHECK_CALLBACK_BEHAVIOR(callback); + if (callback_type() == PP_BLOCKING) { + ASSERT_EQ(callback.result(), PP_OK); + } else { + ASSERT_EQ(callback.result(), PP_ERROR_ABORTED); } } @@ -800,25 +667,19 @@ std::string TestFileIO::TestAbortCalls() { { { pp::FileIO 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) - return ReportError("FileIO::Open", rv); - - callback.reset_run_count(); + callback.WaitForResult(file_io.Open(file_ref, PP_FILEOPENFLAG_WRITE, + callback)); + CHECK_CALLBACK_BEHAVIOR(callback); + ASSERT_EQ(PP_OK, callback.result()); + 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(); - if (rv != PP_ERROR_ABORTED) - return "FileIO::Flush not aborted."; - } else if (rv != PP_OK) { - return ReportError("FileIO::Flush", rv); + callback.WaitForResult(rv); + CHECK_CALLBACK_BEHAVIOR(callback); + if (callback_type() == PP_BLOCKING) { + ASSERT_EQ(callback.result(), PP_OK); + } else { + ASSERT_EQ(callback.result(), PP_ERROR_ABORTED); } } @@ -829,41 +690,33 @@ std::string TestFileIO::TestAbortCalls() { } std::string TestFileIO::TestParallelReads() { - TestCompletionCallback callback(instance_->pp_instance(), force_async_); + TestCompletionCallback callback(instance_->pp_instance(), callback_type()); pp::FileSystem file_system(instance_, PP_FILESYSTEMTYPE_LOCALTEMPORARY); pp::FileRef file_ref(file_system, "/file_parallel_reads"); - 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) - return ReportError("FileSystem::Open", rv); + callback.WaitForResult(file_system.Open(1024, callback)); + CHECK_CALLBACK_BEHAVIOR(callback); + ASSERT_EQ(PP_OK, callback.result()); pp::FileIO file_io(instance_); - rv = file_io.Open(file_ref, - PP_FILEOPENFLAG_CREATE | - PP_FILEOPENFLAG_TRUNCATE | - 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) - return ReportError("FileIO::Open", rv); + callback.WaitForResult(file_io.Open(file_ref, + PP_FILEOPENFLAG_CREATE | + PP_FILEOPENFLAG_TRUNCATE | + PP_FILEOPENFLAG_READ | + PP_FILEOPENFLAG_WRITE, + callback)); + CHECK_CALLBACK_BEHAVIOR(callback); + ASSERT_EQ(PP_OK, callback.result()); // Set up testing contents. - rv = WriteEntireBuffer(instance_->pp_instance(), &file_io, 0, "abcdefghijkl"); - if (rv != PP_OK) - return ReportError("FileIO::Write", rv); + int32_t rv = WriteEntireBuffer(instance_->pp_instance(), &file_io, 0, + "abcdefghijkl", callback_type()); + ASSERT_EQ(PP_OK, rv); // Parallel read operations. const char* border = "__border__"; const int32_t border_size = strlen(border); - TestCompletionCallback callback_1(instance_->pp_instance(), force_async_); + TestCompletionCallback callback_1(instance_->pp_instance(), callback_type()); int32_t read_offset_1 = 0; int32_t size_1 = 3; std::vector<char> extended_buf_1(border_size * 2 + size_1); @@ -871,7 +724,7 @@ std::string TestFileIO::TestParallelReads() { memcpy(&extended_buf_1[0], border, border_size); memcpy(buf_1 + size_1, border, border_size); - TestCompletionCallback callback_2(instance_->pp_instance(), force_async_); + TestCompletionCallback callback_2(instance_->pp_instance(), callback_type()); int32_t read_offset_2 = size_1; int32_t size_2 = 9; std::vector<char> extended_buf_2(border_size * 2 + size_2); @@ -882,91 +735,68 @@ std::string TestFileIO::TestParallelReads() { int32_t rv_1 = PP_OK; int32_t rv_2 = PP_OK; while (size_1 >= 0 && size_2 >= 0 && size_1 + size_2 > 0) { - if (size_1 > 0) { + if (size_1 > 0) rv_1 = file_io.Read(read_offset_1, buf_1, size_1, callback_1); - if (rv_1 != PP_OK_COMPLETIONPENDING) - return ReportError("FileIO::Read", rv_1); - } - - if (size_2 > 0) { + if (size_2 > 0) rv_2 = file_io.Read(read_offset_2, buf_2, size_2, callback_2); - if (rv_2 != PP_OK_COMPLETIONPENDING) - return ReportError("FileIO::Read", rv_2); - } - if (size_1 > 0) { - rv_1 = callback_1.WaitForResult(); - if (rv_1 <= 0) - return ReportError("FileIO::Read", rv_1); - read_offset_1 += rv_1; - buf_1 += rv_1; - size_1 -= rv_1; + callback_1.WaitForResult(rv_1); + CHECK_CALLBACK_BEHAVIOR(callback_1); + ASSERT_TRUE(callback_1.result() > 0); + read_offset_1 += callback_1.result(); + buf_1 += callback_1.result(); + size_1 -= callback_1.result(); } if (size_2 > 0) { - rv_2 = callback_2.WaitForResult(); - if (rv_2 <= 0) - return ReportError("FileIO::Read", rv_2); - read_offset_2 += rv_2; - buf_2 += rv_2; - size_2 -= rv_2; + callback_2.WaitForResult(rv_2); + CHECK_CALLBACK_BEHAVIOR(callback_2); + ASSERT_TRUE(callback_2.result() > 0); + read_offset_2 += callback_2.result(); + buf_2 += callback_2.result(); + size_2 -= callback_2.result(); } } - // If |size_1| or |size_2| is less than 0, we have invoked wrong - // callback(s). - if (size_1 < 0 || size_2 < 0) { - return std::string( - "Parallel FileIO::Read operations have invoked wrong callbacks."); - } + // If |size_1| or |size_2| is not 0, we have invoked wrong callback(s). + ASSERT_EQ(0, size_1); + ASSERT_EQ(0, size_2); // Make sure every read operation writes into the correct buffer. const char expected_result_1[] = "__border__abc__border__"; const char expected_result_2[] = "__border__defghijkl__border__"; - if (strncmp(&extended_buf_1[0], expected_result_1, - strlen(expected_result_1)) != 0 || - strncmp(&extended_buf_2[0], expected_result_2, - strlen(expected_result_2)) != 0) { - return std::string( - "Parallel FileIO::Read operations have written into wrong buffers."); - } - + ASSERT_TRUE(strncmp(&extended_buf_1[0], expected_result_1, + strlen(expected_result_1)) == 0); + ASSERT_TRUE(strncmp(&extended_buf_2[0], expected_result_2, + strlen(expected_result_2)) == 0); PASS(); } std::string TestFileIO::TestParallelWrites() { - TestCompletionCallback callback(instance_->pp_instance(), force_async_); + TestCompletionCallback callback(instance_->pp_instance(), callback_type()); pp::FileSystem file_system(instance_, PP_FILESYSTEMTYPE_LOCALTEMPORARY); pp::FileRef file_ref(file_system, "/file_parallel_writes"); - 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) - return ReportError("FileSystem::Open", rv); + callback.WaitForResult(file_system.Open(1024, callback)); + CHECK_CALLBACK_BEHAVIOR(callback); + ASSERT_EQ(PP_OK, callback.result()); pp::FileIO file_io(instance_); - rv = file_io.Open(file_ref, - PP_FILEOPENFLAG_CREATE | - PP_FILEOPENFLAG_TRUNCATE | - 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) - return ReportError("FileIO::Open", rv); + callback.WaitForResult(file_io.Open(file_ref, + PP_FILEOPENFLAG_CREATE | + PP_FILEOPENFLAG_TRUNCATE | + PP_FILEOPENFLAG_READ | + PP_FILEOPENFLAG_WRITE, + callback)); + CHECK_CALLBACK_BEHAVIOR(callback); + ASSERT_EQ(PP_OK, callback.result()); // Parallel write operations. - TestCompletionCallback callback_1(instance_->pp_instance(), force_async_); + TestCompletionCallback callback_1(instance_->pp_instance(), callback_type()); int32_t write_offset_1 = 0; const char* buf_1 = "abc"; int32_t size_1 = strlen(buf_1); - TestCompletionCallback callback_2(instance_->pp_instance(), force_async_); + TestCompletionCallback callback_2(instance_->pp_instance(), callback_type()); int32_t write_offset_2 = size_1; const char* buf_2 = "defghijkl"; int32_t size_2 = strlen(buf_2); @@ -974,227 +804,181 @@ std::string TestFileIO::TestParallelWrites() { int32_t rv_1 = PP_OK; int32_t rv_2 = PP_OK; while (size_1 >= 0 && size_2 >= 0 && size_1 + size_2 > 0) { - if (size_1 > 0) { + if (size_1 > 0) rv_1 = file_io.Write(write_offset_1, buf_1, size_1, callback_1); - if (rv_1 != PP_OK_COMPLETIONPENDING) - return ReportError("FileIO::Write", rv_1); - } - - if (size_2 > 0) { + if (size_2 > 0) rv_2 = file_io.Write(write_offset_2, buf_2, size_2, callback_2); - if (rv_2 != PP_OK_COMPLETIONPENDING) - return ReportError("FileIO::Write", rv_2); - } if (size_1 > 0) { - rv_1 = callback_1.WaitForResult(); - if (rv_1 <= 0) - return ReportError("FileIO::Write", rv_1); - write_offset_1 += rv_1; - buf_1 += rv_1; - size_1 -= rv_1; + callback_1.WaitForResult(rv_1); + CHECK_CALLBACK_BEHAVIOR(callback_1); + ASSERT_TRUE(callback_1.result() > 0); + write_offset_1 += callback_1.result(); + buf_1 += callback_1.result(); + size_1 -= callback_1.result(); } if (size_2 > 0) { - rv_2 = callback_2.WaitForResult(); - if (rv_2 <= 0) - return ReportError("FileIO::Write", rv_2); - write_offset_2 += rv_2; - buf_2 += rv_2; - size_2 -= rv_2; + callback_2.WaitForResult(rv_2); + CHECK_CALLBACK_BEHAVIOR(callback_2); + ASSERT_TRUE(callback_2.result() > 0); + write_offset_2 += callback_2.result(); + buf_2 += callback_2.result(); + size_2 -= callback_2.result(); } } - // If |size_1| or |size_2| is less than 0, we have invoked wrong - // callback(s). - if (size_1 < 0 || size_2 < 0) { - return std::string( - "Parallel FileIO::Write operations have invoked wrong callbacks."); - } + // If |size_1| or |size_2| is not 0, we have invoked wrong callback(s). + ASSERT_EQ(0, size_1); + ASSERT_EQ(0, size_2); // Check the file contents. std::string read_buffer; - rv = ReadEntireFile(instance_->pp_instance(), &file_io, 0, &read_buffer); - if (rv != PP_OK) - return ReportError("FileIO::Read", rv); - if (read_buffer != "abcdefghijkl") - return ReportMismatch("FileIO::Read", read_buffer, "abcdefghijkl"); + int32_t rv = ReadEntireFile(instance_->pp_instance(), &file_io, 0, + &read_buffer, callback_type()); + ASSERT_EQ(PP_OK, rv); + ASSERT_EQ(std::string("abcdefghijkl"), read_buffer); PASS(); } std::string TestFileIO::TestNotAllowMixedReadWrite() { - TestCompletionCallback callback(instance_->pp_instance(), force_async_); + if (callback_type() == PP_BLOCKING) { + // This test does not make sense for blocking callbacks. + PASS(); + } + TestCompletionCallback callback(instance_->pp_instance(), callback_type()); pp::FileSystem file_system(instance_, PP_FILESYSTEMTYPE_LOCALTEMPORARY); pp::FileRef file_ref(file_system, "/file_not_allow_mixed_read_write"); - 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) - return ReportError("FileSystem::Open", rv); + callback.WaitForResult(file_system.Open(1024, callback)); + CHECK_CALLBACK_BEHAVIOR(callback); + ASSERT_EQ(PP_OK, callback.result()); pp::FileIO file_io(instance_); - rv = file_io.Open(file_ref, - PP_FILEOPENFLAG_CREATE | - PP_FILEOPENFLAG_TRUNCATE | - 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) - return ReportError("FileIO::Open", rv); - - // Cannot read and write in parallel. - TestCompletionCallback callback_1(instance_->pp_instance(), force_async_); + callback.WaitForResult(file_io.Open(file_ref, + PP_FILEOPENFLAG_CREATE | + PP_FILEOPENFLAG_TRUNCATE | + PP_FILEOPENFLAG_READ | + PP_FILEOPENFLAG_WRITE, + callback)); + CHECK_CALLBACK_BEHAVIOR(callback); + ASSERT_EQ(PP_OK, callback.result()); + + TestCompletionCallback callback_1(instance_->pp_instance(), callback_type()); int32_t write_offset_1 = 0; const char* buf_1 = "mnopqrstuvw"; int32_t rv_1 = file_io.Write(write_offset_1, buf_1, strlen(buf_1), callback_1); - if (rv_1 != PP_OK_COMPLETIONPENDING) - return ReportError("FileIO::Write", rv_1); + ASSERT_EQ(PP_OK_COMPLETIONPENDING, rv_1); - TestCompletionCallback callback_2(instance_->pp_instance(), force_async_); + TestCompletionCallback callback_2(instance_->pp_instance(), callback_type()); int32_t read_offset_2 = 4; char buf_2[3]; - int32_t rv_2 = file_io.Read(read_offset_2, buf_2, sizeof(buf_2), - callback_2); - if (force_async_ && rv_2 != PP_OK_COMPLETIONPENDING) - return ReportError("FileIO::Read force_async", rv_2); - if (rv_2 == PP_OK_COMPLETIONPENDING) - rv_2 = callback_2.WaitForResult(); - if (rv_2 != PP_ERROR_INPROGRESS) - return ReportError("FileIO::Read", rv_2); - callback_1.WaitForResult(); + callback_2.WaitForResult(file_io.Read(read_offset_2, buf_2, sizeof(buf_2), + callback_2)); + CHECK_CALLBACK_BEHAVIOR(callback_2); + ASSERT_EQ(PP_ERROR_INPROGRESS, callback_2.result()); + callback_1.WaitForResult(rv_1); + CHECK_CALLBACK_BEHAVIOR(callback_1); // Cannot query while a write is pending. rv_1 = file_io.Write(write_offset_1, buf_1, strlen(buf_1), callback_1); ASSERT_EQ(PP_OK_COMPLETIONPENDING, rv_1); - TestCompletionCallback callback_3(instance_->pp_instance(), force_async_); PP_FileInfo info; - int32_t rv_3 = file_io.Query(&info, callback_3); - if (rv_3 == PP_OK_COMPLETIONPENDING) - rv_3 = callback_3.WaitForResult(); - if (rv_3 != PP_ERROR_INPROGRESS) - return ReportError("FileIO::Query", rv_3); - callback_1.WaitForResult(); + callback_2.WaitForResult(file_io.Query(&info, callback_2)); + CHECK_CALLBACK_BEHAVIOR(callback_2); + ASSERT_EQ(PP_ERROR_INPROGRESS, callback_2.result()); + callback_1.WaitForResult(rv_1); + CHECK_CALLBACK_BEHAVIOR(callback_1); // Cannot touch while a write is pending. rv_1 = file_io.Write(write_offset_1, buf_1, strlen(buf_1), callback_1); ASSERT_EQ(PP_OK_COMPLETIONPENDING, rv_1); - TestCompletionCallback callback_4(instance_->pp_instance(), force_async_); - int32_t rv_4 = file_io.Touch(1234.0, 5678.0, callback_4); - if (rv_4 == PP_OK_COMPLETIONPENDING) - rv_4 = callback_4.WaitForResult(); - if (rv_4 != PP_ERROR_INPROGRESS) - return ReportError("FileIO::Touch", rv_4); - callback_1.WaitForResult(); + callback_2.WaitForResult(file_io.Touch(1234.0, 5678.0, callback_2)); + CHECK_CALLBACK_BEHAVIOR(callback_2); + ASSERT_EQ(PP_ERROR_INPROGRESS, callback_2.result()); + callback_1.WaitForResult(rv_1); + CHECK_CALLBACK_BEHAVIOR(callback_1); // Cannot set length while a write is pending. rv_1 = file_io.Write(write_offset_1, buf_1, strlen(buf_1), callback_1); ASSERT_EQ(PP_OK_COMPLETIONPENDING, rv_1); - TestCompletionCallback callback_5(instance_->pp_instance(), force_async_); - int32_t rv_5 = file_io.SetLength(123, callback_5); - if (rv_5 == PP_OK_COMPLETIONPENDING) - rv_5 = callback_5.WaitForResult(); - if (rv_5 != PP_ERROR_INPROGRESS) - return ReportError("FileIO::SetLength", rv_5); - callback_1.WaitForResult(); + callback_2.WaitForResult(file_io.SetLength(123, callback_2)); + CHECK_CALLBACK_BEHAVIOR(callback_2); + ASSERT_EQ(PP_ERROR_INPROGRESS, callback_2.result()); + callback_1.WaitForResult(rv_1); + CHECK_CALLBACK_BEHAVIOR(callback_1); PASS(); } std::string TestFileIO::TestWillWriteWillSetLength() { - TestCompletionCallback callback(instance_->pp_instance(), force_async_); + TestCompletionCallback callback(instance_->pp_instance(), callback_type()); pp::FileSystem file_system(instance_, PP_FILESYSTEMTYPE_LOCALTEMPORARY); pp::FileRef file_ref(file_system, "/file_will_write"); - 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) - return ReportError("FileSystem::Open", rv); + callback.WaitForResult(file_system.Open(1024, callback)); + CHECK_CALLBACK_BEHAVIOR(callback); + ASSERT_EQ(PP_OK, callback.result()); pp::FileIO file_io(instance_); - rv = file_io.Open(file_ref, - PP_FILEOPENFLAG_CREATE | - PP_FILEOPENFLAG_TRUNCATE | - 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) - return ReportError("FileIO::Open", rv); + callback.WaitForResult(file_io.Open(file_ref, + PP_FILEOPENFLAG_CREATE | + PP_FILEOPENFLAG_TRUNCATE | + PP_FILEOPENFLAG_READ | + PP_FILEOPENFLAG_WRITE, + callback)); + CHECK_CALLBACK_BEHAVIOR(callback); + ASSERT_EQ(PP_OK, callback.result()); const PPB_FileIOTrusted* trusted = static_cast<const PPB_FileIOTrusted*>( pp::Module::Get()->GetBrowserInterface(PPB_FILEIOTRUSTED_INTERFACE)); - if (!trusted) - return ReportError("FileIOTrusted", PP_ERROR_FAILED); + ASSERT_TRUE(trusted); // Get file descriptor. This is only supported in-process for now, so don't // test out of process. const PPB_Testing_Dev* testing_interface = GetTestingInterface(); if (testing_interface && !testing_interface->IsOutOfProcess()) { int32_t fd = trusted->GetOSFileDescriptor(file_io.pp_resource()); - if (fd < 0) - return "FileIO::GetOSFileDescriptor() returned a bad file descriptor."; + ASSERT_TRUE(fd >= 0); } // Calling WillWrite. - rv = trusted->WillWrite( + callback.WaitForResult(trusted->WillWrite( file_io.pp_resource(), 0, 9, - static_cast<pp::CompletionCallback>(callback).pp_completion_callback()); - if (rv == PP_OK_COMPLETIONPENDING) - rv = callback.WaitForResult(); - if (rv != 9) - return ReportError("WillWrite", rv); + callback.GetCallback().pp_completion_callback())); + CHECK_CALLBACK_BEHAVIOR(callback); + ASSERT_EQ(9, callback.result()); // Writing the actual data. - rv = WriteEntireBuffer(instance_->pp_instance(), &file_io, 0, "test_test"); - if (rv != PP_OK) - return ReportError("FileIO::Write", rv); + int32_t rv = WriteEntireBuffer(instance_->pp_instance(), &file_io, 0, + "test_test", callback_type()); + ASSERT_EQ(PP_OK, rv); std::string read_buffer; - rv = ReadEntireFile(instance_->pp_instance(), &file_io, 0, &read_buffer); - if (rv != PP_OK) - return ReportError("FileIO::Read", rv); - if (read_buffer != "test_test") - return ReportMismatch("FileIO::Read", read_buffer, "test_test"); + rv = ReadEntireFile(instance_->pp_instance(), &file_io, 0, &read_buffer, + callback_type()); + ASSERT_EQ(PP_OK, rv); + ASSERT_EQ(std::string("test_test"), read_buffer); // Calling WillSetLength. - rv = trusted->WillSetLength( + callback.WaitForResult(trusted->WillSetLength( file_io.pp_resource(), 4, - static_cast<pp::CompletionCallback>(callback).pp_completion_callback()); - if (rv == PP_OK_COMPLETIONPENDING) - rv = callback.WaitForResult(); - if (rv != PP_OK) - return ReportError("WillSetLength", rv); + callback.GetCallback().pp_completion_callback())); + CHECK_CALLBACK_BEHAVIOR(callback); + ASSERT_EQ(PP_OK, rv); // Calling actual SetLength. - 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) - return ReportError("FileIO::SetLength", rv); + callback.WaitForResult(file_io.SetLength(4, callback)); + CHECK_CALLBACK_BEHAVIOR(callback); + ASSERT_EQ(PP_OK, rv); read_buffer.clear(); - rv = ReadEntireFile(instance_->pp_instance(), &file_io, 0, &read_buffer); - if (rv != PP_OK) - return ReportError("FileIO::Read", rv); - if (read_buffer != "test") - return ReportMismatch("FileIO::Read", read_buffer, "test"); + rv = ReadEntireFile(instance_->pp_instance(), &file_io, 0, &read_buffer, + callback_type()); + ASSERT_EQ(PP_OK, rv); + ASSERT_EQ(std::string("test"), read_buffer); PASS(); } @@ -1221,7 +1005,7 @@ std::string TestFileIO::MatchOpenExpectations(pp::FileSystem* file_system, bool open_if_exists = !!(expectations & OPEN_IF_EXISTS); bool truncate_if_exists = !!(expectations & TRUNCATE_IF_EXISTS); - TestCompletionCallback callback(instance_->pp_instance(), force_async_); + TestCompletionCallback callback(instance_->pp_instance(), callback_type()); pp::FileRef existent_file_ref( *file_system, "/match_open_expectation_existent_non_empty_file"); pp::FileRef nonexistent_file_ref( @@ -1229,72 +1013,53 @@ std::string TestFileIO::MatchOpenExpectations(pp::FileSystem* file_system, // 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) - return ReportError("FileRef::Delete", rv); + callback.WaitForResult(existent_file_ref.Delete(callback)); + CHECK_CALLBACK_BEHAVIOR(callback); + ASSERT_TRUE(callback.result() == PP_OK || + callback.result() == PP_ERROR_FILENOTFOUND); + callback.WaitForResult(nonexistent_file_ref.Delete(callback)); + CHECK_CALLBACK_BEHAVIOR(callback); + ASSERT_TRUE(callback.result() == PP_OK || + callback.result() == PP_ERROR_FILENOTFOUND); pp::FileIO existent_file_io(instance_); - 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) - return ReportError("FileIO::Open", rv); - - rv = WriteEntireBuffer(instance_->pp_instance(), &existent_file_io, 0, - "foobar"); - if (rv != PP_OK) - return ReportError("FileIO::Write", rv); + callback.WaitForResult(existent_file_io.Open( + existent_file_ref, + PP_FILEOPENFLAG_CREATE | PP_FILEOPENFLAG_WRITE, + callback)); + CHECK_CALLBACK_BEHAVIOR(callback); + ASSERT_EQ(PP_OK, callback.result()); + int32_t rv = WriteEntireBuffer(instance_->pp_instance(), &existent_file_io, + 0, "foobar", callback_type()); + ASSERT_EQ(PP_OK, rv); } pp::FileIO 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) || - (!invalid_combination && ((rv == PP_OK) != open_if_exists))) { + callback.WaitForResult(existent_file_io.Open(existent_file_ref, open_flags, + callback)); + CHECK_CALLBACK_BEHAVIOR(callback); + if ((invalid_combination && callback.result() == PP_OK) || + (!invalid_combination && + ((callback.result() == PP_OK) != open_if_exists))) { return ReportOpenError(open_flags); } if (!invalid_combination && open_if_exists) { PP_FileInfo 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) - return ReportError("FileIO::Query", rv); - + callback.WaitForResult(existent_file_io.Query(&info, callback)); + CHECK_CALLBACK_BEHAVIOR(callback); + ASSERT_EQ(PP_OK, callback.result()); if (truncate_if_exists != (info.size == 0)) return ReportOpenError(open_flags); } pp::FileIO 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) || - (!invalid_combination && ((rv == PP_OK) != create_if_doesnt_exist))) { + callback.WaitForResult(nonexistent_file_io.Open(nonexistent_file_ref, + open_flags, callback)); + CHECK_CALLBACK_BEHAVIOR(callback); + if ((invalid_combination && callback.result() == PP_OK) || + (!invalid_combination && + ((callback.result() == PP_OK) != create_if_doesnt_exist))) { return ReportOpenError(open_flags); } diff --git a/ppapi/tests/test_url_request.cc b/ppapi/tests/test_url_request.cc index 00e6d2e..fd904db 100644 --- a/ppapi/tests/test_url_request.cc +++ b/ppapi/tests/test_url_request.cc @@ -111,7 +111,7 @@ std::string TestURLRequest::TestCreateAndIsURLRequestInfo() { // IsURLRequestInfo: Released URLRequestInfo resource -> false. ppb_core_interface_->ReleaseResource(url_request); - ASSERT_NE(PP_TRUE, ppb_url_request_interface_->IsURLRequestInfo(url_request)) + ASSERT_NE(PP_TRUE, ppb_url_request_interface_->IsURLRequestInfo(url_request)); return error; // == PASS() if empty. } diff --git a/ppapi/tests/test_utils.h b/ppapi/tests/test_utils.h index 09e0b94..0869be6 100644 --- a/ppapi/tests/test_utils.h +++ b/ppapi/tests/test_utils.h @@ -178,14 +178,14 @@ class TestCompletionCallbackWithOutput : public TestCompletionCallback { explicit TestCompletionCallbackWithOutput(PP_Instance instance) : TestCompletionCallback(instance) { } - - TestCompletionCallbackWithOutput(PP_Instance instance, bool force_async) : - TestCompletionCallback(instance, force_async) { - } + // We purposely don't define a force_async constructor, since force_async + // is going away. TODO(dmichael): remove this comment with force_async. TestCompletionCallbackWithOutput(PP_Instance instance, CallbackType callback_type) : TestCompletionCallback(instance, callback_type) { + // Callbacks with output don't make sense for blocking calls. + PP_DCHECK(callback_type != PP_BLOCKING); } pp::CompletionCallbackWithOutput<OutputT> GetCallbackWithOutput(); @@ -203,14 +203,6 @@ template <typename OutputT> pp::CompletionCallbackWithOutput<OutputT> TestCompletionCallbackWithOutput<OutputT>::GetCallbackWithOutput() { Reset(); - if (callback_type_ == PP_BLOCKING) { - pp::CompletionCallbackWithOutput<OutputT> cc( - &TestCompletionCallback::Handler, - this, - &output_storage_); - return cc; - } - target_loop_ = pp::MessageLoop::GetCurrent(); pp::CompletionCallbackWithOutput<OutputT> cc( &TestCompletionCallback::Handler, diff --git a/ppapi/tests/test_websocket.cc b/ppapi/tests/test_websocket.cc index d5dc486..56d6d84 100644 --- a/ppapi/tests/test_websocket.cc +++ b/ppapi/tests/test_websocket.cc @@ -1350,7 +1350,7 @@ std::string TestWebSocket::TestUtilityValidClose() { ASSERT_EQ(PP_ERROR_INPROGRESS, result); websocket.WaitForClosed(); const std::vector<WebSocketEvent>& events = websocket.GetSeenEvents(); - ASSERT_TRUE(events.size() == 2 || events.size() == 3) + ASSERT_TRUE(events.size() == 2 || events.size() == 3); int index = 0; if (events.size() == 3) ASSERT_EQ(WebSocketEvent::EVENT_OPEN, events[index++].event_type); diff --git a/ppapi/thunk/enter.cc b/ppapi/thunk/enter.cc index 296a8b4..030b945 100644 --- a/ppapi/thunk/enter.cc +++ b/ppapi/thunk/enter.cc @@ -133,8 +133,8 @@ void EnterBase::SetStateForCallbackError(bool report_error) { // the plugin won't expect any return code other than // PP_OK_COMPLETIONPENDING. So we crash to make the problem more obvious. if (callback_->is_required()) { - std::string message("Attempted to use a required callback, but there" - "is no attached message loop on which to run the" + std::string message("Attempted to use a required callback, but there " + "is no attached message loop on which to run the " "callback."); PpapiGlobals::Get()->BroadcastLogWithSource(0, PP_LOGLEVEL_ERROR, std::string(), message); |