OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 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 "chrome/browser/automation/url_request_automation_job.h" | 5 #include "chrome/browser/automation/url_request_automation_job.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/compiler_specific.h" | 8 #include "base/compiler_specific.h" |
9 #include "base/message_loop.h" | 9 #include "base/message_loop.h" |
10 #include "base/time.h" | 10 #include "base/time.h" |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
57 AutomationResourceMessageFilter* filter, | 57 AutomationResourceMessageFilter* filter, |
58 bool is_pending) | 58 bool is_pending) |
59 : net::URLRequestJob(request, request->context()->network_delegate()), | 59 : net::URLRequestJob(request, request->context()->network_delegate()), |
60 id_(0), | 60 id_(0), |
61 tab_(tab), | 61 tab_(tab), |
62 message_filter_(filter), | 62 message_filter_(filter), |
63 pending_buf_size_(0), | 63 pending_buf_size_(0), |
64 redirect_status_(0), | 64 redirect_status_(0), |
65 request_id_(request_id), | 65 request_id_(request_id), |
66 is_pending_(is_pending), | 66 is_pending_(is_pending), |
| 67 upload_size_(0), |
67 ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) { | 68 ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) { |
68 DVLOG(1) << "URLRequestAutomationJob create. Count: " << ++instance_count_; | 69 DVLOG(1) << "URLRequestAutomationJob create. Count: " << ++instance_count_; |
69 DCHECK(message_filter_ != NULL); | 70 DCHECK(message_filter_ != NULL); |
70 | 71 |
71 if (message_filter_) { | 72 if (message_filter_) { |
72 id_ = message_filter_->NewAutomationRequestId(); | 73 id_ = message_filter_->NewAutomationRequestId(); |
73 DCHECK_NE(id_, 0); | 74 DCHECK_NE(id_, 0); |
74 } | 75 } |
75 } | 76 } |
76 | 77 |
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
227 *http_status_code = redirect_status_; | 228 *http_status_code = redirect_status_; |
228 *location = GURL(redirect_url_); | 229 *location = GURL(redirect_url_); |
229 return true; | 230 return true; |
230 } | 231 } |
231 | 232 |
232 uint64 URLRequestAutomationJob::GetUploadProgress() const { | 233 uint64 URLRequestAutomationJob::GetUploadProgress() const { |
233 if (request_ && request_->status().is_success()) { | 234 if (request_ && request_->status().is_success()) { |
234 // We don't support incremental progress notifications in ChromeFrame. When | 235 // We don't support incremental progress notifications in ChromeFrame. When |
235 // we receive a response for the POST request from Chromeframe, it means | 236 // we receive a response for the POST request from Chromeframe, it means |
236 // that the upload is fully complete. | 237 // that the upload is fully complete. |
237 const ResourceRequestInfo* info = ResourceRequestInfo::ForRequest(request_); | 238 return upload_size_; |
238 if (info) { | |
239 return info->GetUploadSize(); | |
240 } | |
241 } | 239 } |
242 return 0; | 240 return 0; |
243 } | 241 } |
244 | 242 |
245 net::HostPortPair URLRequestAutomationJob::GetSocketAddress() const { | 243 net::HostPortPair URLRequestAutomationJob::GetSocketAddress() const { |
246 return socket_address_; | 244 return socket_address_; |
247 } | 245 } |
248 | 246 |
249 bool URLRequestAutomationJob::MayFilterMessage(const IPC::Message& message, | 247 bool URLRequestAutomationJob::MayFilterMessage(const IPC::Message& message, |
250 int* request_id) { | 248 int* request_id) { |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
295 redirect_status_ = response.redirect_status; | 293 redirect_status_ = response.redirect_status; |
296 DCHECK(redirect_status_ == 0 || redirect_status_ == 200 || | 294 DCHECK(redirect_status_ == 0 || redirect_status_ == 200 || |
297 (redirect_status_ >= 300 && redirect_status_ < 400)); | 295 (redirect_status_ >= 300 && redirect_status_ < 400)); |
298 | 296 |
299 if (!response.headers.empty()) { | 297 if (!response.headers.empty()) { |
300 headers_ = new net::HttpResponseHeaders( | 298 headers_ = new net::HttpResponseHeaders( |
301 net::HttpUtil::AssembleRawHeaders(response.headers.data(), | 299 net::HttpUtil::AssembleRawHeaders(response.headers.data(), |
302 response.headers.size())); | 300 response.headers.size())); |
303 } | 301 } |
304 socket_address_ = response.socket_address; | 302 socket_address_ = response.socket_address; |
| 303 upload_size_ = response.upload_size; |
| 304 // Notify upload size to delegate. |
| 305 request_->NotifyRequestBodyInitialized(upload_size_); |
| 306 |
305 NotifyHeadersComplete(); | 307 NotifyHeadersComplete(); |
306 } | 308 } |
307 | 309 |
308 void URLRequestAutomationJob::OnDataAvailable( | 310 void URLRequestAutomationJob::OnDataAvailable( |
309 int id, const std::string& bytes) { | 311 int id, const std::string& bytes) { |
310 DVLOG(1) << "URLRequestAutomationJob: " << request_->url().spec() | 312 DVLOG(1) << "URLRequestAutomationJob: " << request_->url().spec() |
311 << " - data available, Size: " << bytes.size(); | 313 << " - data available, Size: " << bytes.size(); |
312 DCHECK(!bytes.empty()); | 314 DCHECK(!bytes.empty()); |
313 | 315 |
314 // The request completed, and we have all the data. | 316 // The request completed, and we have all the data. |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
487 if (!is_done()) { | 489 if (!is_done()) { |
488 NotifyDone(request_status_); | 490 NotifyDone(request_status_); |
489 } | 491 } |
490 // Reset any pending reads. | 492 // Reset any pending reads. |
491 if (pending_buf_) { | 493 if (pending_buf_) { |
492 pending_buf_ = NULL; | 494 pending_buf_ = NULL; |
493 pending_buf_size_ = 0; | 495 pending_buf_size_ = 0; |
494 NotifyReadComplete(0); | 496 NotifyReadComplete(0); |
495 } | 497 } |
496 } | 498 } |
OLD | NEW |