• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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