| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ppapi/proxy/ppb_url_loader_proxy.h" | 5 #include "ppapi/proxy/ppb_url_loader_proxy.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <deque> | 8 #include <deque> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 499 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 510 // This heap object will get deleted by the callback handler. | 510 // This heap object will get deleted by the callback handler. |
| 511 // TODO(brettw) this will be leaked if the plugin closes the resource! | 511 // TODO(brettw) this will be leaked if the plugin closes the resource! |
| 512 // (Also including the plugin unloading and having the resource implicitly | 512 // (Also including the plugin unloading and having the resource implicitly |
| 513 // destroyed. Depending on the cleanup ordering, we may not need the weak | 513 // destroyed. Depending on the cleanup ordering, we may not need the weak |
| 514 // pointer here.) | 514 // pointer here.) |
| 515 ReadCallbackInfo* info = new ReadCallbackInfo; | 515 ReadCallbackInfo* info = new ReadCallbackInfo; |
| 516 info->resource = loader; | 516 info->resource = loader; |
| 517 // TODO(brettw) have a way to check for out-of-memory. | 517 // TODO(brettw) have a way to check for out-of-memory. |
| 518 info->read_buffer.resize(bytes_to_read); | 518 info->read_buffer.resize(bytes_to_read); |
| 519 | 519 |
| 520 CompletionCallback callback = callback_factory_.NewOptionalCallback( | 520 EnterHostFromHostResourceForceCallback<PPB_URLLoader_API> enter( |
| 521 &PPB_URLLoader_Proxy::OnReadCallback, info); | 521 loader, callback_factory_, &PPB_URLLoader_Proxy::OnReadCallback, info); |
| 522 | |
| 523 EnterHostFromHostResource<PPB_URLLoader_API> enter(loader); | |
| 524 int32_t result = PP_ERROR_BADRESOURCE; | |
| 525 if (enter.succeeded()) { | 522 if (enter.succeeded()) { |
| 526 result = enter.object()->ReadResponseBody( | 523 enter.SetResult(enter.object()->ReadResponseBody( |
| 527 const_cast<char*>(info->read_buffer.c_str()), | 524 const_cast<char*>(info->read_buffer.c_str()), |
| 528 bytes_to_read, callback.pp_completion_callback()); | 525 bytes_to_read, enter.callback())); |
| 529 } | |
| 530 if (result != PP_OK_COMPLETIONPENDING) { | |
| 531 // Send error (or perhaps success for synchronous reads) back to plugin. | |
| 532 // The callback function is already set up to do this and also delete the | |
| 533 // callback info. | |
| 534 callback.Run(result); | |
| 535 } | 526 } |
| 536 } | 527 } |
| 537 | 528 |
| 538 void PPB_URLLoader_Proxy::OnMsgFinishStreamingToFile( | 529 void PPB_URLLoader_Proxy::OnMsgFinishStreamingToFile( |
| 539 const HostResource& loader, | 530 const HostResource& loader, |
| 540 uint32_t serialized_callback) { | 531 uint32_t serialized_callback) { |
| 541 EnterHostFromHostResource<PPB_URLLoader_API> enter(loader); | 532 EnterHostFromHostResource<PPB_URLLoader_API> enter(loader); |
| 542 PP_CompletionCallback callback = ReceiveCallback(serialized_callback); | 533 PP_CompletionCallback callback = ReceiveCallback(serialized_callback); |
| 543 int32_t result = PP_ERROR_BADRESOURCE; | 534 int32_t result = PP_ERROR_BADRESOURCE; |
| 544 if (enter.succeeded()) | 535 if (enter.succeeded()) |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 586 info->read_buffer.resize(bytes_read); | 577 info->read_buffer.resize(bytes_read); |
| 587 | 578 |
| 588 dispatcher()->Send(new PpapiMsg_PPBURLLoader_ReadResponseBody_Ack( | 579 dispatcher()->Send(new PpapiMsg_PPBURLLoader_ReadResponseBody_Ack( |
| 589 INTERFACE_ID_PPB_URL_LOADER, info->resource, result, info->read_buffer)); | 580 INTERFACE_ID_PPB_URL_LOADER, info->resource, result, info->read_buffer)); |
| 590 | 581 |
| 591 delete info; | 582 delete info; |
| 592 } | 583 } |
| 593 | 584 |
| 594 } // namespace proxy | 585 } // namespace proxy |
| 595 } // namespace pp | 586 } // namespace pp |
| OLD | NEW |