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_SHARED_IMPL_URL_REQUEST_INFO_DATA_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPAPI_SHARED_IMPL_URL_REQUEST_INFO_DATA_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <vector> 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/ref_counted.h" 12d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "ppapi/c/pp_resource.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_stdint.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_time.h" 15d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "ppapi/shared_impl/ppapi_globals.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/shared_impl/ppapi_shared_export.h" 17d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "ppapi/shared_impl/resource_tracker.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ppapi { 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Resource; 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct PPAPI_SHARED_EXPORT URLRequestInfoData { 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct PPAPI_SHARED_EXPORT BodyItem { 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BodyItem(); 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) explicit BodyItem(const std::string& data); 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BodyItem(Resource* file_ref, 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64_t start_offset, 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64_t number_of_bytes, 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Time expected_last_modified_time); 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Set if the input is a file, false means the |data| is valid. 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool is_file; 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string data; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 37d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) // Only set on the plugin-side, for refcounting purposes. Only valid when 38d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) // |is_file| is set. 39d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) scoped_refptr<Resource> file_ref_resource; 40d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) // This struct holds no ref to this resource. Only valid when |is_file| is 41d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) // set. 42d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) PP_Resource file_ref_pp_resource; 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64_t start_offset; 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64_t number_of_bytes; 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Time expected_last_modified_time; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If you add more stuff here, be sure to modify the serialization rules in 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ppapi_messages.h 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLRequestInfoData(); 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ~URLRequestInfoData(); 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string url; 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string method; 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string headers; 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool stream_to_file; 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool follow_redirects; 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool record_download_progress; 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool record_upload_progress; 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // |has_custom_referrer_url| is set to false if a custom referrer hasn't been 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // set (or has been set to an Undefined Var) and the default referrer should 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // be used. (Setting the custom referrer to an empty string indicates that no 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // referrer header should be generated.) 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool has_custom_referrer_url; 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string custom_referrer_url; 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool allow_cross_origin_requests; 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool allow_credentials; 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Similar to the custom referrer (above), but for custom content transfer 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // encoding and custom user agent, respectively. 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool has_custom_content_transfer_encoding; 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string custom_content_transfer_encoding; 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool has_custom_user_agent; 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string custom_user_agent; 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int32_t prefetch_buffer_upper_threshold; 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int32_t prefetch_buffer_lower_threshold; 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<BodyItem> body; 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If you add more stuff here, be sure to modify the serialization rules in 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ppapi_messages.h 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace ppapi 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // PPAPI_SHARED_IMPL_URL_REQUEST_INFO_DATA_H_ 93