/* Copyright (c) 2010 The Chromium Authors. All rights reserved. * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef PPAPI_C_PPB_URL_REQUEST_INFO_H_ #define PPAPI_C_PPB_URL_REQUEST_INFO_H_ #include "ppapi/c/pp_bool.h" #include "ppapi/c/pp_instance.h" #include "ppapi/c/pp_macros.h" #include "ppapi/c/pp_resource.h" #include "ppapi/c/pp_stdint.h" #include "ppapi/c/pp_time.h" struct PP_Var; /** * @file * Defines the API ... */ /** * * @addtogroup Enums * @{ */ typedef enum { PP_URLREQUESTPROPERTY_URL, // string PP_URLREQUESTPROPERTY_METHOD, // string PP_URLREQUESTPROPERTY_HEADERS, // string, \n-delim PP_URLREQUESTPROPERTY_STREAMTOFILE, // PP_Bool (default=PP_FALSE) PP_URLREQUESTPROPERTY_FOLLOWREDIRECTS, // PP_Bool (default=PP_TRUE) // Set to true if you want to be able to poll the download progress via the // URLLoader.GetDownloadProgress function. // // Boolean (default = PP_FALSE). PP_URLREQUESTPROPERTY_RECORDDOWNLOADPROGRESS, // Set to true if you want to be able to pull the upload progress via the // URLLoader.GetUploadProgress function. // // Boolean (default = PP_FALSE). PP_URLREQUESTPROPERTY_RECORDUPLOADPROGRESS, // Set to a String to set a custom referrer (if empty, the referrer header // will be omitted), or to an Undefined Var to use the default referrer. Only // loaders with universal access (only available on trusted implementations) // will accept URLRequestInfo objects which try to set a custom referrer; if // given to a loader without universal access, PP_ERROR_BADARGUMENT will // result. // // Undefined/String (default = Undefined) PP_URLREQUESTPROPERTY_CUSTOMREFERRERURL } PP_URLRequestProperty; PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_URLRequestProperty, 4); /** * @} */ #define PPB_URLREQUESTINFO_INTERFACE "PPB_URLRequestInfo;0.2" /** * * @addtogroup Interfaces * @{ */ struct PPB_URLRequestInfo { // Create a new URLRequestInfo object. Returns 0 if the module is invalid. PP_Resource (*Create)(PP_Instance instance); // Returns PP_TRUE if the given resource is an URLRequestInfo. Returns // PP_FALSE if the resource is invalid or some type other than an // URLRequestInfo. PP_Bool (*IsURLRequestInfo)(PP_Resource resource); // Sets a request property. Returns PP_FALSE if any of the parameters are // invalid, PP_TRUE on success. The value property must be the correct type // according to the property being set. PP_Bool (*SetProperty)(PP_Resource request, PP_URLRequestProperty property, struct PP_Var value); // Append data to the request body. // // A Content-Length request header will be automatically generated. // // Returns PP_FALSE if any of the parameters are invalid, PP_TRUE on success. PP_Bool (*AppendDataToBody)(PP_Resource request, const void* data, uint32_t len); // Append a file reference to be uploaded. // // A sub-range of the file starting from start_offset may be specified. If // number_of_bytes is -1, then the sub-range to upload extends to the end of // the file. // // An optional (non-zero) last modified time stamp may be provided, which // will be used to validate that the file was not modified since the given // time before it is uploaded. The upload will fail with an error code of // PP_Error_FileChanged if the file has been modified since the given time. // If expected_last_modified_time is 0, then no validation is performed. // // A Content-Length request header will be automatically generated. // // Returns PP_FALSE if any of the parameters are invalid, PP_TRUE on success. PP_Bool (*AppendFileToBody)(PP_Resource request, PP_Resource file_ref, int64_t start_offset, int64_t number_of_bytes, PP_Time expected_last_modified_time); }; /** * @} */ #endif /* PPAPI_C_PPB_URL_REQUEST_INFO_H_ */