summaryrefslogtreecommitdiffstats
path: root/ppapi
diff options
context:
space:
mode:
authordmichael@chromium.org <dmichael@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-11 04:29:20 +0000
committerdmichael@chromium.org <dmichael@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-11 04:29:20 +0000
commitb469dedec774fcbaf0fbc1db0db607c0fe202f7c (patch)
treee8f78262a4bf748bbd7034f261ab981f69c45eea /ppapi
parent792b9b17fc2a2399062ff801ad4fc9814ad5f133 (diff)
downloadchromium_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.h7
-rw-r--r--ppapi/tests/test_file_io.cc1155
-rw-r--r--ppapi/tests/test_url_request.cc2
-rw-r--r--ppapi/tests/test_utils.h16
-rw-r--r--ppapi/tests/test_websocket.cc2
-rw-r--r--ppapi/thunk/enter.cc4
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);