Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(118)

Unified Diff: ppapi/tests/test_url_loader.cc

Issue 6899055: PPAPI: Force async callback invocation option. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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/");

Powered by Google App Engine
This is Rietveld 408576698