Index: ppapi/proxy/ppb_url_loader_proxy.cc |
diff --git a/ppapi/proxy/ppb_url_loader_proxy.cc b/ppapi/proxy/ppb_url_loader_proxy.cc |
index c300bb98cee69941eb2f05f35e0a9e8a077daea4..575e130b166c3ff964b99fe8e3a84dea5df8936a 100644 |
--- a/ppapi/proxy/ppb_url_loader_proxy.cc |
+++ b/ppapi/proxy/ppb_url_loader_proxy.cc |
@@ -92,8 +92,8 @@ class URLLoader : public Resource, public PPB_URLLoader_API { |
// PPB_URLLoader_API implementation. |
virtual int32_t Open(PP_Resource request_id, |
- PP_CompletionCallback callback) OVERRIDE; |
- virtual int32_t FollowRedirect(PP_CompletionCallback callback) OVERRIDE; |
+ ApiCallbackType callback) OVERRIDE; |
+ virtual int32_t FollowRedirect(ApiCallbackType callback) OVERRIDE; |
virtual PP_Bool GetUploadProgress(int64_t* bytes_sent, |
int64_t* total_bytes_to_be_sent) OVERRIDE; |
virtual PP_Bool GetDownloadProgress( |
@@ -102,9 +102,9 @@ class URLLoader : public Resource, public PPB_URLLoader_API { |
virtual PP_Resource GetResponseInfo() OVERRIDE; |
virtual int32_t ReadResponseBody(void* buffer, |
int32_t bytes_to_read, |
- PP_CompletionCallback callback) OVERRIDE; |
+ ApiCallbackType callback) OVERRIDE; |
virtual int32_t FinishStreamingToFile( |
- PP_CompletionCallback callback) OVERRIDE; |
+ ApiCallbackType callback) OVERRIDE; |
virtual void Close() OVERRIDE; |
virtual void GrantUniversalAccess() OVERRIDE; |
virtual void SetStatusCallback( |
@@ -179,7 +179,7 @@ PPB_URLLoader_API* URLLoader::AsPPB_URLLoader_API() { |
} |
int32_t URLLoader::Open(PP_Resource request_id, |
- PP_CompletionCallback callback) { |
+ ApiCallbackType callback) { |
EnterResourceNoLock<thunk::PPB_URLRequestInfo_API> enter(request_id, true); |
if (enter.failed()) { |
Log(PP_LOGLEVEL_ERROR, "PPB_URLLoader.Open: The URL you're requesting is " |
@@ -192,22 +192,18 @@ int32_t URLLoader::Open(PP_Resource request_id, |
if (TrackedCallback::IsPending(current_callback_)) |
return PP_ERROR_INPROGRESS; |
- if (!callback.func) |
- return PP_ERROR_BLOCKS_MAIN_THREAD; |
- current_callback_ = new TrackedCallback(this, callback); |
+ current_callback_ = callback; |
GetDispatcher()->Send(new PpapiHostMsg_PPBURLLoader_Open( |
API_ID_PPB_URL_LOADER, host_resource(), enter.object()->GetData())); |
return PP_OK_COMPLETIONPENDING; |
} |
-int32_t URLLoader::FollowRedirect(PP_CompletionCallback callback) { |
+int32_t URLLoader::FollowRedirect(ApiCallbackType callback) { |
if (TrackedCallback::IsPending(current_callback_)) |
return PP_ERROR_INPROGRESS; |
- if (!callback.func) |
- return PP_ERROR_BLOCKS_MAIN_THREAD; |
- current_callback_ = new TrackedCallback(this, callback); |
+ current_callback_ = callback; |
GetDispatcher()->Send(new PpapiHostMsg_PPBURLLoader_FollowRedirect( |
API_ID_PPB_URL_LOADER, host_resource())); |
@@ -258,17 +254,12 @@ PP_Resource URLLoader::GetResponseInfo() { |
int32_t URLLoader::ReadResponseBody(void* buffer, |
int32_t bytes_to_read, |
- PP_CompletionCallback callback) { |
+ ApiCallbackType callback) { |
if (!buffer || bytes_to_read <= 0) |
return PP_ERROR_BADARGUMENT; // Must specify an output buffer. |
if (TrackedCallback::IsPending(current_callback_)) |
return PP_ERROR_INPROGRESS; // Can only have one request pending. |
- // Currently we don't support sync calls to read. We'll need to revisit |
- // how this works when we allow blocking calls (from background threads). |
- if (!callback.func) |
- return PP_ERROR_BADARGUMENT; |
- |
if (static_cast<size_t>(bytes_to_read) <= buffer_.size()) { |
// Special case: we've buffered enough data to be able to synchronously |
// return data to the caller. Do so without making IPCs. |
@@ -276,7 +267,7 @@ int32_t URLLoader::ReadResponseBody(void* buffer, |
return bytes_to_read; |
} |
- current_callback_ = new TrackedCallback(this, callback); |
+ current_callback_ = callback; |
current_read_buffer_ = buffer; |
current_read_buffer_size_ = bytes_to_read; |
@@ -285,13 +276,11 @@ int32_t URLLoader::ReadResponseBody(void* buffer, |
return PP_OK_COMPLETIONPENDING; |
} |
-int32_t URLLoader::FinishStreamingToFile(PP_CompletionCallback callback) { |
+int32_t URLLoader::FinishStreamingToFile(ApiCallbackType callback) { |
if (TrackedCallback::IsPending(current_callback_)) |
return PP_ERROR_INPROGRESS; |
- if (!callback.func) |
- return PP_ERROR_BLOCKS_MAIN_THREAD; |
- current_callback_ = new TrackedCallback(this, callback); |
+ current_callback_ = callback; |
GetDispatcher()->Send(new PpapiHostMsg_PPBURLLoader_FinishStreamingToFile( |
API_ID_PPB_URL_LOADER, host_resource())); |