| 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/");
|
|
|