Chromium Code Reviews| Index: chrome/browser/automation/url_request_automation_job.cc |
| diff --git a/chrome/browser/automation/url_request_automation_job.cc b/chrome/browser/automation/url_request_automation_job.cc |
| index 44b7b51ebf20c4add8157dda43d83a698fd789bc..09713760cdde2c0e2eb06f63a8da6d969a01f65b 100644 |
| --- a/chrome/browser/automation/url_request_automation_job.cc |
| +++ b/chrome/browser/automation/url_request_automation_job.cc |
| @@ -16,6 +16,9 @@ |
| #include "net/base/host_port_pair.h" |
| #include "net/base/io_buffer.h" |
| #include "net/base/net_errors.h" |
| +#include "net/base/upload_bytes_element_reader.h" |
| +#include "net/base/upload_data_stream.h" |
| +#include "net/base/upload_file_element_reader.h" |
| #include "net/cookies/cookie_monster.h" |
| #include "net/http/http_request_headers.h" |
| #include "net/http/http_response_headers.h" |
| @@ -463,13 +466,39 @@ void URLRequestAutomationJob::StartAsync() { |
| resource_type = info->GetResourceType(); |
| } |
| + // Construct UploadData from UploadDataStream. |
| + const net::UploadDataStream* upload_data_stream = request_->get_upload(); |
|
ananta
2012/11/28 02:21:18
This code seems generic enough to move to a helper
hashimoto
2012/11/28 02:34:05
Done.
|
| + scoped_refptr<net::UploadData> upload_data; |
| + if (upload_data_stream) { |
| + upload_data = new net::UploadData(); |
| + const ScopedVector<net::UploadElementReader>& element_readers = |
| + upload_data_stream->element_readers(); |
| + for (size_t i = 0; i < element_readers.size(); ++i) { |
| + const net::UploadElementReader* reader = element_readers[i]; |
| + if (reader->AsBytesReader()) { |
| + const net::UploadBytesElementReader* bytes_reader = |
| + reader->AsBytesReader(); |
| + upload_data->AppendBytes(bytes_reader->bytes(), bytes_reader->length()); |
| + } else if (reader->AsFileReader()) { |
| + const net::UploadFileElementReader* file_reader = |
| + reader->AsFileReader(); |
| + upload_data->AppendFileRange(file_reader->path(), |
| + file_reader->range_offset(), |
| + file_reader->range_length(), |
| + file_reader->expected_modification_time()); |
| + } else { |
| + NOTIMPLEMENTED(); |
| + } |
| + } |
| + } |
| + |
| // Ask automation to start this request. |
| AutomationURLRequest automation_request; |
| automation_request.url = request_->url().spec(); |
| automation_request.method = request_->method(); |
| automation_request.referrer = referrer.spec(); |
| automation_request.extra_request_headers = new_request_headers.ToString(); |
| - automation_request.upload_data = request_->get_upload_mutable(); |
| + automation_request.upload_data = upload_data; |
| automation_request.resource_type = resource_type; |
| automation_request.load_flags = request_->load_flags(); |