Index: ppapi/tests/test_url_loader.cc |
diff --git a/ppapi/tests/test_url_loader.cc b/ppapi/tests/test_url_loader.cc |
index 984fee082ddb4cfc3c9ddce6e6621ffade4dfece..15ea546b73a48794668f11a41de3bb4f9a6c6ca2 100644 |
--- a/ppapi/tests/test_url_loader.cc |
+++ b/ppapi/tests/test_url_loader.cc |
@@ -40,15 +40,15 @@ int32_t WriteEntireBuffer(PP_Instance instance, |
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; |
@@ -122,22 +122,18 @@ void TestURLLoader::RunTests(const std::string& filter) { |
std::string TestURLLoader::ReadEntireFile(pp::FileIO* file_io, |
std::string* data) { |
- TestCompletionCallback callback(instance_->pp_instance(), force_async_); |
+ TestCompletionCallback callback(instance_->pp_instance(), callback_type()); |
char buf[256]; |
int64_t offset = 0; |
for (;;) { |
- int32_t rv = file_io->Read(offset, buf, sizeof(buf), callback); |
- if (force_async_ && rv != PP_OK_COMPLETIONPENDING) |
- return ReportError("FileIO::Read force_async", rv); |
- if (rv == PP_OK_COMPLETIONPENDING) |
- rv = callback.WaitForResult(); |
- if (rv < 0) |
- return ReportError("FileIO::Read", rv); |
- if (rv == 0) |
+ callback.WaitForResult(file_io->Read(offset, buf, sizeof(buf), callback)); |
+ if (callback.result() < 0) |
+ return ReportError("FileIO::Read", callback.result()); |
+ if (callback.result() == 0) |
break; |
- offset += rv; |
- data->append(buf, rv); |
+ offset += callback.result(); |
+ data->append(buf, callback.result()); |
} |
PASS(); |
@@ -145,20 +141,17 @@ std::string TestURLLoader::ReadEntireFile(pp::FileIO* file_io, |
std::string TestURLLoader::ReadEntireResponseBody(pp::URLLoader* loader, |
std::string* body) { |
- TestCompletionCallback callback(instance_->pp_instance(), force_async_); |
+ TestCompletionCallback callback(instance_->pp_instance(), callback_type()); |
char buf[2]; // Small so that multiple reads are needed. |
for (;;) { |
- int32_t rv = loader->ReadResponseBody(buf, sizeof(buf), callback); |
- if (force_async_ && rv != PP_OK_COMPLETIONPENDING) |
- return ReportError("URLLoader::ReadResponseBody force_async", rv); |
- if (rv == PP_OK_COMPLETIONPENDING) |
- rv = callback.WaitForResult(); |
- if (rv < 0) |
- return ReportError("URLLoader::ReadResponseBody", rv); |
- if (rv == 0) |
+ callback.WaitForResult( |
+ loader->ReadResponseBody(buf, sizeof(buf), callback)); |
+ if (callback.result() < 0) |
+ return ReportError("URLLoader::ReadResponseBody", callback.result()); |
+ if (callback.result() == 0) |
break; |
- body->append(buf, rv); |
+ body->append(buf, callback.result()); |
} |
PASS(); |
@@ -167,16 +160,12 @@ std::string TestURLLoader::ReadEntireResponseBody(pp::URLLoader* loader, |
std::string TestURLLoader::LoadAndCompareBody( |
const pp::URLRequestInfo& request, |
const std::string& expected_body) { |
- TestCompletionCallback callback(instance_->pp_instance(), force_async_); |
+ TestCompletionCallback callback(instance_->pp_instance(), callback_type()); |
pp::URLLoader loader(instance_); |
- int32_t rv = loader.Open(request, callback); |
- if (force_async_ && rv != PP_OK_COMPLETIONPENDING) |
- return ReportError("URLLoader::Open force_async", rv); |
- if (rv == PP_OK_COMPLETIONPENDING) |
- rv = callback.WaitForResult(); |
- if (rv != PP_OK) |
- return ReportError("URLLoader::Open", rv); |
+ callback.WaitForResult(loader.Open(request, callback)); |
+ CHECK_CALLBACK_BEHAVIOR(callback); |
+ ASSERT_EQ(PP_OK, callback.result()); |
pp::URLResponseInfo response_info(loader.GetResponseInfo()); |
if (response_info.is_null()) |
@@ -200,46 +189,42 @@ std::string TestURLLoader::LoadAndCompareBody( |
int32_t TestURLLoader::OpenFileSystem(pp::FileSystem* file_system, |
std::string* message) { |
- TestCompletionCallback callback(instance_->pp_instance(), force_async_); |
- int32_t rv = file_system->Open(1024, callback); |
- if (force_async_ && rv != PP_OK_COMPLETIONPENDING) { |
- message->assign("FileSystem::Open force_async"); |
- return rv; |
+ TestCompletionCallback callback(instance_->pp_instance(), callback_type()); |
+ callback.WaitForResult(file_system->Open(1024, callback)); |
+ if (callback.failed()) { |
+ message->assign(callback.errors()); |
+ return callback.result(); |
} |
- if (rv == PP_OK_COMPLETIONPENDING) |
- rv = callback.WaitForResult(); |
- if (rv != PP_OK) { |
+ if (callback.result() != PP_OK) { |
message->assign("FileSystem::Open"); |
- return rv; |
+ return callback.result(); |
} |
- return rv; |
+ return callback.result(); |
} |
int32_t TestURLLoader::PrepareFileForPost( |
const pp::FileRef& file_ref, |
const std::string& data, |
std::string* message) { |
- TestCompletionCallback callback(instance_->pp_instance(), force_async_); |
+ TestCompletionCallback callback(instance_->pp_instance(), callback_type()); |
pp::FileIO file_io(instance_); |
- int32_t rv = file_io.Open(file_ref, |
- PP_FILEOPENFLAG_CREATE | |
- PP_FILEOPENFLAG_TRUNCATE | |
- PP_FILEOPENFLAG_WRITE, |
- callback); |
- if (force_async_ && rv != PP_OK_COMPLETIONPENDING) { |
- message->assign("FileIO::Open force_async"); |
- return rv; |
+ callback.WaitForResult(file_io.Open(file_ref, |
+ PP_FILEOPENFLAG_CREATE | |
+ PP_FILEOPENFLAG_TRUNCATE | |
+ PP_FILEOPENFLAG_WRITE, |
+ callback)); |
+ if (callback.failed()) { |
+ message->assign(callback.errors()); |
+ return callback.result(); |
} |
- if (rv == PP_OK_COMPLETIONPENDING) |
- rv = callback.WaitForResult(); |
- if (rv != PP_OK) { |
- message->assign("FileIO::Open"); |
- return rv; |
+ if (callback.result() != PP_OK) { |
+ message->assign("FileIO::Open failed."); |
+ return callback.result(); |
} |
- rv = WriteEntireBuffer(instance_->pp_instance(), &file_io, 0, data); |
+ int32_t rv = WriteEntireBuffer(instance_->pp_instance(), &file_io, 0, data); |
if (rv != PP_OK) { |
- message->assign("FileIO::Write"); |
+ message->assign("FileIO::Write failed."); |
return rv; |
} |
@@ -309,15 +294,9 @@ int32_t TestURLLoader::Open(const pp::URLRequestInfo& request, |
pp::URLLoader loader(instance_); |
if (trusted) |
url_loader_trusted_interface_->GrantUniversalAccess(loader.pp_resource()); |
- TestCompletionCallback callback(instance_->pp_instance(), force_async_); |
- int32_t rv = loader.Open(request, callback); |
- |
- if (rv == PP_OK_COMPLETIONPENDING) |
- rv = callback.WaitForResult(); |
- else if (force_async_) |
- ReportError("URLLoader::Open force_async", rv); |
- |
- return rv; |
+ TestCompletionCallback callback(instance_->pp_instance(), callback_type()); |
+ callback.WaitForResult(loader.Open(request, callback)); |
+ return callback.result(); |
} |
std::string TestURLLoader::TestBasicGET() { |
@@ -437,16 +416,12 @@ std::string TestURLLoader::TestStreamToFile() { |
request.SetURL("test_url_loader_data/hello.txt"); |
request.SetStreamToFile(true); |
- TestCompletionCallback callback(instance_->pp_instance(), force_async_); |
+ TestCompletionCallback callback(instance_->pp_instance(), callback_type()); |
pp::URLLoader loader(instance_); |
- int32_t rv = loader.Open(request, callback); |
- if (force_async_ && rv != PP_OK_COMPLETIONPENDING) |
- return ReportError("URLLoader::Open force_async", rv); |
- if (rv == PP_OK_COMPLETIONPENDING) |
- rv = callback.WaitForResult(); |
- if (rv != PP_OK) |
- return ReportError("URLLoader::Open", rv); |
+ callback.WaitForResult(loader.Open(request, callback)); |
+ CHECK_CALLBACK_BEHAVIOR(callback); |
+ ASSERT_EQ(PP_OK, callback.result()); |
pp::URLResponseInfo response_info(loader.GetResponseInfo()); |
if (response_info.is_null()) |
@@ -459,23 +434,14 @@ std::string TestURLLoader::TestStreamToFile() { |
if (body.is_null()) |
return "URLResponseInfo::GetBody returned null"; |
- rv = loader.FinishStreamingToFile(callback); |
- if (force_async_ && rv != PP_OK_COMPLETIONPENDING) |
- return ReportError("URLLoader::FinishStreamingToFile force_async", rv); |
- if (rv == PP_OK_COMPLETIONPENDING) |
- rv = callback.WaitForResult(); |
- if (rv != PP_OK) |
- return ReportError("URLLoader::FinishStreamingToFile", rv); |
+ callback.WaitForResult(loader.FinishStreamingToFile(callback)); |
+ CHECK_CALLBACK_BEHAVIOR(callback); |
+ ASSERT_EQ(PP_OK, callback.result()); |
- // FileIO is not yet supported by ppapi/proxy. |
pp::FileIO reader(instance_); |
- rv = reader.Open(body, 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.WaitForResult(reader.Open(body, PP_FILEOPENFLAG_READ, callback)); |
+ CHECK_CALLBACK_BEHAVIOR(callback); |
+ ASSERT_EQ(PP_OK, callback.result()); |
std::string data; |
std::string error = ReadEntireFile(&reader, &data); |
@@ -726,16 +692,12 @@ std::string TestURLLoader::TestAuditURLRedirect() { |
request.SetURL(redirect_prefix.append(redirect_url)); |
request.SetFollowRedirects(false); |
- TestCompletionCallback callback(instance_->pp_instance(), force_async_); |
+ TestCompletionCallback callback(instance_->pp_instance(), callback_type()); |
pp::URLLoader loader(instance_); |
- int32_t rv = loader.Open(request, callback); |
- if (force_async_ && rv != PP_OK_COMPLETIONPENDING) |
- return ReportError("URLLoader::Open force_async", rv); |
- if (rv == PP_OK_COMPLETIONPENDING) |
- rv = callback.WaitForResult(); |
- if (rv != PP_OK) |
- return ReportError("URLLoader::Open", rv); |
+ callback.WaitForResult(loader.Open(request, callback)); |
+ CHECK_CALLBACK_BEHAVIOR(callback); |
+ ASSERT_EQ(PP_OK, callback.result()); |
// Checks that the response indicates a redirect, and that the URL |
// is correct. |
@@ -747,15 +709,9 @@ std::string TestURLLoader::TestAuditURLRedirect() { |
return "Response status should be 301"; |
// Test that the paused loader can be resumed. |
- TestCompletionCallback redirect_callback(instance_->pp_instance(), |
- force_async_); |
- rv = loader.FollowRedirect(redirect_callback); |
- if (force_async_ && rv != PP_OK_COMPLETIONPENDING) |
- return ReportError("URLLoader::FollowRedirect force_async", rv); |
- if (rv == PP_OK_COMPLETIONPENDING) |
- rv = redirect_callback.WaitForResult(); |
- if (rv != PP_OK) |
- return ReportError("URLLoader::FollowRedirect", rv); |
+ callback.WaitForResult(loader.FollowRedirect(callback)); |
+ CHECK_CALLBACK_BEHAVIOR(callback); |
+ ASSERT_EQ(PP_OK, callback.result()); |
std::string body; |
std::string error = ReadEntireResponseBody(&loader, &body); |
if (!error.empty()) |
@@ -771,56 +727,34 @@ std::string TestURLLoader::TestAbortCalls() { |
pp::URLRequestInfo request(instance_); |
request.SetURL("test_url_loader_data/hello.txt"); |
- TestCompletionCallback callback(instance_->pp_instance(), force_async_); |
+ TestCompletionCallback callback(instance_->pp_instance(), callback_type()); |
int32_t rv; |
// Abort |Open()|. |
{ |
- callback.reset_run_count(); |
rv = pp::URLLoader(instance_).Open(request, callback); |
- if (force_async_ && rv != PP_OK_COMPLETIONPENDING) |
- return ReportError("URLLoader::Open force_async", rv); |
- if (callback.run_count() > 0) |
- return "URLLoader::Open ran callback synchronously."; |
- if (rv == PP_OK_COMPLETIONPENDING) { |
- rv = callback.WaitForResult(); |
- if (rv != PP_ERROR_ABORTED) |
- return "URLLoader::Open not aborted."; |
- } else if (rv != PP_OK) { |
- return ReportError("URLLoader::Open", rv); |
- } |
} |
+ callback.WaitForAbortResult(rv); |
+ CHECK_CALLBACK_BEHAVIOR(callback); |
// Abort |ReadResponseBody()|. |
{ |
char buf[2] = { 0 }; |
{ |
pp::URLLoader loader(instance_); |
- rv = loader.Open(request, callback); |
- if (force_async_ && rv != PP_OK_COMPLETIONPENDING) |
- return ReportError("URLLoader::Open force_async", rv); |
- if (rv == PP_OK_COMPLETIONPENDING) |
- rv = callback.WaitForResult(); |
- if (rv != PP_OK) |
- return ReportError("URLLoader::Open", rv); |
- |
- callback.reset_run_count(); |
+ callback.WaitForResult(loader.Open(request, callback)); |
+ CHECK_CALLBACK_BEHAVIOR(callback); |
+ ASSERT_EQ(PP_OK, callback.result()); |
+ |
rv = loader.ReadResponseBody(buf, sizeof(buf), callback); |
- if (force_async_ && rv != PP_OK_COMPLETIONPENDING) |
- return ReportError("URLLoader::ReadResponseBody force_async", rv); |
} // Destroy |loader|. |
+ callback.WaitForAbortResult(rv); |
+ CHECK_CALLBACK_BEHAVIOR(callback); |
if (rv == PP_OK_COMPLETIONPENDING) { |
- // Save a copy and make sure |buf| doesn't get written to. |
- char buf_copy[2]; |
- memcpy(&buf_copy, &buf, sizeof(buf)); |
- rv = callback.WaitForResult(); |
- if (rv != PP_ERROR_ABORTED) |
- return "URLLoader::ReadResponseBody not aborted."; |
- if (memcmp(&buf_copy, &buf, sizeof(buf)) != 0) |
+ if (buf[0] || buf[1]) { |
return "URLLoader::ReadResponseBody wrote data after resource " |
"destruction."; |
- } else if (rv != PP_OK) { |
- return ReportError("URLLoader::ReadResponseBody", rv); |
+ } |
} |
} |
@@ -834,16 +768,12 @@ std::string TestURLLoader::TestUntendedLoad() { |
pp::URLRequestInfo request(instance_); |
request.SetURL("test_url_loader_data/hello.txt"); |
request.SetRecordDownloadProgress(true); |
- TestCompletionCallback callback(instance_->pp_instance(), force_async_); |
+ TestCompletionCallback callback(instance_->pp_instance(), callback_type()); |
pp::URLLoader loader(instance_); |
- int32_t rv = loader.Open(request, callback); |
- if (force_async_ && rv != PP_OK_COMPLETIONPENDING) |
- return ReportError("URLLoader::Open force_async", rv); |
- if (rv == PP_OK_COMPLETIONPENDING) |
- rv = callback.WaitForResult(); |
- if (rv != PP_OK) |
- return ReportError("URLLoader::Open", rv); |
+ callback.WaitForResult(loader.Open(request, callback)); |
+ CHECK_CALLBACK_BEHAVIOR(callback); |
+ ASSERT_EQ(PP_OK, callback.result()); |
// We received the response callback. Yield until the network code has called |
// the loader's didReceiveData and didFinishLoading methods before we give it |
@@ -867,7 +797,7 @@ std::string TestURLLoader::TestUntendedLoad() { |
if (!error.empty()) |
return error; |
if (body != "hello\n") |
- return ReportError("Couldn't read data", rv); |
+ return ReportError("Couldn't read data", callback.result()); |
PASS(); |
} |