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_URLResponseInfo</code> API for examining URL 8 * responses. 9 */ 10 11[generate_thunk] 12 13label Chrome { 14 M14 = 1.0 15}; 16 17/** 18 * This enumeration contains properties set on a URL response. 19 */ 20[assert_size(4)] 21enum PP_URLResponseProperty { 22 /** 23 * This corresponds to a string (PP_VARTYPE_STRING); an absolute URL formed by 24 * resolving the relative request URL with the absolute document URL. Refer 25 * to the 26 * <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html#sec5.1.2"> 27 * HTTP Request URI</a> and 28 * <a href="http://www.w3.org/TR/html4/struct/links.html#h-12.4.1"> 29 * HTML Resolving Relative URIs</a> documentation for further information. 30 */ 31 PP_URLRESPONSEPROPERTY_URL = 0, 32 33 /** 34 * This corresponds to a string (PP_VARTYPE_STRING); the absolute URL returned 35 * in the response header's 'Location' field if this is a redirect response, 36 * an empty string otherwise. Refer to the 37 * <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3"> 38 * HTTP Status Codes - Redirection</a> documentation for further information. 39 */ 40 PP_URLRESPONSEPROPERTY_REDIRECTURL = 1, 41 42 /** 43 * This corresponds to a string (PP_VARTYPE_STRING); the HTTP method to be 44 * used in a new request if this is a redirect response, an empty string 45 * otherwise. Refer to the 46 * <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3"> 47 * HTTP Status Codes - Redirection</a> documentation for further information. 48 */ 49 PP_URLRESPONSEPROPERTY_REDIRECTMETHOD = 2, 50 51 /** 52 * This corresponds to an int32 (PP_VARETYPE_INT32); the status code from the 53 * response, e.g., 200 if the request was successful. Refer to the 54 * <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html#sec6.1.1"> 55 * HTTP Status Code and Reason Phrase</a> documentation for further 56 * information. 57 */ 58 PP_URLRESPONSEPROPERTY_STATUSCODE = 3, 59 60 /** 61 * This corresponds to a string (PP_VARTYPE_STRING); the status line 62 * from the response. Refer to the 63 * <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html#sec6.1"> 64 * HTTP Response Status Line</a> documentation for further information. 65 */ 66 PP_URLRESPONSEPROPERTY_STATUSLINE = 4, 67 68 /** 69 * This corresponds to a string(PP_VARTYPE_STRING), a \n-delimited list of 70 * header field/value pairs of the form "field: value", returned by the 71 * server. Refer to the 72 * <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14"> 73 * HTTP Header Field Definitions</a> documentation for further information. 74 */ 75 PP_URLRESPONSEPROPERTY_HEADERS = 5 76}; 77 78 79/** 80 * The PPB_URLResponseInfo interface contains APIs for 81 * examining URL responses. Refer to <code>PPB_URLLoader</code> for further 82 * information. 83 */ 84interface PPB_URLResponseInfo { 85 /** 86 * IsURLResponseInfo() determines if a response is a 87 * <code>URLResponseInfo</code>. 88 * 89 * @param[in] resource A <code>PP_Resource</code> corresponding to a 90 * <code>URLResponseInfo</code>. 91 * 92 * @return <code>PP_TRUE</code> if the resource is a 93 * <code>URLResponseInfo</code>, <code>PP_FALSE</code> if the resource is 94 * invalid or some type other than <code>URLResponseInfo</code>. 95 */ 96 PP_Bool IsURLResponseInfo( 97 [in] PP_Resource resource); 98 99 /** 100 * GetProperty() gets a response property. 101 * 102 * @param[in] request A <code>PP_Resource</code> corresponding to a 103 * <code>URLResponseInfo</code>. 104 * @param[in] property A <code>PP_URLResponseProperty</code> identifying 105 * the type of property in the response. 106 * 107 * @return A <code>PP_Var</code> containing the response property value if 108 * successful, <code>PP_VARTYPE_VOID</code> if an input parameter is invalid. 109 */ 110 PP_Var GetProperty( 111 [in] PP_Resource response, 112 [in] PP_URLResponseProperty property); 113 114 /** 115 * GetBodyAsFileRef() returns a FileRef pointing to the file containing the 116 * response body. This is only valid if 117 * <code>PP_URLREQUESTPROPERTY_STREAMTOFILE</code> was set on the 118 * <code>URLRequestInfo</code> used to produce this response. This file 119 * remains valid until the <code>URLLoader</code> associated with this 120 * <code>URLResponseInfo</code> is closed or destroyed. 121 * 122 * @param[in] request A <code>PP_Resource</code> corresponding to a 123 * <code>URLResponseInfo</code>. 124 * 125 * @return A <code>PP_Resource</code> corresponding to a <code>FileRef</code> 126 * if successful, 0 if <code>PP_URLREQUESTPROPERTY_STREAMTOFILE</code> was 127 * not requested or if the <code>URLLoader</code> has not been opened yet. 128 */ 129 PP_Resource GetBodyAsFileRef( 130 [in] PP_Resource response); 131}; 132 133