Index: ppapi/tests/test_url_loader.cc |
=================================================================== |
--- ppapi/tests/test_url_loader.cc (revision 82761) |
+++ ppapi/tests/test_url_loader.cc (working copy) |
@@ -51,18 +51,22 @@ |
RUN_TEST(SameOriginRestriction); |
RUN_TEST(CrossOriginRequest); |
RUN_TEST(StreamToFile); |
+ RUN_TEST(StreamToFileForceAsync); |
RUN_TEST(AuditURLRedirect); |
RUN_TEST(AbortCalls); |
} |
std::string TestURLLoader::ReadEntireFile(pp::FileIO_Dev* file_io, |
- std::string* data) { |
- TestCompletionCallback callback(instance_->pp_instance()); |
+ std::string* data, |
+ bool force_async) { |
+ TestCompletionCallback callback(instance_->pp_instance(), force_async); |
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", rv); |
if (rv == PP_OK_COMPLETIONPENDING) |
rv = callback.WaitForResult(); |
if (rv < 0) |
@@ -190,15 +194,17 @@ |
return LoadAndCompareBody(request, postdata); |
} |
-std::string TestURLLoader::TestStreamToFile() { |
+std::string TestURLLoader::StreamToFile(bool force_async) { |
pp::URLRequestInfo request; |
request.SetURL("test_url_loader_data/hello.txt"); |
request.SetStreamToFile(true); |
+ TestCompletionCallback callback(instance_->pp_instance(), force_async); |
- TestCompletionCallback callback(instance_->pp_instance()); |
- |
pp::URLLoader loader(*instance_); |
int32_t rv = loader.Open(request, callback); |
+ if (force_async && rv != PP_OK_COMPLETIONPENDING) |
+ // Why does triggering this crash the browser when testing manually? |
+ return ReportError("URLLoader::Open", rv); |
if (rv == PP_OK_COMPLETIONPENDING) |
rv = callback.WaitForResult(); |
if (rv != PP_OK) |
@@ -216,21 +222,24 @@ |
return "URLResponseInfo::GetBody returned null"; |
rv = loader.FinishStreamingToFile(callback); |
+ if (force_async && rv != PP_OK_COMPLETIONPENDING) |
+ return ReportError("URLLoader::FinishStreamingToFile", rv); |
if (rv == PP_OK_COMPLETIONPENDING) |
rv = callback.WaitForResult(); |
if (rv != PP_OK) |
return ReportError("URLLoader::FinishStreamingToFile", rv); |
- |
pp::FileIO_Dev reader; |
rv = reader.Open(body, PP_FILEOPENFLAG_READ, callback); |
+ if (force_async && rv != PP_OK_COMPLETIONPENDING) |
+ return ReportError("FileIO::Open", rv); |
if (rv == PP_OK_COMPLETIONPENDING) |
rv = callback.WaitForResult(); |
if (rv != PP_OK) |
return ReportError("FileIO::Open", rv); |
std::string data; |
- std::string error = ReadEntireFile(&reader, &data); |
+ std::string error = ReadEntireFile(&reader, &data, force_async); |
if (!error.empty()) |
return error; |
@@ -248,6 +257,14 @@ |
PASS(); |
} |
+std::string TestURLLoader::TestStreamToFile() { |
+ return StreamToFile(false); |
+} |
+ |
+std::string TestURLLoader::TestStreamToFileForceAsync() { |
+ return StreamToFile(true); |
+} |
+ |
std::string TestURLLoader::TestSameOriginRestriction() { |
pp::URLRequestInfo request; |
request.SetURL("http://www.google.com/"); |