1/* Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 * Use of this source code is governed by a BSD-style license that can be 3 * found in the LICENSE file. 4 */ 5 6/** 7 * This file defines the <code>PPB_URLRequestInfo</code> API for creating and 8 * manipulating URL requests. 9 */ 10 11[generate_thunk] 12 13label Chrome { 14 M14 = 1.0 15}; 16 17/** 18 * This enumeration contains properties that can be set on a URL request. 19 */ 20[assert_size(4)] 21enum PP_URLRequestProperty { 22 /** This corresponds to a string (<code>PP_VARTYPE_STRING</code>). */ 23 PP_URLREQUESTPROPERTY_URL = 0, 24 25 /** 26 * This corresponds to a string (<code>PP_VARTYPE_STRING</code>); either 27 * POST or GET. Refer to the 28 * <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html">HTTP 29 * Methods</a> documentation for further information. 30 * 31 */ 32 PP_URLREQUESTPROPERTY_METHOD = 1, 33 34 /** 35 * This corresponds to a string (<code>PP_VARTYPE_STRING</code>); \n 36 * delimited. Refer to the 37 * <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html"Header 38 * Field Definitions</a> documentation for further information. 39 */ 40 PP_URLREQUESTPROPERTY_HEADERS = 2, 41 42 /** 43 * This corresponds to a <code>PP_Bool</code> (<code>PP_VARTYPE_BOOL</code>; 44 * default=<code>PP_FALSE</code>). 45 * Set this value to <code>PP_TRUE</code> if you want to download the data 46 * to a file. Use PPB_URLLoader.FinishStreamingToFile() to complete the 47 * download. 48 */ 49 PP_URLREQUESTPROPERTY_STREAMTOFILE = 3, 50 51 /** 52 * This corresponds to a <code>PP_Bool</code> (<code>PP_VARTYPE_BOOL</code>; 53 * default=<code>PP_TRUE</code>). 54 * Set this value to <code>PP_FALSE</code> if you want to use 55 * PPB_URLLoader.FollowRedirects() to follow the redirects only after 56 * examining redirect headers. 57 */ 58 PP_URLREQUESTPROPERTY_FOLLOWREDIRECTS = 4, 59 60 /** 61 * This corresponds to a <code>PP_Bool</code> (<code>PP_VARTYPE_BOOL</code>; 62 * default=<code>PP_FALSE</code>). 63 * Set this value to <code>PP_TRUE</code> if you want to be able to poll the 64 * download progress using PPB_URLLoader.GetDownloadProgress(). 65 */ 66 PP_URLREQUESTPROPERTY_RECORDDOWNLOADPROGRESS = 5, 67 68 /** 69 * This corresponds to a <code>PP_Bool</code> 70 * (default=<code>PP_FALSE</code>). Set this value to <code>PP_TRUE</code> if 71 * you want to be able to poll the upload progress using 72 * PPB_URLLoader.GetUploadProgress(). 73 */ 74 PP_URLREQUESTPROPERTY_RECORDUPLOADPROGRESS = 6, 75 76 /** 77 * This corresponds to a string (<code>PP_VARTYPE_STRING)</code> or may be 78 * undefined (<code>PP_VARTYPE_UNDEFINED</code>; default). 79 * Set it to a string to set a custom referrer (if empty, the referrer header 80 * will be omitted), or to undefined to use the default referrer. Only loaders 81 * with universal access (only available on trusted implementations) will 82 * accept <code>URLRequestInfo</code> objects that try to set a custom 83 * referrer; if given to a loader without universal access, 84 * <code>PP_ERROR_NOACCESS</code> will result. 85 */ 86 PP_URLREQUESTPROPERTY_CUSTOMREFERRERURL = 7, 87 88 /** 89 * This corresponds to a <code>PP_Bool</code> (<code>PP_VARTYPE_BOOL</code>; 90 * default=<code>PP_FALSE</code>). Whether cross-origin requests are allowed. 91 * Cross-origin requests are made using the CORS (Cross-Origin Resource 92 * Sharing) algorithm to check whether the request should be allowed. For the 93 * complete CORS algorithm, refer to 94 * the <a href="http://www.w3.org/TR/access-control">Cross-Origin Resource 95 * Sharing</a> documentation. 96 */ 97 PP_URLREQUESTPROPERTY_ALLOWCROSSORIGINREQUESTS = 8, 98 99 /** 100 * This corresponds to a <code>PP_Bool</code> (<code>PP_VARTYPE_BOOL</code>; 101 * default=<code>PP_FALSE</code>). 102 * Whether HTTP credentials are sent with cross-origin requests. If false, 103 * no credentials are sent with the request and cookies are ignored in the 104 * response. If the request is not cross-origin, this property is ignored. 105 */ 106 PP_URLREQUESTPROPERTY_ALLOWCREDENTIALS = 9, 107 108 /** 109 * This corresponds to a string (<code>PP_VARTYPE_STRING</code>) or may be 110 * undefined (<code>PP_VARTYPE_UNDEFINED</code>; default). 111 * Set it to a string to set a custom content-transfer-encoding header (if 112 * empty, that header will be omitted), or to undefined to use the default 113 * (if any). Only loaders with universal access (only available on trusted 114 * implementations) will accept <code>URLRequestInfo</code> objects that try 115 * to set a custom content transfer encoding; if given to a loader without 116 * universal access, <code>PP_ERROR_NOACCESS</code> will result. 117 */ 118 PP_URLREQUESTPROPERTY_CUSTOMCONTENTTRANSFERENCODING = 10, 119 120 /** 121 * This corresponds to an integer (<code>PP_VARTYPE_INT32</code>); default 122 * is not defined and is set by the browser, possibly depending on system 123 * capabilities. Set it to an integer to set an upper threshold for the 124 * prefetched buffer of an asynchronous load. When exceeded, the browser will 125 * defer loading until 126 * <code>PP_URLREQUESTPROPERTY_PREFETCHBUFFERLOWERERTHRESHOLD</code> is hit, 127 * at which time it will begin prefetching again. When setting this property, 128 * <code>PP_URLREQUESTPROPERTY_PREFETCHBUFFERLOWERERTHRESHOLD</code> must also 129 * be set. Behavior is undefined if the former is <= the latter. 130 */ 131 PP_URLREQUESTPROPERTY_PREFETCHBUFFERUPPERTHRESHOLD = 11, 132 133 /** 134 * This corresponds to an integer (<code>PP_VARTYPE_INT32</code>); default is 135 * not defined and is set by the browser to a value appropriate for the 136 * default <code>PP_URLREQUESTPROPERTY_PREFETCHBUFFERUPPERTHRESHOLD</code>. 137 * Set it to an integer to set a lower threshold for the prefetched buffer 138 * of an asynchronous load. When reached, the browser will resume loading if 139 * If <code>PP_URLREQUESTPROPERTY_PREFETCHBUFFERLOWERERTHRESHOLD</code> had 140 * previously been reached. 141 * When setting this property, 142 * <code>PP_URLREQUESTPROPERTY_PREFETCHBUFFERUPPERTHRESHOLD</code> must also 143 * be set. Behavior is undefined if the former is >= the latter. 144 */ 145 PP_URLREQUESTPROPERTY_PREFETCHBUFFERLOWERTHRESHOLD = 12, 146 147 /** 148 * This corresponds to a string (<code>PP_VARTYPE_STRING</code>) or may be 149 * undefined (<code>PP_VARTYPE_UNDEFINED</code>; default). Set it to a string 150 * to set a custom user-agent header (if empty, that header will be omitted), 151 * or to undefined to use the default. Only loaders with universal access 152 * (only available on trusted implementations) will accept 153 * <code>URLRequestInfo</code> objects that try to set a custom user agent; if 154 * given to a loader without universal access, <code>PP_ERROR_NOACCESS</code> 155 * will result. 156 */ 157 PP_URLREQUESTPROPERTY_CUSTOMUSERAGENT = 13 158}; 159 160/** 161 * The <code>PPB_URLRequestInfo</code> interface is used to create 162 * and handle URL requests. This API is used in conjunction with 163 * <code>PPB_URLLoader</code>. Refer to <code>PPB_URLLoader</code> for further 164 * information. 165 */ 166interface PPB_URLRequestInfo { 167 /** 168 * Create() creates a new <code>URLRequestInfo</code> object. 169 * 170 * @param[in] instance A <code>PP_Instance</code> identifying one instance 171 * of a module. 172 * 173 * @return A <code>PP_Resource</code> identifying the 174 * <code>URLRequestInfo</code> if successful, 0 if the instance is invalid. 175 */ 176 PP_Resource Create( 177 [in] PP_Instance instance); 178 179 /** 180 * IsURLRequestInfo() determines if a resource is a 181 * <code>URLRequestInfo</code>. 182 * 183 * @param[in] resource A <code>PP_Resource</code> corresponding to a 184 * <code>URLRequestInfo</code>. 185 * 186 * @return <code>PP_TRUE</code> if the resource is a 187 * <code>URLRequestInfo</code>, <code>PP_FALSE</code> if the resource is 188 * invalid or some type other than <code>URLRequestInfo</code>. 189 */ 190 PP_Bool IsURLRequestInfo( 191 [in] PP_Resource resource); 192 193 /** 194 * SetProperty() sets a request property. The value of the property must be 195 * the correct type according to the property being set. 196 * 197 * @param[in] request A <code>PP_Resource</code> corresponding to a 198 * <code>URLRequestInfo</code>. 199 * @param[in] property A <code>PP_URLRequestProperty</code> identifying the 200 * property to set. 201 * @param[in] value A <code>PP_Var</code> containing the property value. 202 * 203 * @return <code>PP_TRUE</code> if successful, <code>PP_FALSE</code> if any 204 * of the parameters are invalid. 205 */ 206 PP_Bool SetProperty( 207 [in] PP_Resource request, 208 [in] PP_URLRequestProperty property, 209 [in] PP_Var value); 210 211 /** 212 * AppendDataToBody() appends data to the request body. A Content-Length 213 * request header will be automatically generated. 214 * 215 * @param[in] request A <code>PP_Resource</code> corresponding to a 216 * <code>URLRequestInfo</code>. 217 * @param[in] data A pointer to a buffer holding the data. 218 * @param[in] len The length, in bytes, of the data. 219 * 220 * @return <code>PP_TRUE</code> if successful, <code>PP_FALSE</code> if any 221 * of the parameters are invalid. 222 * 223 * 224 */ 225 PP_Bool AppendDataToBody( 226 [in] PP_Resource request, 227 [in] mem_t data, 228 [in] uint32_t len); 229 230 /** 231 * AppendFileToBody() appends a file, to be uploaded, to the request body. 232 * A content-length request header will be automatically generated. 233 * 234 * @param[in] request A <code>PP_Resource</code> corresponding to a 235 * <code>URLRequestInfo</code>. 236 * @param[in] file_ref A <code>PP_Resource</code> corresponding to a file 237 * reference. 238 * @param[in] start_offset An optional starting point offset within the 239 * file. 240 * @param[in] number_of_bytes An optional number of bytes of the file to 241 * be included. If <code>number_of_bytes</code> is -1, then the sub-range 242 * to upload extends to the end of the file. 243 * @param[in] expected_last_modified_time An optional (non-zero) last 244 * modified time stamp used to validate that the file was not modified since 245 * the given time before it was uploaded. The upload will fail with an error 246 * code of <code>PP_ERROR_FILECHANGED</code> if the file has been modified 247 * since the given time. If <code>expected_last_modified_time</code> is 0, 248 * then no validation is performed. 249 * 250 * @return <code>PP_TRUE</code> if successful, <code>PP_FALSE</code> if any 251 * of the parameters are invalid. 252 */ 253 PP_Bool AppendFileToBody( 254 [in] PP_Resource request, 255 [in] PP_Resource file_ref, 256 [in] int64_t start_offset, 257 [in] int64_t number_of_bytes, 258 [in] PP_Time expected_last_modified_time); 259}; 260 261