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_request_info.idl modified Thu Mar 28 10:19:35 2013. */
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef PPAPI_C_PPB_URL_REQUEST_INFO_H_
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPAPI_C_PPB_URL_REQUEST_INFO_H_
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_bool.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_instance.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_macros.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_resource.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_stdint.h"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_time.h"
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_var.h"
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPB_URLREQUESTINFO_INTERFACE_1_0 "PPB_URLRequestInfo;1.0"
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPB_URLREQUESTINFO_INTERFACE PPB_URLREQUESTINFO_INTERFACE_1_0
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @file
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This file defines the <code>PPB_URLRequestInfo</code> API for creating and
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * manipulating URL requests.
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @addtogroup Enums
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @{
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This enumeration contains properties that can be set on a URL request.
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef enum {
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /** This corresponds to a string (<code>PP_VARTYPE_STRING</code>). */
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_URLREQUESTPROPERTY_URL = 0,
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * This corresponds to a string (<code>PP_VARTYPE_STRING</code>); either
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * POST or GET. Refer to the
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html">HTTP
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Methods</a> documentation for further information.
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_URLREQUESTPROPERTY_METHOD = 1,
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * This corresponds to a string (<code>PP_VARTYPE_STRING</code>); \n
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * delimited. Refer to the
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html"Header
51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)   * Field Definitions</a> documentation for further information.
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_URLREQUESTPROPERTY_HEADERS = 2,
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * This corresponds to a <code>PP_Bool</code> (<code>PP_VARTYPE_BOOL</code>;
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * default=<code>PP_FALSE</code>).
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Set this value to <code>PP_TRUE</code> if you want to download the data
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * to a file. Use PPB_URLLoader.FinishStreamingToFile() to complete the
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * download.
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_URLREQUESTPROPERTY_STREAMTOFILE = 3,
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * This corresponds to a <code>PP_Bool</code> (<code>PP_VARTYPE_BOOL</code>;
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * default=<code>PP_TRUE</code>).
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Set this value to <code>PP_FALSE</code> if you want to use
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * PPB_URLLoader.FollowRedirects() to follow the redirects only after
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * examining redirect headers.
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_URLREQUESTPROPERTY_FOLLOWREDIRECTS = 4,
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * This corresponds to a <code>PP_Bool</code> (<code>PP_VARTYPE_BOOL</code>;
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * default=<code>PP_FALSE</code>).
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Set this value to <code>PP_TRUE</code> if you want to be able to poll the
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * download progress using PPB_URLLoader.GetDownloadProgress().
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_URLREQUESTPROPERTY_RECORDDOWNLOADPROGRESS = 5,
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * This corresponds to a <code>PP_Bool</code>
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * (default=<code>PP_FALSE</code>). Set this value to <code>PP_TRUE</code> if
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * you want to be able to poll the upload progress using
81c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)   * PPB_URLLoader.GetUploadProgress().
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_URLREQUESTPROPERTY_RECORDUPLOADPROGRESS = 6,
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * This corresponds to a string (<code>PP_VARTYPE_STRING)</code> or may be
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * undefined (<code>PP_VARTYPE_UNDEFINED</code>; default).
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Set it to a string to set a custom referrer (if empty, the referrer header
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * will be omitted), or to undefined to use the default referrer. Only loaders
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * with universal access (only available on trusted implementations) will
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * accept <code>URLRequestInfo</code> objects that try to set a custom
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * referrer; if given to a loader without universal access,
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <code>PP_ERROR_NOACCESS</code> will result.
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_URLREQUESTPROPERTY_CUSTOMREFERRERURL = 7,
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * This corresponds to a <code>PP_Bool</code> (<code>PP_VARTYPE_BOOL</code>;
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * default=<code>PP_FALSE</code>). Whether cross-origin requests are allowed.
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Cross-origin requests are made using the CORS (Cross-Origin Resource
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Sharing) algorithm to check whether the request should be allowed. For the
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * complete CORS algorithm, refer to
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * the <a href="http://www.w3.org/TR/access-control">Cross-Origin Resource
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Sharing</a> documentation.
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_URLREQUESTPROPERTY_ALLOWCROSSORIGINREQUESTS = 8,
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * This corresponds to a <code>PP_Bool</code> (<code>PP_VARTYPE_BOOL</code>;
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * default=<code>PP_FALSE</code>).
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Whether HTTP credentials are sent with cross-origin requests. If false,
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * no credentials are sent with the request and cookies are ignored in the
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * response. If the request is not cross-origin, this property is ignored.
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_URLREQUESTPROPERTY_ALLOWCREDENTIALS = 9,
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * This corresponds to a string (<code>PP_VARTYPE_STRING</code>) or may be
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * undefined (<code>PP_VARTYPE_UNDEFINED</code>; default).
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Set it to a string to set a custom content-transfer-encoding header (if
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * empty, that header will be omitted), or to undefined to use the default
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * (if any). Only loaders with universal access (only available on trusted
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * implementations) will accept <code>URLRequestInfo</code> objects that try
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * to set a custom content transfer encoding; if given to a loader without
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * universal access, <code>PP_ERROR_NOACCESS</code> will result.
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_URLREQUESTPROPERTY_CUSTOMCONTENTTRANSFERENCODING = 10,
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * This corresponds to an integer (<code>PP_VARTYPE_INT32</code>); default
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * is not defined and is set by the browser, possibly depending on system
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * capabilities. Set it to an integer to set an upper threshold for the
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * prefetched buffer of an asynchronous load. When exceeded, the browser will
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * defer loading until
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <code>PP_URLREQUESTPROPERTY_PREFETCHBUFFERLOWERERTHRESHOLD</code> is hit,
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * at which time it will begin prefetching again. When setting this property,
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <code>PP_URLREQUESTPROPERTY_PREFETCHBUFFERLOWERERTHRESHOLD</code> must also
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * be set. Behavior is undefined if the former is <= the latter.
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_URLREQUESTPROPERTY_PREFETCHBUFFERUPPERTHRESHOLD = 11,
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * This corresponds to an integer (<code>PP_VARTYPE_INT32</code>); default is
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * not defined and is set by the browser to a value appropriate for the
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * default <code>PP_URLREQUESTPROPERTY_PREFETCHBUFFERUPPERTHRESHOLD</code>.
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Set it to an integer to set a lower threshold for the prefetched buffer
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * of an asynchronous load. When reached, the browser will resume loading if
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * If <code>PP_URLREQUESTPROPERTY_PREFETCHBUFFERLOWERERTHRESHOLD</code> had
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * previously been reached.
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * When setting this property,
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <code>PP_URLREQUESTPROPERTY_PREFETCHBUFFERUPPERTHRESHOLD</code> must also
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * be set. Behavior is undefined if the former is >= the latter.
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_URLREQUESTPROPERTY_PREFETCHBUFFERLOWERTHRESHOLD = 12,
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * This corresponds to a string (<code>PP_VARTYPE_STRING</code>) or may be
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * undefined (<code>PP_VARTYPE_UNDEFINED</code>; default). Set it to a string
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * to set a custom user-agent header (if empty, that header will be omitted),
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * or to undefined to use the default. Only loaders with universal access
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * (only available on trusted implementations) will accept
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <code>URLRequestInfo</code> objects that try to set a custom user agent; if
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * given to a loader without universal access, <code>PP_ERROR_NOACCESS</code>
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * will result.
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_URLREQUESTPROPERTY_CUSTOMUSERAGENT = 13
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} PP_URLRequestProperty;
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_URLRequestProperty, 4);
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @}
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @addtogroup Interfaces
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @{
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The <code>PPB_URLRequestInfo</code> interface is used to create
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * and handle URL requests. This API is used in conjunction with
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PPB_URLLoader</code>. Refer to <code>PPB_URLLoader</code> for further
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * information.
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct PPB_URLRequestInfo_1_0 {
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Create() creates a new <code>URLRequestInfo</code> object.
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] instance A <code>PP_Instance</code> identifying one instance
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * of a module.
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @return A <code>PP_Resource</code> identifying the
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <code>URLRequestInfo</code> if successful, 0 if the instance is invalid.
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_Resource (*Create)(PP_Instance instance);
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * IsURLRequestInfo() determines if a resource is a
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <code>URLRequestInfo</code>.
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] resource A <code>PP_Resource</code> corresponding to a
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <code>URLRequestInfo</code>.
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @return <code>PP_TRUE</code> if the resource is a
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <code>URLRequestInfo</code>, <code>PP_FALSE</code> if the resource is
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * invalid or some type other than <code>URLRequestInfo</code>.
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_Bool (*IsURLRequestInfo)(PP_Resource resource);
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * SetProperty() sets a request property. The value of the property must be
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * the correct type according to the property being set.
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] request A <code>PP_Resource</code> corresponding to a
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <code>URLRequestInfo</code>.
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] property A <code>PP_URLRequestProperty</code> identifying the
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * property to set.
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] value A <code>PP_Var</code> containing the property value.
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @return <code>PP_TRUE</code> if successful, <code>PP_FALSE</code> if any
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * of the parameters are invalid.
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_Bool (*SetProperty)(PP_Resource request,
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         PP_URLRequestProperty property,
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         struct PP_Var value);
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * AppendDataToBody() appends data to the request body. A Content-Length
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * request header will be automatically generated.
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] request A <code>PP_Resource</code> corresponding to a
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <code>URLRequestInfo</code>.
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] data A pointer to a buffer holding the data.
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] len The length, in bytes, of the data.
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @return <code>PP_TRUE</code> if successful, <code>PP_FALSE</code> if any
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * of the parameters are invalid.
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_Bool (*AppendDataToBody)(PP_Resource request,
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              const void* data,
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              uint32_t len);
2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * AppendFileToBody() appends a file, to be uploaded, to the request body.
2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * A content-length request header will be automatically generated.
2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] request A <code>PP_Resource</code> corresponding to a
2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <code>URLRequestInfo</code>.
2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] file_ref A <code>PP_Resource</code> corresponding to a file
2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * reference.
2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] start_offset An optional starting point offset within the
2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * file.
2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] number_of_bytes An optional number of bytes of the file to
2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * be included. If <code>number_of_bytes</code> is -1, then the sub-range
2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * to upload extends to the end of the file.
2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] expected_last_modified_time An optional (non-zero) last
2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * modified time stamp used to validate that the file was not modified since
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * the given time before it was uploaded. The upload will fail with an error
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * code of <code>PP_ERROR_FILECHANGED</code> if the file has been modified
2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * since the given time. If <code>expected_last_modified_time</code> is 0,
2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * then no validation is performed.
2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @return <code>PP_TRUE</code> if successful, <code>PP_FALSE</code> if any
2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * of the parameters are invalid.
2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_Bool (*AppendFileToBody)(PP_Resource request,
2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              PP_Resource file_ref,
2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              int64_t start_offset,
2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              int64_t number_of_bytes,
2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              PP_Time expected_last_modified_time);
2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct PPB_URLRequestInfo_1_0 PPB_URLRequestInfo;
2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @}
2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  /* PPAPI_C_PPB_URL_REQUEST_INFO_H_ */
2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
269