Index: webkit/plugins/ppapi/ppb_url_loader_impl.cc |
=================================================================== |
--- webkit/plugins/ppapi/ppb_url_loader_impl.cc (revision 88104) |
+++ webkit/plugins/ppapi/ppb_url_loader_impl.cc (working copy) |
@@ -7,6 +7,7 @@ |
#include "base/logging.h" |
#include "ppapi/c/pp_completion_callback.h" |
#include "ppapi/c/pp_errors.h" |
+#include "ppapi/c/ppb_core.h" |
#include "ppapi/c/ppb_url_loader.h" |
#include "ppapi/c/trusted/ppb_url_loader_trusted.h" |
#include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h" |
@@ -66,14 +67,15 @@ |
scoped_refptr<PPB_URLLoader_Impl> loader( |
Resource::GetAs<PPB_URLLoader_Impl>(loader_id)); |
if (!loader) |
- return PP_ERROR_BADRESOURCE; |
+ return MayForceCallback(callback, PP_ERROR_BADRESOURCE); |
scoped_refptr<PPB_URLRequestInfo_Impl> request( |
Resource::GetAs<PPB_URLRequestInfo_Impl>(request_id)); |
if (!request) |
- return PP_ERROR_BADRESOURCE; |
+ return MayForceCallback(callback, PP_ERROR_BADRESOURCE); |
- return loader->Open(request, callback); |
+ int32_t result = loader->Open(request, callback); |
+ return MayForceCallback(callback, result); |
} |
int32_t FollowRedirect(PP_Resource loader_id, |
@@ -81,9 +83,10 @@ |
scoped_refptr<PPB_URLLoader_Impl> loader( |
Resource::GetAs<PPB_URLLoader_Impl>(loader_id)); |
if (!loader) |
- return PP_ERROR_BADRESOURCE; |
+ return MayForceCallback(callback, PP_ERROR_BADRESOURCE); |
- return loader->FollowRedirect(callback); |
+ int32_t result = loader->FollowRedirect(callback); |
+ return MayForceCallback(callback, result); |
} |
PP_Bool GetUploadProgress(PP_Resource loader_id, |
@@ -130,9 +133,10 @@ |
scoped_refptr<PPB_URLLoader_Impl> loader( |
Resource::GetAs<PPB_URLLoader_Impl>(loader_id)); |
if (!loader) |
- return PP_ERROR_BADRESOURCE; |
+ return MayForceCallback(callback, PP_ERROR_BADRESOURCE); |
- return loader->ReadResponseBody(buffer, bytes_to_read, callback); |
+ int32_t result = loader->ReadResponseBody(buffer, bytes_to_read, callback); |
+ return MayForceCallback(callback, result); |
} |
int32_t FinishStreamingToFile(PP_Resource loader_id, |
@@ -140,9 +144,10 @@ |
scoped_refptr<PPB_URLLoader_Impl> loader( |
Resource::GetAs<PPB_URLLoader_Impl>(loader_id)); |
if (!loader) |
- return PP_ERROR_BADRESOURCE; |
+ return MayForceCallback(callback, PP_ERROR_BADRESOURCE); |
- return loader->FinishStreamingToFile(callback); |
+ int32_t result = loader->FinishStreamingToFile(callback); |
+ return MayForceCallback(callback, result); |
} |
void Close(PP_Resource loader_id) { |
@@ -247,7 +252,7 @@ |
return rv; |
if (request->RequiresUniversalAccess() && !has_universal_access_) |
- return PP_ERROR_BADARGUMENT; |
+ return PP_ERROR_NOACCESS; |
if (loader_.get()) |
return PP_ERROR_INPROGRESS; |
@@ -255,7 +260,6 @@ |
WebFrame* frame = GetFrame(instance()); |
if (!frame) |
return PP_ERROR_FAILED; |
- WebURLRequest web_request(request->ToWebURLRequest(frame)); |
WebURLLoaderOptions options; |
if (has_universal_access_) { |
@@ -275,6 +279,7 @@ |
if (!loader_.get()) |
return PP_ERROR_FAILED; |
+ WebURLRequest web_request(request->ToWebURLRequest(frame)); |
loader_->loadAsynchronously(web_request, this); |
// Check for immediate failure; The AssociatedURLLoader will call our |
// didFail method synchronously for certain kinds of access violations |