Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(307)

Side by Side Diff: webkit/plugins/ppapi/ppb_url_request_info_impl.cc

Issue 5828003: Move the Pepper implementation from webkit/glue/plugins/pepper_* to... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "webkit/glue/plugins/pepper_url_request_info.h" 5 #include "webkit/plugins/ppapi/ppb_url_request_info_impl.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/string_util.h" 8 #include "base/string_util.h"
9 #include "googleurl/src/gurl.h" 9 #include "googleurl/src/gurl.h"
10 #include "net/http/http_util.h" 10 #include "net/http/http_util.h"
11 #include "ppapi/c/pp_var.h" 11 #include "ppapi/c/pp_var.h"
12 #include "third_party/WebKit/WebKit/chromium/public/WebData.h" 12 #include "third_party/WebKit/WebKit/chromium/public/WebData.h"
13 #include "third_party/WebKit/WebKit/chromium/public/WebDocument.h" 13 #include "third_party/WebKit/WebKit/chromium/public/WebDocument.h"
14 #include "third_party/WebKit/WebKit/chromium/public/WebFrame.h" 14 #include "third_party/WebKit/WebKit/chromium/public/WebFrame.h"
15 #include "third_party/WebKit/WebKit/chromium/public/WebHTTPBody.h" 15 #include "third_party/WebKit/WebKit/chromium/public/WebHTTPBody.h"
16 #include "third_party/WebKit/WebKit/chromium/public/WebURL.h" 16 #include "third_party/WebKit/WebKit/chromium/public/WebURL.h"
17 #include "third_party/WebKit/WebKit/chromium/public/WebURLRequest.h" 17 #include "third_party/WebKit/WebKit/chromium/public/WebURLRequest.h"
18 #include "webkit/glue/plugins/pepper_common.h" 18 #include "webkit/plugins/ppapi/common.h"
19 #include "webkit/glue/plugins/pepper_file_ref.h" 19 #include "webkit/plugins/ppapi/plugin_module.h"
20 #include "webkit/glue/plugins/pepper_plugin_module.h" 20 #include "webkit/plugins/ppapi/ppb_file_ref_impl.h"
21 #include "webkit/glue/plugins/pepper_string.h" 21 #include "webkit/plugins/ppapi/string.h"
22 #include "webkit/glue/plugins/pepper_var.h" 22 #include "webkit/plugins/ppapi/var.h"
23 #include "webkit/glue/webkit_glue.h" 23 #include "webkit/glue/webkit_glue.h"
24 24
25 using WebKit::WebData; 25 using WebKit::WebData;
26 using WebKit::WebHTTPBody; 26 using WebKit::WebHTTPBody;
27 using WebKit::WebString; 27 using WebKit::WebString;
28 using WebKit::WebFrame; 28 using WebKit::WebFrame;
29 using WebKit::WebURL; 29 using WebKit::WebURL;
30 using WebKit::WebURLRequest; 30 using WebKit::WebURLRequest;
31 31
32 namespace pepper { 32 namespace webkit {
33 namespace ppapi {
33 34
34 namespace { 35 namespace {
35 36
36 // If any of these request headers are specified, they will not be sent. 37 // If any of these request headers are specified, they will not be sent.
37 // TODO(darin): Add more based on security considerations? 38 // TODO(darin): Add more based on security considerations?
38 const char* const kIgnoredRequestHeaders[] = { 39 const char* const kIgnoredRequestHeaders[] = {
39 "content-length" 40 "content-length"
40 }; 41 };
41 42
42 PP_Bool IsIgnoredRequestHeader(const std::string& name) { 43 PP_Bool IsIgnoredRequestHeader(const std::string& name) {
43 for (size_t i = 0; i < arraysize(kIgnoredRequestHeaders); ++i) { 44 for (size_t i = 0; i < arraysize(kIgnoredRequestHeaders); ++i) {
44 if (LowerCaseEqualsASCII(name, kIgnoredRequestHeaders[i])) 45 if (LowerCaseEqualsASCII(name, kIgnoredRequestHeaders[i]))
45 return PP_TRUE; 46 return PP_TRUE;
46 } 47 }
47 return PP_FALSE; 48 return PP_FALSE;
48 } 49 }
49 50
50 PP_Resource Create(PP_Module module_id) { 51 PP_Resource Create(PP_Module module_id) {
51 PluginModule* module = ResourceTracker::Get()->GetModule(module_id); 52 PluginModule* module = ResourceTracker::Get()->GetModule(module_id);
52 if (!module) 53 if (!module)
53 return 0; 54 return 0;
54 55
55 URLRequestInfo* request = new URLRequestInfo(module); 56 PPB_URLRequestInfo_Impl* request = new PPB_URLRequestInfo_Impl(module);
56 57
57 return request->GetReference(); 58 return request->GetReference();
58 } 59 }
59 60
60 PP_Bool IsURLRequestInfo(PP_Resource resource) { 61 PP_Bool IsURLRequestInfo(PP_Resource resource) {
61 return BoolToPPBool(!!Resource::GetAs<URLRequestInfo>(resource)); 62 return BoolToPPBool(!!Resource::GetAs<PPB_URLRequestInfo_Impl>(resource));
62 } 63 }
63 64
64 PP_Bool SetProperty(PP_Resource request_id, 65 PP_Bool SetProperty(PP_Resource request_id,
65 PP_URLRequestProperty property, 66 PP_URLRequestProperty property,
66 PP_Var var) { 67 PP_Var var) {
67 scoped_refptr<URLRequestInfo> request( 68 scoped_refptr<PPB_URLRequestInfo_Impl> request(
68 Resource::GetAs<URLRequestInfo>(request_id)); 69 Resource::GetAs<PPB_URLRequestInfo_Impl>(request_id));
69 if (!request) 70 if (!request)
70 return PP_FALSE; 71 return PP_FALSE;
71 72
72 if (var.type == PP_VARTYPE_BOOL) { 73 if (var.type == PP_VARTYPE_BOOL) {
73 return BoolToPPBool( 74 return BoolToPPBool(
74 request->SetBooleanProperty(property, 75 request->SetBooleanProperty(property,
75 PPBoolToBool(var.value.as_bool))); 76 PPBoolToBool(var.value.as_bool)));
76 } 77 }
77 78
78 if (var.type == PP_VARTYPE_STRING) { 79 if (var.type == PP_VARTYPE_STRING) {
79 scoped_refptr<StringVar> string(StringVar::FromPPVar(var)); 80 scoped_refptr<StringVar> string(StringVar::FromPPVar(var));
80 if (string) { 81 if (string) {
81 return BoolToPPBool(request->SetStringProperty(property, 82 return BoolToPPBool(request->SetStringProperty(property,
82 string->value())); 83 string->value()));
83 } 84 }
84 } 85 }
85 86
86 return PP_FALSE; 87 return PP_FALSE;
87 } 88 }
88 89
89 PP_Bool AppendDataToBody(PP_Resource request_id, 90 PP_Bool AppendDataToBody(PP_Resource request_id,
90 const char* data, 91 const char* data,
91 uint32_t len) { 92 uint32_t len) {
92 scoped_refptr<URLRequestInfo> request( 93 scoped_refptr<PPB_URLRequestInfo_Impl> request(
93 Resource::GetAs<URLRequestInfo>(request_id)); 94 Resource::GetAs<PPB_URLRequestInfo_Impl>(request_id));
94 if (!request) 95 if (!request)
95 return PP_FALSE; 96 return PP_FALSE;
96 97
97 return BoolToPPBool(request->AppendDataToBody(std::string(data, len))); 98 return BoolToPPBool(request->AppendDataToBody(std::string(data, len)));
98 } 99 }
99 100
100 PP_Bool AppendFileToBody(PP_Resource request_id, 101 PP_Bool AppendFileToBody(PP_Resource request_id,
101 PP_Resource file_ref_id, 102 PP_Resource file_ref_id,
102 int64_t start_offset, 103 int64_t start_offset,
103 int64_t number_of_bytes, 104 int64_t number_of_bytes,
104 PP_Time expected_last_modified_time) { 105 PP_Time expected_last_modified_time) {
105 scoped_refptr<URLRequestInfo> request( 106 scoped_refptr<PPB_URLRequestInfo_Impl> request(
106 Resource::GetAs<URLRequestInfo>(request_id)); 107 Resource::GetAs<PPB_URLRequestInfo_Impl>(request_id));
107 if (!request) 108 if (!request)
108 return PP_FALSE; 109 return PP_FALSE;
109 110
110 scoped_refptr<FileRef> file_ref(Resource::GetAs<FileRef>(file_ref_id)); 111 scoped_refptr<PPB_FileRef_Impl> file_ref(
112 Resource::GetAs<PPB_FileRef_Impl>(file_ref_id));
111 if (!file_ref) 113 if (!file_ref)
112 return PP_FALSE; 114 return PP_FALSE;
113 115
114 return BoolToPPBool(request->AppendFileToBody(file_ref, 116 return BoolToPPBool(request->AppendFileToBody(file_ref,
115 start_offset, 117 start_offset,
116 number_of_bytes, 118 number_of_bytes,
117 expected_last_modified_time)); 119 expected_last_modified_time));
118 } 120 }
119 121
120 const PPB_URLRequestInfo ppb_urlrequestinfo = { 122 const PPB_URLRequestInfo ppb_urlrequestinfo = {
121 &Create, 123 &Create,
122 &IsURLRequestInfo, 124 &IsURLRequestInfo,
123 &SetProperty, 125 &SetProperty,
124 &AppendDataToBody, 126 &AppendDataToBody,
125 &AppendFileToBody 127 &AppendFileToBody
126 }; 128 };
127 129
128 } // namespace 130 } // namespace
129 131
130 struct URLRequestInfo::BodyItem { 132 struct PPB_URLRequestInfo_Impl::BodyItem {
131 BodyItem(const std::string& data) 133 BodyItem(const std::string& data)
132 : data(data), 134 : data(data),
133 start_offset(0), 135 start_offset(0),
134 number_of_bytes(-1), 136 number_of_bytes(-1),
135 expected_last_modified_time(0.0) { 137 expected_last_modified_time(0.0) {
136 } 138 }
137 139
138 BodyItem(FileRef* file_ref, 140 BodyItem(PPB_FileRef_Impl* file_ref,
139 int64_t start_offset, 141 int64_t start_offset,
140 int64_t number_of_bytes, 142 int64_t number_of_bytes,
141 PP_Time expected_last_modified_time) 143 PP_Time expected_last_modified_time)
142 : file_ref(file_ref), 144 : file_ref(file_ref),
143 start_offset(start_offset), 145 start_offset(start_offset),
144 number_of_bytes(number_of_bytes), 146 number_of_bytes(number_of_bytes),
145 expected_last_modified_time(expected_last_modified_time) { 147 expected_last_modified_time(expected_last_modified_time) {
146 } 148 }
147 149
148 std::string data; 150 std::string data;
149 scoped_refptr<FileRef> file_ref; 151 scoped_refptr<PPB_FileRef_Impl> file_ref;
150 int64_t start_offset; 152 int64_t start_offset;
151 int64_t number_of_bytes; 153 int64_t number_of_bytes;
152 PP_Time expected_last_modified_time; 154 PP_Time expected_last_modified_time;
153 }; 155 };
154 156
155 URLRequestInfo::URLRequestInfo(PluginModule* module) 157 PPB_URLRequestInfo_Impl::PPB_URLRequestInfo_Impl(PluginModule* module)
156 : Resource(module), 158 : Resource(module),
157 stream_to_file_(false), 159 stream_to_file_(false),
158 follow_redirects_(true), 160 follow_redirects_(true),
159 record_download_progress_(false), 161 record_download_progress_(false),
160 record_upload_progress_(false) { 162 record_upload_progress_(false) {
161 } 163 }
162 164
163 URLRequestInfo::~URLRequestInfo() { 165 PPB_URLRequestInfo_Impl::~PPB_URLRequestInfo_Impl() {
164 } 166 }
165 167
166 // static 168 // static
167 const PPB_URLRequestInfo* URLRequestInfo::GetInterface() { 169 const PPB_URLRequestInfo* PPB_URLRequestInfo_Impl::GetInterface() {
168 return &ppb_urlrequestinfo; 170 return &ppb_urlrequestinfo;
169 } 171 }
170 172
171 URLRequestInfo* URLRequestInfo::AsURLRequestInfo() { 173 PPB_URLRequestInfo_Impl* PPB_URLRequestInfo_Impl::AsPPB_URLRequestInfo_Impl() {
172 return this; 174 return this;
173 } 175 }
174 176
175 bool URLRequestInfo::SetBooleanProperty(PP_URLRequestProperty property, 177 bool PPB_URLRequestInfo_Impl::SetBooleanProperty(PP_URLRequestProperty property,
176 bool value) { 178 bool value) {
177 switch (property) { 179 switch (property) {
178 case PP_URLREQUESTPROPERTY_STREAMTOFILE: 180 case PP_URLREQUESTPROPERTY_STREAMTOFILE:
179 stream_to_file_ = value; 181 stream_to_file_ = value;
180 return true; 182 return true;
181 case PP_URLREQUESTPROPERTY_FOLLOWREDIRECTS: 183 case PP_URLREQUESTPROPERTY_FOLLOWREDIRECTS:
182 follow_redirects_ = value; 184 follow_redirects_ = value;
183 return true; 185 return true;
184 case PP_URLREQUESTPROPERTY_RECORDDOWNLOADPROGRESS: 186 case PP_URLREQUESTPROPERTY_RECORDDOWNLOADPROGRESS:
185 record_download_progress_ = value; 187 record_download_progress_ = value;
186 return true; 188 return true;
187 case PP_URLREQUESTPROPERTY_RECORDUPLOADPROGRESS: 189 case PP_URLREQUESTPROPERTY_RECORDUPLOADPROGRESS:
188 record_upload_progress_ = value; 190 record_upload_progress_ = value;
189 return true; 191 return true;
190 default: 192 default:
191 //NOTIMPLEMENTED(); // TODO(darin): Implement me! 193 //NOTIMPLEMENTED(); // TODO(darin): Implement me!
192 return false; 194 return false;
193 } 195 }
194 } 196 }
195 197
196 bool URLRequestInfo::SetStringProperty(PP_URLRequestProperty property, 198 bool PPB_URLRequestInfo_Impl::SetStringProperty(PP_URLRequestProperty property,
197 const std::string& value) { 199 const std::string& value) {
198 // TODO(darin): Validate input. Perhaps at a different layer? 200 // TODO(darin): Validate input. Perhaps at a different layer?
199 switch (property) { 201 switch (property) {
200 case PP_URLREQUESTPROPERTY_URL: 202 case PP_URLREQUESTPROPERTY_URL:
201 url_ = value; // NOTE: This may be a relative URL. 203 url_ = value; // NOTE: This may be a relative URL.
202 return true; 204 return true;
203 case PP_URLREQUESTPROPERTY_METHOD: 205 case PP_URLREQUESTPROPERTY_METHOD:
204 method_ = value; 206 method_ = value;
205 return true; 207 return true;
206 case PP_URLREQUESTPROPERTY_HEADERS: 208 case PP_URLREQUESTPROPERTY_HEADERS:
207 headers_ = value; 209 headers_ = value;
208 return true; 210 return true;
209 default: 211 default:
210 return false; 212 return false;
211 } 213 }
212 } 214 }
213 215
214 bool URLRequestInfo::AppendDataToBody(const std::string& data) { 216 bool PPB_URLRequestInfo_Impl::AppendDataToBody(const std::string& data) {
215 if (!data.empty()) 217 if (!data.empty())
216 body_.push_back(BodyItem(data)); 218 body_.push_back(BodyItem(data));
217 return true; 219 return true;
218 } 220 }
219 221
220 bool URLRequestInfo::AppendFileToBody(FileRef* file_ref, 222 bool PPB_URLRequestInfo_Impl::AppendFileToBody(
221 int64_t start_offset, 223 PPB_FileRef_Impl* file_ref,
222 int64_t number_of_bytes, 224 int64_t start_offset,
223 PP_Time expected_last_modified_time) { 225 int64_t number_of_bytes,
226 PP_Time expected_last_modified_time) {
224 // Ignore a call to append nothing. 227 // Ignore a call to append nothing.
225 if (number_of_bytes == 0) 228 if (number_of_bytes == 0)
226 return true; 229 return true;
227 230
228 // Check for bad values. (-1 means read until end of file.) 231 // Check for bad values. (-1 means read until end of file.)
229 if (start_offset < 0 || number_of_bytes < -1) 232 if (start_offset < 0 || number_of_bytes < -1)
230 return false; 233 return false;
231 234
232 body_.push_back(BodyItem(file_ref, 235 body_.push_back(BodyItem(file_ref,
233 start_offset, 236 start_offset,
234 number_of_bytes, 237 number_of_bytes,
235 expected_last_modified_time)); 238 expected_last_modified_time));
236 return true; 239 return true;
237 } 240 }
238 241
239 WebURLRequest URLRequestInfo::ToWebURLRequest(WebFrame* frame) const { 242 WebURLRequest PPB_URLRequestInfo_Impl::ToWebURLRequest(WebFrame* frame) const {
240 WebURLRequest web_request; 243 WebURLRequest web_request;
241 web_request.initialize(); 244 web_request.initialize();
242 web_request.setURL(frame->document().completeURL(WebString::fromUTF8(url_))); 245 web_request.setURL(frame->document().completeURL(WebString::fromUTF8(url_)));
243 web_request.setDownloadToFile(stream_to_file_); 246 web_request.setDownloadToFile(stream_to_file_);
244 247
245 if (!method_.empty()) 248 if (!method_.empty())
246 web_request.setHTTPMethod(WebString::fromUTF8(method_)); 249 web_request.setHTTPMethod(WebString::fromUTF8(method_));
247 250
248 if (!headers_.empty()) { 251 if (!headers_.empty()) {
249 net::HttpUtil::HeadersIterator it(headers_.begin(), headers_.end(), "\n"); 252 net::HttpUtil::HeadersIterator it(headers_.begin(), headers_.end(), "\n");
(...skipping 22 matching lines...) Expand all
272 http_body.appendData(WebData(body_[i].data)); 275 http_body.appendData(WebData(body_[i].data));
273 } 276 }
274 } 277 }
275 web_request.setHTTPBody(http_body); 278 web_request.setHTTPBody(http_body);
276 } 279 }
277 280
278 frame->setReferrerForRequest(web_request, WebURL()); // Use default. 281 frame->setReferrerForRequest(web_request, WebURL()); // Use default.
279 return web_request; 282 return web_request;
280 } 283 }
281 284
282 } // namespace pepper 285 } // namespace ppapi
286 } // namespace webkit
287
OLDNEW
« no previous file with comments | « webkit/plugins/ppapi/ppb_url_request_info_impl.h ('k') | webkit/plugins/ppapi/ppb_url_response_info_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698