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

Unified Diff: chrome/browser/automation/url_request_automation_job.cc

Issue 11419034: net: Move ownership of UploadDataStream from URLRequestHttpJob to URLRequest (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Fix ASAN Created 8 years, 1 month 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 side-by-side diff with in-line comments
Download patch
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();
+ 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();

Powered by Google App Engine
This is Rietveld 408576698