/* Copyright (c) 2012 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.
*/
/* From ppb_url_response_info.idl modified Mon Nov 14 10:36:01 2011. */
#ifndef PPAPI_C_PPB_URL_RESPONSE_INFO_H_
#define PPAPI_C_PPB_URL_RESPONSE_INFO_H_
#include "ppapi/c/pp_bool.h"
#include "ppapi/c/pp_macros.h"
#include "ppapi/c/pp_resource.h"
#include "ppapi/c/pp_stdint.h"
#include "ppapi/c/pp_var.h"
#define PPB_URLRESPONSEINFO_INTERFACE_1_0 "PPB_URLResponseInfo;1.0"
#define PPB_URLRESPONSEINFO_INTERFACE PPB_URLRESPONSEINFO_INTERFACE_1_0
/**
* @file
* This file defines the PPB_URLResponseInfo
API for examining URL
* responses.
*/
/**
* @addtogroup Enums
* @{
*/
/**
* This enumeration contains properties set on a URL response.
*/
typedef enum {
/**
* This corresponds to a string (PP_VARTYPE_STRING); an absolute URL formed by
* resolving the relative request URL with the absolute document URL. Refer
* to the
*
* HTTP Request URI and
*
* HTML Resolving Relative URIs documentation for further information.
*/
PP_URLRESPONSEPROPERTY_URL = 0,
/**
* This corresponds to a string (PP_VARTYPE_STRING); the absolute URL returned
* in the response header's 'Location' field if this is a redirect response,
* an empty string otherwise. Refer to the
*
* HTTP Status Codes - Redirection documentation for further information.
*/
PP_URLRESPONSEPROPERTY_REDIRECTURL = 1,
/**
* This corresponds to a string (PP_VARTYPE_STRING); the HTTP method to be
* used in a new request if this is a redirect response, an empty string
* otherwise. Refer to the
*
* HTTP Status Codes - Redirection documentation for further information.
*/
PP_URLRESPONSEPROPERTY_REDIRECTMETHOD = 2,
/**
* This corresponds to an int32 (PP_VARETYPE_INT32); the status code from the
* response, e.g., 200 if the request was successful. Refer to the
*
* HTTP Status Code and Reason Phrase documentation for further
* information.
*/
PP_URLRESPONSEPROPERTY_STATUSCODE = 3,
/**
* This corresponds to a string (PP_VARTYPE_STRING); the status line
* from the response. Refer to the
*
* HTTP Response Status Line documentation for further information.
*/
PP_URLRESPONSEPROPERTY_STATUSLINE = 4,
/**
* This corresponds to a string(PP_VARTYPE_STRING), a \n-delimited list of
* header field/value pairs of the form "field: value", returned by the
* server. Refer to the
*
* HTTP Header Field Definitions documentation for further information.
*/
PP_URLRESPONSEPROPERTY_HEADERS = 5
} PP_URLResponseProperty;
PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_URLResponseProperty, 4);
/**
* @}
*/
/**
* @addtogroup Interfaces
* @{
*/
/**
* The PPB_URLResponseInfo interface contains APIs for
* examining URL responses. Refer to PPB_URLLoader
for further
* information.
*/
struct PPB_URLResponseInfo_1_0 {
/**
* IsURLResponseInfo() determines if a response is a
* URLResponseInfo
.
*
* @param[in] resource A PP_Resource
corresponding to a
* URLResponseInfo
.
*
* @return PP_TRUE
if the resource is a
* URLResponseInfo
, PP_FALSE
if the resource is
* invalid or some type other than URLResponseInfo
.
*/
PP_Bool (*IsURLResponseInfo)(PP_Resource resource);
/**
* GetProperty() gets a response property.
*
* @param[in] request A PP_Resource
corresponding to a
* URLResponseInfo
.
* @param[in] property A PP_URLResponseProperty
identifying
* the type of property in the response.
*
* @return A PP_Var
containing the response property value if
* successful, PP_VARTYPE_VOID
if an input parameter is invalid.
*/
struct PP_Var (*GetProperty)(PP_Resource response,
PP_URLResponseProperty property);
/**
* GetBodyAsFileRef() returns a FileRef pointing to the file containing the
* response body. This is only valid if
* PP_URLREQUESTPROPERTY_STREAMTOFILE
was set on the
* URLRequestInfo
used to produce this response. This file
* remains valid until the URLLoader
associated with this
* URLResponseInfo
is closed or destroyed.
*
* @param[in] request A PP_Resource
corresponding to a
* URLResponseInfo
.
*
* @return A PP_Resource
corresponding to a FileRef
* if successful, 0 if PP_URLREQUESTPROPERTY_STREAMTOFILE
was
* not requested or if the URLLoader
has not been opened yet.
*/
PP_Resource (*GetBodyAsFileRef)(PP_Resource response);
};
typedef struct PPB_URLResponseInfo_1_0 PPB_URLResponseInfo;
/**
* @}
*/
#endif /* PPAPI_C_PPB_URL_RESPONSE_INFO_H_ */