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)#ifndef PPAPI_CPP_URL_REQUEST_INFO_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPAPI_CPP_URL_REQUEST_INFO_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/ppb_url_request_info.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/cpp/resource.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/cpp/var.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/// @file 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/// This file defines the API for creating and manipulating URL requests. 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace pp { 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class FileRef; 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class InstanceHandle; 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/// URLRequestInfo provides an API for creating and manipulating URL requests. 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class URLRequestInfo : public Resource { 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// Default constructor. This constructor creates an 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>is_null</code> resource. 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLRequestInfo() {} 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// A constructor used to allocate a new <code>URLLoader</code> in the 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// browser. The resulting object will be <code>is_null</code> if the 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// allocation failed. 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @param[in] instance The instance with which this resource will be 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// associated. 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) explicit URLRequestInfo(const InstanceHandle& instance); 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// The copy constructor for <code>URLRequestInfo</code>. 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @param[in] other A <code>URLRequestInfo</code> to be copied. 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLRequestInfo(const URLRequestInfo& other); 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// SetProperty() sets a request property. The value of the property must be 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// the correct type according to the property being set. 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @param[in] property A <code>PP_URLRequestProperty</code> identifying the 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// property to set. 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @param[in] value A <code>Var</code> containing the property value. 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @return true if successful, false if any of the 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// parameters are invalid. 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool SetProperty(PP_URLRequestProperty property, const Var& value); 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// AppendDataToBody() appends data to the request body. A content-length 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// request header will be automatically generated. 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @param[in] data A pointer to a buffer holding the data. 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @param[in] len The length, in bytes, of the data. 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @return true if successful, false if any of the 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// parameters are invalid. 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool AppendDataToBody(const void* data, uint32_t len); 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// AppendFileToBody() is used to append an entire file, to be uploaded, to 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// the request body. A content-length request header will be automatically 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// generated. 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @param[in] file_ref A <code>FileRef</code> containing the file 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// reference. 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @param[in] expected_last_modified_time An optional (non-zero) last 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// modified time stamp used to validate that the file was not modified since 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// the given time before it was uploaded. The upload will fail with an error 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// code of <code>PP_ERROR_FILECHANGED</code> if the file has been modified 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// since the given time. If expected_last_modified_time is 0, then no 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// validation is performed. 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @return true if successful, false if any of the 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// parameters are invalid. 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool AppendFileToBody(const FileRef& file_ref, 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Time expected_last_modified_time = 0); 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// AppendFileRangeToBody() is a pointer to a function used to append part or 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// all of a file, to be uploaded, to the request body. A content-length 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// request header will be automatically generated. 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @param[in] file_ref A <code>FileRef</code> containing the file 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// reference. 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @param[in] start_offset An optional starting point offset within the 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// file. 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @param[in] length An optional number of bytes of the file to 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// be included. If the value is -1, then the sub-range to upload extends 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// to the end of the file. 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @param[in] expected_last_modified_time An optional (non-zero) last 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// modified time stamp used to validate that the file was not modified since 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// the given time before it was uploaded. The upload will fail with an error 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// code of <code>PP_ERROR_FILECHANGED</code> if the file has been modified 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// since the given time. If expected_last_modified_time is 0, then no 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// validation is performed. 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @return true if successful, false if any of the 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// parameters are invalid. 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool AppendFileRangeToBody(const FileRef& file_ref, 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64_t start_offset, 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64_t length, 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Time expected_last_modified_time = 0); 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// SetURL() sets the <code>PP_URLREQUESTPROPERTY_URL</code> 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// property for the request. 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @param[in] url_string A <code>Var</code> containing the property value. 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @return true if successful, false if the parameter is invalid. 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool SetURL(const Var& url_string) { 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return SetProperty(PP_URLREQUESTPROPERTY_URL, url_string); 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// SetMethod() sets the <code>PP_URLREQUESTPROPERTY_METHOD</code> 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// (corresponding to a string of type <code>PP_VARTYPE_STRING</code>) 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// property for the request. This string is either a POST or GET. Refer to 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// the <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html">HTTP 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// Methods</a> documentation for further information. 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @param[in] method_string A <code>Var</code> containing the property 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// value. 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @return true if successful, false if the parameter is invalid. 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool SetMethod(const Var& method_string) { 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return SetProperty(PP_URLREQUESTPROPERTY_METHOD, method_string); 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// SetHeaders() sets the <code>PP_URLREQUESTPROPERTY_HEADERS</code> 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// (corresponding to a <code>\n</code> delimited string of type 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>PP_VARTYPE_STRING</code>) property for the request. 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// Refer to the 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html"Header 133c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /// Field Definitions</a> documentation for further information. 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @param[in] headers_string A <code>Var</code> containing the property 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// value. 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @return true if successful, false if the parameter is invalid. 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool SetHeaders(const Var& headers_string) { 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return SetProperty(PP_URLREQUESTPROPERTY_HEADERS, headers_string); 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// SetStreamToFile() sets the 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>PP_URLREQUESTPROPERTY_STREAMTOFILE</code> (corresponding 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// to a bool of type <code>PP_VARTYPE_BOOL</code>). The default of the 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// property is false. Set this value to true if you want to download the 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// data to a file. Use URL_Loader::FinishStreamingToFile() to complete 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// the download. 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @param[in] enable A <code>bool</code> containing the property value. 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @return true if successful, false if the parameter is invalid. 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool SetStreamToFile(bool enable) { 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return SetProperty(PP_URLREQUESTPROPERTY_STREAMTOFILE, enable); 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// SetFollowRedirects() sets the 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>PP_URLREQUESTPROPERTY_FOLLOWREDIRECT</code> (corresponding 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// to a bool of type <code>PP_VARTYPE_BOOL</code>). The default of the 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// property is true. Set this value to false if you want to use 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// URLLoader::FollowRedirects() to follow the redirects only after examining 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// redirect headers. 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @param[in] enable A <code>bool</code> containing the property value. 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @return true if successful, false if the parameter is invalid. 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool SetFollowRedirects(bool enable) { 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return SetProperty(PP_URLREQUESTPROPERTY_FOLLOWREDIRECTS, enable); 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// SetRecordDownloadProgress() sets the 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>PP_URLREQUESTPROPERTY_RECORDDOWNLOADPROGESS</code> 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// (corresponding to a bool of type <code>PP_VARTYPE_BOOL</code>). The 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// default of the property is false. Set this value to true if you want to 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// be able to poll the download progress using 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// URLLoader::GetDownloadProgress(). 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @param[in] enable A <code>bool</code> containing the property value. 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) //// 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @return true if successful, false if the parameter is invalid. 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool SetRecordDownloadProgress(bool enable) { 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return SetProperty(PP_URLREQUESTPROPERTY_RECORDDOWNLOADPROGRESS, enable); 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// SetRecordUploadProgress() sets the 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>PP_URLREQUESTPROPERTY_RECORDUPLOADPROGRESS</code> 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// (corresponding to a bool of type <code>PP_VARTYPE_BOOL</code>). The 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// default of the property is false. Set this value to true if you want to 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// be able to poll the upload progress using URLLoader::GetUploadProgress(). 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @param[in] enable A <code>bool</code> containing the property value. 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @return true if successful, false if the parameter is invalid. 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool SetRecordUploadProgress(bool enable) { 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return SetProperty(PP_URLREQUESTPROPERTY_RECORDUPLOADPROGRESS, enable); 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// SetCustomReferrerURL() sets the 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>PP_URLREQUESTPROPERTY_CUSTOMREFERRERURL</code> 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// (corresponding to a string of type <code>PP_VARTYPE_STRING</code> or 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// might be set to undefined as <code>PP_VARTYPE_UNDEFINED</code>). Set it 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// to a string to set a custom referrer (if empty, the referrer header will 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// be omitted), or to undefined to use the default referrer. Only loaders 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// with universal access (only available on trusted implementations) will 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// accept <code>URLRequestInfo</code> objects that try to set a custom 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// referrer; if given to a loader without universal access, 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>PP_ERROR_BADARGUMENT</code> will result. 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @param[in] url A <code>Var</code> containing the property value. 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @return true if successful, false if the parameter is invalid. 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool SetCustomReferrerURL(const Var& url) { 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return SetProperty(PP_URLREQUESTPROPERTY_CUSTOMREFERRERURL, url); 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// SetAllowCrossOriginRequests() sets the 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>PP_URLREQUESTPROPERTY_ALLOWCROSSORIGINREQUESTS</code> 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// (corresponding to a bool of type <code>PP_VARTYPE_BOOL</code>). The 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// default of the property is false. Whether cross-origin requests are 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// allowed. Cross-origin requests are made using the CORS (Cross-Origin 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// Resource Sharing) algorithm to check whether the request should be 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// allowed. For the complete CORS algorithm, refer to the 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <a href="http://www.w3.org/TR/access-control">Cross-Origin Resource 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// Sharing</a> documentation. 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @param[in] enable A <code>bool</code> containing the property value. 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @return true if successful, false if the parameter is invalid. 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool SetAllowCrossOriginRequests(bool enable) { 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return SetProperty(PP_URLREQUESTPROPERTY_ALLOWCROSSORIGINREQUESTS, enable); 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// SetAllowCredentials() sets the 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>PP_URLREQUESTPROPERTY_ALLOWCREDENTIALS</code> 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// (corresponding to a bool of type <code>PP_VARTYPE_BOOL</code>). The 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// default of the property is false. Whether HTTP credentials are sent with 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// cross-origin requests. If false, no credentials are sent with the request 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// and cookies are ignored in the response. If the request is not 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// cross-origin, this property is ignored. 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @param[in] enable A <code>bool</code> containing the property value. 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @return true if successful, false if the parameter is invalid. 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool SetAllowCredentials(bool enable) { 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return SetProperty(PP_URLREQUESTPROPERTY_ALLOWCREDENTIALS, enable); 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// SetCustomContentTransferEncoding() sets the 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>PP_URLREQUESTPROPERTY_CUSTOMCONTENTTRANSFERENCODING</code> 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// (corresponding to a string of type <code>PP_VARTYPE_STRING</code> or 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// might be set to undefined as <code>PP_VARTYPE_UNDEFINED</code>). Set it 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// to a string to set a custom content-transfer-encoding header (if empty, 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// that header will be omitted), or to undefined to use the default (if 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// any). Only loaders with universal access (only available on trusted 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// implementations) will accept <code>URLRequestInfo</code> objects that try 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// to set a custom content transfer encoding; if given to a loader without 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// universal access, <code>PP_ERROR_BADARGUMENT</code> will result. 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @param[in] content_transfer_encoding A <code>Var</code> containing the 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// property value. To use the default content transfer encoding, set 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>content_transfer_encoding</code> to an undefined <code>Var</code>. 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @return true if successful, false if the parameter is invalid. 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool SetCustomContentTransferEncoding(const Var& content_transfer_encoding) { 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return SetProperty(PP_URLREQUESTPROPERTY_CUSTOMCONTENTTRANSFERENCODING, 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content_transfer_encoding); 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// SetPrefetchBufferUpperThreshold() sets the 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>PP_URLREQUESTPROPERTY_PREFETCHBUFFERUPPERTHRESHOLD</code> 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// (corresponding to a integer of type <code>PP_VARTYPE_INT32</code>). The 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// default is not defined and is set by the browser possibly depending on 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// system capabilities. Set it to an integer to set an upper threshold for 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// the prefetched buffer of an asynchronous load. When exceeded, the browser 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// will defer loading until 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>PP_URLREQUESTPROPERTY_PREFETCHBUFFERLOWERERTHRESHOLD</code> is hit, 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// at which time it will begin prefetching again. When setting this 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// property, 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>PP_URLREQUESTPROPERTY_PREFETCHBUFFERLOWERERTHRESHOLD</code> must 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// also be set. Behavior is undefined if the former is <= the latter. 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @param[in] size An int32_t containing the property value. 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @return true if successful, false if the parameter is invalid. 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool SetPrefetchBufferUpperThreshold(int32_t size) { 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return SetProperty(PP_URLREQUESTPROPERTY_PREFETCHBUFFERUPPERTHRESHOLD, 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) size); 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// SetPrefetchBufferLowerThreshold() sets the 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>PP_URLREQUESTPROPERTY_PREFETCHBUFFERLOWERTHRESHOLD</code> 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// (corresponding to a integer of type <code>PP_VARTYPE_INT32</code>). The 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// default is not defined and is set by the browser to a value appropriate 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// for the default 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>PP_URLREQUESTPROPERTY_PREFETCHBUFFERUPPERTHRESHOLD</code>. 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// Set it to an integer to set a lower threshold for the prefetched buffer 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// of an asynchronous load. When reached, the browser will resume loading if 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// If <code>PP_URLREQUESTPROPERTY_PREFETCHBUFFERLOWERERTHRESHOLD</code> had 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// previously been reached. 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// When setting this property, 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>PP_URLREQUESTPROPERTY_PREFETCHBUFFERUPPERTHRESHOLD</code> must also 3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// be set. Behavior is undefined if the former is >= the latter. 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @param[in] size An int32_t containing the property value. 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @return true if successful, false if the parameter is invalid. 3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool SetPrefetchBufferLowerThreshold(int32_t size) { 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return SetProperty(PP_URLREQUESTPROPERTY_PREFETCHBUFFERLOWERTHRESHOLD, 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) size); 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// SetCustomUserAgent() sets the 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>PP_URLREQUESTPROPERTY_CUSTOMUSERAGENT</code> (corresponding to a 3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// string of type <code>PP_VARTYPE_STRING</code> or might be set to undefined 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// as <code>PP_VARTYPE_UNDEFINED</code>). Set it to a string to set a custom 3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// user-agent header (if empty, that header will be omitted), or to undefined 3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// to use the default. Only loaders with universal access (only available on 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// trusted implementations) will accept <code>URLRequestInfo</code> objects 3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// that try to set a custom user agent; if given to a loader without 3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// universal access, <code>PP_ERROR_BADARGUMENT</code> will result. 3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @param[in] user_agent A <code>Var</code> containing the property value. To 3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// use the default user agent, set <code>user_agent</code> to an undefined 3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>Var</code>. 3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @return true if successful, false if the parameter is invalid. 3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool SetCustomUserAgent(const Var& user_agent) { 3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return SetProperty(PP_URLREQUESTPROPERTY_CUSTOMUSERAGENT, user_agent); 3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace pp 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // PPAPI_CPP_URL_REQUEST_INFO_H_ 335