Home | History | Annotate | Download | only in shared_impl
      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 #ifndef PPAPI_SHARED_IMPL_URL_REQUEST_INFO_DATA_H_
      6 #define PPAPI_SHARED_IMPL_URL_REQUEST_INFO_DATA_H_
      7 
      8 #include <string>
      9 #include <vector>
     10 
     11 #include "base/memory/ref_counted.h"
     12 #include "ppapi/c/pp_resource.h"
     13 #include "ppapi/c/pp_stdint.h"
     14 #include "ppapi/c/pp_time.h"
     15 #include "ppapi/shared_impl/ppapi_globals.h"
     16 #include "ppapi/shared_impl/ppapi_shared_export.h"
     17 #include "ppapi/shared_impl/resource_tracker.h"
     18 
     19 namespace ppapi {
     20 
     21 class Resource;
     22 
     23 struct PPAPI_SHARED_EXPORT URLRequestInfoData {
     24   struct PPAPI_SHARED_EXPORT BodyItem {
     25     BodyItem();
     26     explicit BodyItem(const std::string& data);
     27     BodyItem(Resource* file_ref,
     28              int64_t start_offset,
     29              int64_t number_of_bytes,
     30              PP_Time expected_last_modified_time);
     31 
     32     // Set if the input is a file, false means the |data| is valid.
     33     bool is_file;
     34 
     35     std::string data;
     36 
     37     // Only set on the plugin-side, for refcounting purposes. Only valid when
     38     // |is_file| is set.
     39     scoped_refptr<Resource> file_ref_resource;
     40     // This struct holds no ref to this resource. Only valid when |is_file| is
     41     // set.
     42     PP_Resource file_ref_pp_resource;
     43 
     44     int64_t start_offset;
     45     int64_t number_of_bytes;
     46     PP_Time expected_last_modified_time;
     47 
     48     // If you add more stuff here, be sure to modify the serialization rules in
     49     // ppapi_messages.h
     50   };
     51 
     52   URLRequestInfoData();
     53   ~URLRequestInfoData();
     54 
     55   std::string url;
     56   std::string method;
     57   std::string headers;
     58 
     59   bool stream_to_file;
     60   bool follow_redirects;
     61   bool record_download_progress;
     62   bool record_upload_progress;
     63 
     64   // |has_custom_referrer_url| is set to false if a custom referrer hasn't been
     65   // set (or has been set to an Undefined Var) and the default referrer should
     66   // be used. (Setting the custom referrer to an empty string indicates that no
     67   // referrer header should be generated.)
     68   bool has_custom_referrer_url;
     69   std::string custom_referrer_url;
     70 
     71   bool allow_cross_origin_requests;
     72   bool allow_credentials;
     73 
     74   // Similar to the custom referrer (above), but for custom content transfer
     75   // encoding and custom user agent, respectively.
     76   bool has_custom_content_transfer_encoding;
     77   std::string custom_content_transfer_encoding;
     78   bool has_custom_user_agent;
     79   std::string custom_user_agent;
     80 
     81   int32_t prefetch_buffer_upper_threshold;
     82   int32_t prefetch_buffer_lower_threshold;
     83 
     84   std::vector<BodyItem> body;
     85 
     86   // If you add more stuff here, be sure to modify the serialization rules in
     87   // ppapi_messages.h
     88 };
     89 
     90 }  // namespace ppapi
     91 
     92 #endif  // PPAPI_SHARED_IMPL_URL_REQUEST_INFO_DATA_H_
     93