• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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