15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)/* From ppb_url_loader.idl modified Thu Mar 28 10:07:37 2013. */ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef PPAPI_C_PPB_URL_LOADER_H_ 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPAPI_C_PPB_URL_LOADER_H_ 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_bool.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_completion_callback.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_instance.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_macros.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_resource.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_stdint.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPB_URLLOADER_INTERFACE_1_0 "PPB_URLLoader;1.0" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPB_URLLOADER_INTERFACE PPB_URLLOADER_INTERFACE_1_0 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @file 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This file defines the <strong>PPB_URLLoader</strong> interface for loading 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * URLs. 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @addtogroup Interfaces 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @{ 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The <strong>PPB_URLLoader</strong> interface contains pointers to functions 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * for loading URLs. The typical steps for loading a URL are: 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * -# Call Create() to create a URLLoader object. 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * -# Create a <code>URLRequestInfo</code> object and set properties on it. 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Refer to <code>PPB_URLRequestInfo</code> for further information. 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * -# Call Open() with the <code>URLRequestInfo</code> as an argument. 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * -# When Open() completes, call GetResponseInfo() to examine the response 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * headers. Refer to <code>PPB_URLResponseInfo</code> for further information. 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * -# Call ReadResponseBody() to stream the data for the response. 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Alternatively, if <code>PP_URLREQUESTPROPERTY_STREAMTOFILE</code> was set on 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * the <code>URLRequestInfo</code> in step #2: 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * - Call FinishStreamingToFile(), after examining the response headers 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * (step #4), to wait for the downloaded file to be complete. 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * - Then, access the downloaded file using the GetBodyAsFileRef() function of 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * the <code>URLResponseInfo</code> returned in step #4. 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct PPB_URLLoader_1_0 { 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Create() creates a new <code>URLLoader</code> object. The 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>URLLoader</code> is associated with a particular instance, so that 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * any UI dialogs that need to be shown to the user can be positioned 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * relative to the window containing the instance. 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] instance A <code>PP_Instance</code> identifying one instance 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * of a module. 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return A <code>PP_Resource</code> corresponding to a URLLoader if 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * successful, 0 if the instance is invalid. 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Resource (*Create)(PP_Instance instance); 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * IsURLLoader() determines if a resource is an <code>URLLoader</code>. 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] resource A <code>PP_Resource</code> corresponding to a 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>URLLoader</code>. 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return <code>PP_TRUE</code> if the resource is a <code>URLLoader</code>, 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PP_FALSE</code> if the resource is invalid or some type other 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * than <code>URLLoader</code>. 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Bool (*IsURLLoader)(PP_Resource resource); 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Open() begins loading the <code>URLRequestInfo</code>. The operation 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * completes when response headers are received or when an error occurs. Use 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * GetResponseInfo() to access the response headers. 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] loader A <code>PP_Resource</code> corresponding to a 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>URLLoader</code>. 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] resource A <code>PP_Resource</code> corresponding to a 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>URLRequestInfo</code>. 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] callback A <code>PP_CompletionCallback</code> to run on 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * asynchronous completion of Open(). This callback will run when response 87c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * headers for the url are received or error occurred. This callback 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * will only run if Open() returns <code>PP_OK_COMPLETIONPENDING</code>. 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return An int32_t containing an error code from <code>pp_errors.h</code>. 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int32_t (*Open)(PP_Resource loader, 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Resource request_info, 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct PP_CompletionCallback callback); 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * FollowRedirect() can be invoked to follow a redirect after Open() 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * completed on receiving redirect headers. 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] loader A <code>PP_Resource</code> corresponding to a 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>URLLoader</code>. 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] callback A <code>PP_CompletionCallback</code> to run on 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * asynchronous completion of FollowRedirect(). This callback will run when 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * response headers for the redirect url are received or error occurred. This 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * callback will only run if FollowRedirect() returns 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PP_OK_COMPLETIONPENDING</code>. 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return An int32_t containing an error code from <code>pp_errors.h</code>. 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int32_t (*FollowRedirect)(PP_Resource loader, 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct PP_CompletionCallback callback); 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * GetUploadProgress() returns the current upload progress (which is 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * meaningful after Open() has been called). Progress only refers to the 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * request body and does not include the headers. 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This data is only available if the <code>URLRequestInfo</code> passed 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * to Open() had the <code>PP_URLREQUESTPROPERTY_REPORTUPLOADPROGRESS</code> 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * property set to PP_TRUE. 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] loader A <code>PP_Resource</code> corresponding to a 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>URLLoader</code>. 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] bytes_sent The number of bytes sent thus far. 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] total_bytes_to_be_sent The total number of bytes to be sent. 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return <code>PP_TRUE</code> if the upload progress is available, 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PP_FALSE</code> if it is not available. 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Bool (*GetUploadProgress)(PP_Resource loader, 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64_t* bytes_sent, 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64_t* total_bytes_to_be_sent); 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * GetDownloadProgress() returns the current download progress, which is 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * meaningful after Open() has been called. Progress only refers to the 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * response body and does not include the headers. 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This data is only available if the <code>URLRequestInfo</code> passed to 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Open() had the <code>PP_URLREQUESTPROPERTY_REPORTDOWNLOADPROGRESS</code> 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * property set to <code>PP_TRUE</code>. 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] loader A <code>PP_Resource</code> corresponding to a 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>URLLoader</code>. 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] bytes_received The number of bytes received thus far. 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] total_bytes_to_be_received The total number of bytes to be 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * received. The total bytes to be received may be unknown, in which case 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>total_bytes_to_be_received</code> will be set to -1. 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return <code>PP_TRUE</code> if the download progress is available, 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PP_FALSE</code> if it is not available. 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Bool (*GetDownloadProgress)(PP_Resource loader, 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64_t* bytes_received, 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64_t* total_bytes_to_be_received); 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * GetResponseInfo() returns the current <code>URLResponseInfo</code> object. 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] instance A <code>PP_Resource</code> corresponding to a 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>URLLoader</code>. 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return A <code>PP_Resource</code> corresponding to the 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>URLResponseInfo</code> if successful, 0 if the loader is not a valid 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * resource or if Open() has not been called. 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Resource (*GetResponseInfo)(PP_Resource loader); 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * ReadResponseBody() is used to read the response body. The size of the 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * buffer must be large enough to hold the specified number of bytes to read. 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This function might perform a partial read. 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] loader A <code>PP_Resource</code> corresponding to a 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>URLLoader</code>. 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in,out] buffer A pointer to the buffer for the response body. 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] bytes_to_read The number of bytes to read. 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] callback A <code>PP_CompletionCallback</code> to run on 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * asynchronous completion. The callback will run if the bytes (full or 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * partial) are read or an error occurs asynchronously. This callback will 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * run only if this function returns <code>PP_OK_COMPLETIONPENDING</code>. 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return An int32_t containing the number of bytes read or an error code 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * from <code>pp_errors.h</code>. 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int32_t (*ReadResponseBody)(PP_Resource loader, 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void* buffer, 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int32_t bytes_to_read, 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct PP_CompletionCallback callback); 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * FinishStreamingToFile() is used to wait for the response body to be 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * completely downloaded to the file provided by the GetBodyAsFileRef() 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * in the current <code>URLResponseInfo</code>. This function is only used if 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PP_URLREQUESTPROPERTY_STREAMTOFILE</code> was set on the 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>URLRequestInfo</code> passed to Open(). 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] loader A <code>PP_Resource</code> corresponding to a 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>URLLoader</code>. 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] callback A <code>PP_CompletionCallback</code> to run on 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * asynchronous completion. This callback will run when body is downloaded 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * or an error occurs after FinishStreamingToFile() returns 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PP_OK_COMPLETIONPENDING</code>. 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return An int32_t containing the number of bytes read or an error code 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * from <code>pp_errors.h</code>. 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int32_t (*FinishStreamingToFile)(PP_Resource loader, 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct PP_CompletionCallback callback); 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Close is a pointer to a function used to cancel any pending IO and close 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * the <code>URLLoader</code> object. Any pending callbacks will still run, 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * reporting <code>PP_ERROR_ABORTED</code> if pending IO was interrupted. 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * It is NOT valid to call Open() again after a call to this function. 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <strong>Note:</strong> If the <code>URLLoader</code> object is destroyed 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * while it is still open, then it will be implicitly closed so you are not 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * required to call Close(). 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] loader A <code>PP_Resource</code> corresponding to a 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>URLLoader</code>. 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void (*Close)(PP_Resource loader); 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct PPB_URLLoader_1_0 PPB_URLLoader; 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @} 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* PPAPI_C_PPB_URL_LOADER_H_ */ 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 227