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)
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* From ppb_url_response_info.idl modified Mon Nov 14 10:36:01 2011. */
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef PPAPI_C_PPB_URL_RESPONSE_INFO_H_
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPAPI_C_PPB_URL_RESPONSE_INFO_H_
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_bool.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_macros.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_resource.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_stdint.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_var.h"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPB_URLRESPONSEINFO_INTERFACE_1_0 "PPB_URLResponseInfo;1.0"
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPB_URLRESPONSEINFO_INTERFACE PPB_URLRESPONSEINFO_INTERFACE_1_0
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @file
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This file defines the <code>PPB_URLResponseInfo</code> API for examining URL
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * responses.
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @addtogroup Enums
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @{
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This enumeration contains properties set on a URL response.
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef enum {
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * This corresponds to a string (PP_VARTYPE_STRING); an absolute URL formed by
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * resolving the relative request URL with the absolute document URL. Refer
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * to the
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html#sec5.1.2">
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * HTTP Request URI</a> and
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <a href="http://www.w3.org/TR/html4/struct/links.html#h-12.4.1">
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * HTML Resolving Relative URIs</a> documentation for further information.
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_URLRESPONSEPROPERTY_URL = 0,
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * This corresponds to a string (PP_VARTYPE_STRING); the absolute URL returned
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * in the response header's 'Location' field if this is a redirect response,
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * an empty string otherwise. Refer to the
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3">
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * HTTP Status Codes - Redirection</a> documentation for further information.
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_URLRESPONSEPROPERTY_REDIRECTURL = 1,
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * This corresponds to a string (PP_VARTYPE_STRING); the HTTP method to be
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * used in a new request if this is a redirect response, an empty string
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * otherwise. Refer to the
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3">
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * HTTP Status Codes - Redirection</a> documentation for further information.
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_URLRESPONSEPROPERTY_REDIRECTMETHOD = 2,
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * This corresponds to an int32 (PP_VARETYPE_INT32); the status code from the
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * response, e.g., 200 if the request was successful. Refer to the
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html#sec6.1.1">
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * HTTP Status Code and Reason Phrase</a> documentation for further
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * information.
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_URLRESPONSEPROPERTY_STATUSCODE = 3,
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * This corresponds to a string (PP_VARTYPE_STRING); the status line
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * from the response. Refer to the
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html#sec6.1">
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * HTTP Response Status Line</a> documentation for further information.
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_URLRESPONSEPROPERTY_STATUSLINE = 4,
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * This corresponds to a string(PP_VARTYPE_STRING), a \n-delimited list of
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * header field/value pairs of the form "field: value", returned by the
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * server. Refer to the
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14">
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * HTTP Header Field Definitions</a> documentation for further information.
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_URLRESPONSEPROPERTY_HEADERS = 5
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} PP_URLResponseProperty;
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_URLResponseProperty, 4);
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @}
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @addtogroup Interfaces
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @{
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The PPB_URLResponseInfo interface contains APIs for
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * examining URL responses. Refer to <code>PPB_URLLoader</code> for further
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * information.
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct PPB_URLResponseInfo_1_0 {
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * IsURLResponseInfo() determines if a response is a
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <code>URLResponseInfo</code>.
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] resource A <code>PP_Resource</code> corresponding to a
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <code>URLResponseInfo</code>.
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @return <code>PP_TRUE</code> if the resource is a
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <code>URLResponseInfo</code>, <code>PP_FALSE</code> if the resource is
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * invalid or some type other than <code>URLResponseInfo</code>.
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_Bool (*IsURLResponseInfo)(PP_Resource resource);
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * GetProperty() gets a response property.
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] request A <code>PP_Resource</code> corresponding to a
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <code>URLResponseInfo</code>.
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] property A <code>PP_URLResponseProperty</code> identifying
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * the type of property in the response.
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @return A <code>PP_Var</code> containing the response property value if
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * successful, <code>PP_VARTYPE_VOID</code> if an input parameter is invalid.
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  struct PP_Var (*GetProperty)(PP_Resource response,
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               PP_URLResponseProperty property);
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * GetBodyAsFileRef() returns a FileRef pointing to the file containing the
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * response body.  This is only valid if
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <code>PP_URLREQUESTPROPERTY_STREAMTOFILE</code> was set on the
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <code>URLRequestInfo</code> used to produce this response.  This file
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * remains valid until the <code>URLLoader</code> associated with this
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <code>URLResponseInfo</code> is closed or destroyed.
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] request A <code>PP_Resource</code> corresponding to a
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <code>URLResponseInfo</code>.
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @return A <code>PP_Resource</code> corresponding to a <code>FileRef</code>
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * if successful, 0 if <code>PP_URLREQUESTPROPERTY_STREAMTOFILE</code> was
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * not requested or if the <code>URLLoader</code> has not been opened yet.
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_Resource (*GetBodyAsFileRef)(PP_Resource response);
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct PPB_URLResponseInfo_1_0 PPB_URLResponseInfo;
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @}
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  /* PPAPI_C_PPB_URL_RESPONSE_INFO_H_ */
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
150