Skip to content

Commit

Permalink
Turn UploadDataStream into an abstract class, and split the implentation
Browse files Browse the repository at this point in the history
into two classes - one for chunked uploads, one for non-chunked uploads.

This refactoring is aimed at allowing Cronet to add another
implementation for use on Android.

Splitting the logic for the chunked and non-chunked uploads isn't
necessary for that, but the two paths didn't share much code, and
keeping them as one class seems ugly.

BUG=412942

Review URL: https://codereview.chromium.org/560893004

Cr-Commit-Position: refs/heads/master@{#298966}
  • Loading branch information
mmenke authored and Commit bot committed Oct 9, 2014
1 parent 56e7b7c commit cbc2b71
Show file tree
Hide file tree
Showing 39 changed files with 1,315 additions and 698 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,10 @@
#include "extensions/common/features/feature.h"
#include "net/base/auth.h"
#include "net/base/capturing_net_log.h"
#include "net/base/elements_upload_data_stream.h"
#include "net/base/net_util.h"
#include "net/base/request_priority.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/dns/mock_host_resolver.h"
#include "net/url_request/url_request_job_factory_impl.h"
Expand Down Expand Up @@ -520,7 +520,7 @@ void ExtensionWebRequestTest::FireURLRequestWithData(
element_readers.push_back(
new net::UploadBytesElementReader(&(bytes_2[0]), bytes_2.size()));
request->set_upload(make_scoped_ptr(
new net::UploadDataStream(element_readers.Pass(), 0)));
new net::ElementsUploadDataStream(element_readers.Pass(), 0)));
ipc_sender_.PushTask(base::Bind(&base::DoNothing));
request->Start();
}
Expand Down
6 changes: 3 additions & 3 deletions chrome/browser/net/chrome_fraudulent_certificate_reporter.cc
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@
#include "base/stl_util.h"
#include "base/time/time.h"
#include "chrome/browser/net/cert_logger.pb.h"
#include "net/base/elements_upload_data_stream.h"
#include "net/base/load_flags.h"
#include "net/base/request_priority.h"
#include "net/base/upload_bytes_element_reader.h"
#include "net/base/upload_data_stream.h"
#include "net/cert/x509_certificate.h"
#include "net/ssl/ssl_info.h"
#include "net/url_request/url_request_context.h"
Expand Down Expand Up @@ -84,8 +84,8 @@ void ChromeFraudulentCertificateReporter::SendReport(

scoped_ptr<net::UploadElementReader> reader(
net::UploadOwnedBytesElementReader::CreateWithString(report));
url_request->set_upload(make_scoped_ptr(
net::UploadDataStream::CreateWithReader(reader.Pass(), 0)));
url_request->set_upload(
net::ElementsUploadDataStream::CreateWithReader(reader.Pass(), 0));

net::HttpRequestHeaders headers;
headers.SetHeader(net::HttpRequestHeaders::kContentType,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,11 +68,12 @@ net::URLRequestJob* ResponseJob(
net::NetworkDelegate* network_delegate) {
const net::UploadDataStream* upload = request->get_upload();
if (upload != NULL &&
upload->element_readers().size() == 1 &&
upload->element_readers()[0]->AsBytesReader()) {
upload->GetElementReaders() &&
upload->GetElementReaders()->size() == 1 &&
(*upload->GetElementReaders())[0]->AsBytesReader()) {
std::string response_data;
const net::UploadBytesElementReader* bytes_reader =
upload->element_readers()[0]->AsBytesReader();
(*upload->GetElementReaders())[0]->AsBytesReader();
ConstructResponse(bytes_reader->bytes(),
bytes_reader->length(),
&response_data);
Expand Down
8 changes: 4 additions & 4 deletions chrome/browser/policy/cloud/test_request_interceptor.cc
Original file line number Diff line number Diff line change
Expand Up @@ -81,11 +81,11 @@ bool ValidRequest(net::URLRequest* request,
const net::UploadDataStream* stream = request->get_upload();
if (!stream)
return false;
const ScopedVector<net::UploadElementReader>& readers =
stream->element_readers();
if (readers.size() != 1u)
const ScopedVector<net::UploadElementReader>* readers =
stream->GetElementReaders();
if (!readers || readers->size() != 1u)
return false;
const net::UploadBytesElementReader* reader = readers[0]->AsBytesReader();
const net::UploadBytesElementReader* reader = (*readers)[0]->AsBytesReader();
if (!reader)
return false;
std::string data(reader->bytes(), reader->length());
Expand Down
18 changes: 10 additions & 8 deletions chrome/browser/sessions/better_session_restore_browsertest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -80,14 +80,16 @@ net::URLRequestJob* URLRequestFakerForPostRequests(
const net::UploadDataStream* upload_data = request->get_upload();
g_last_upload_bytes.Get().clear();
if (upload_data) {
const ScopedVector<net::UploadElementReader>& readers =
upload_data->element_readers();
for (size_t i = 0; i < readers.size(); ++i) {
const net::UploadBytesElementReader* bytes_reader =
readers[i]->AsBytesReader();
if (bytes_reader) {
g_last_upload_bytes.Get() +=
std::string(bytes_reader->bytes(), bytes_reader->length());
const ScopedVector<net::UploadElementReader>* readers =
upload_data->GetElementReaders();
if (readers) {
for (size_t i = 0; i < readers->size(); ++i) {
const net::UploadBytesElementReader* bytes_reader =
(*readers)[i]->AsBytesReader();
if (bytes_reader) {
g_last_upload_bytes.Get() +=
std::string(bytes_reader->bytes(), bytes_reader->length());
}
}
}
}
Expand Down
6 changes: 3 additions & 3 deletions cloud_print/service/service_state.cc
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,12 @@
#include "base/message_loop/message_loop.h"
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
#include "net/base/elements_upload_data_stream.h"
#include "net/base/escape.h"
#include "net/base/io_buffer.h"
#include "net/base/load_flags.h"
#include "net/base/request_priority.h"
#include "net/base/upload_bytes_element_reader.h"
#include "net/base/upload_data_stream.h"
#include "net/url_request/url_request.h"
#include "net/url_request/url_request_context.h"
#include "net/url_request/url_request_context_builder.h"
Expand Down Expand Up @@ -184,8 +184,8 @@ std::string ServiceState::LoginToGoogle(const std::string& service,

scoped_ptr<net::UploadElementReader> reader(
net::UploadOwnedBytesElementReader::CreateWithString(post_body));
request->set_upload(make_scoped_ptr(
net::UploadDataStream::CreateWithReader(reader.Pass(), 0)));
request->set_upload(
net::ElementsUploadDataStream::CreateWithReader(reader.Pass(), 0));
request->SetExtraRequestHeaderByName(
"Content-Type", "application/x-www-form-urlencoded", true);
request->set_method("POST");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#include "base/strings/stringprintf.h"
#include "components/component_updater/test/test_configurator.h"
#include "net/base/upload_bytes_element_reader.h"
#include "net/base/upload_data_stream.h"
#include "net/url_request/url_request.h"
#include "net/url_request/url_request_filter.h"
#include "net/url_request/url_request_interceptor.h"
Expand Down Expand Up @@ -198,7 +199,7 @@ class URLRequestPostInterceptor::Delegate : public net::URLRequestInterceptor {

const net::UploadDataStream* stream = request->get_upload();
const net::UploadBytesElementReader* reader =
stream->element_readers()[0]->AsBytesReader();
(*stream->GetElementReaders())[0]->AsBytesReader();
const int size = reader->length();
scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(size));
const std::string request_body(reader->bytes());
Expand Down
9 changes: 5 additions & 4 deletions components/cronet/android/url_request_adapter.cc
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
#include "base/strings/string_number_conversions.h"
#include "components/cronet/android/url_request_context_adapter.h"
#include "components/cronet/android/wrapped_channel_upload_element_reader.h"
#include "net/base/element_upload_data_stream.h"
#include "net/base/load_flags.h"
#include "net/base/upload_bytes_element_reader.h"
#include "net/http/http_status_code.h"
Expand Down Expand Up @@ -56,15 +57,15 @@ void URLRequestAdapter::SetUploadContent(const char* bytes, int bytes_len) {
std::vector<char> data(bytes, bytes + bytes_len);
scoped_ptr<net::UploadElementReader> reader(
new net::UploadOwnedBytesElementReader(&data));
upload_data_stream_.reset(
net::UploadDataStream::CreateWithReader(reader.Pass(), 0));
upload_data_stream_ =
net::ElementsUploadDataStream::CreateWithReader(reader.Pass(), 0);
}

void URLRequestAdapter::SetUploadChannel(JNIEnv* env, int64 content_length) {
scoped_ptr<net::UploadElementReader> reader(
new WrappedChannelElementReader(delegate_, content_length));
upload_data_stream_.reset(
net::UploadDataStream::CreateWithReader(reader.Pass(), 0));
upload_data_stream_ =
net::ElementsUploadDataStream::CreateWithReader(reader.Pass(), 0);
}

void URLRequestAdapter::EnableChunkedUpload() {
Expand Down
9 changes: 5 additions & 4 deletions content/browser/download/download_manager_impl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,10 @@
#include "content/public/browser/resource_context.h"
#include "content/public/browser/web_contents_delegate.h"
#include "content/public/common/referrer.h"
#include "net/base/elements_upload_data_stream.h"
#include "net/base/load_flags.h"
#include "net/base/request_priority.h"
#include "net/base/upload_bytes_element_reader.h"
#include "net/base/upload_data_stream.h"
#include "net/url_request/url_request_context.h"

namespace content {
Expand All @@ -63,8 +63,8 @@ void BeginDownload(scoped_ptr<DownloadUrlParameters> params,
const std::string& body = params->post_body();
scoped_ptr<net::UploadElementReader> reader(
net::UploadOwnedBytesElementReader::CreateWithString(body));
request->set_upload(make_scoped_ptr(
net::UploadDataStream::CreateWithReader(reader.Pass(), 0)));
request->set_upload(
net::ElementsUploadDataStream::CreateWithReader(reader.Pass(), 0));
}
if (params->post_id() >= 0) {
// The POST in this case does not have an actual body, and only works
Expand All @@ -75,7 +75,8 @@ void BeginDownload(scoped_ptr<DownloadUrlParameters> params,
DCHECK_EQ("POST", params->method());
ScopedVector<net::UploadElementReader> element_readers;
request->set_upload(make_scoped_ptr(
new net::UploadDataStream(element_readers.Pass(), params->post_id())));
new net::ElementsUploadDataStream(element_readers.Pass(),
params->post_id())));
}

// If we're not at the beginning of the file, retrieve only the remaining
Expand Down
6 changes: 3 additions & 3 deletions content/browser/loader/resource_dispatcher_host_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,10 @@
#include "content/public/test/test_browser_context.h"
#include "content/public/test/test_browser_thread_bundle.h"
#include "content/test/test_content_browser_client.h"
#include "net/base/elements_upload_data_stream.h"
#include "net/base/net_errors.h"
#include "net/base/request_priority.h"
#include "net/base/upload_bytes_element_reader.h"
#include "net/base/upload_data_stream.h"
#include "net/http/http_util.h"
#include "net/url_request/url_request.h"
#include "net/url_request/url_request_context.h"
Expand Down Expand Up @@ -1779,8 +1779,8 @@ TEST_F(ResourceDispatcherHostTest, CalculateApproximateMemoryCost) {
std::fill(upload_content.begin(), upload_content.end(), 'x');
scoped_ptr<net::UploadElementReader> reader(new net::UploadBytesElementReader(
upload_content.data(), upload_content.size()));
req->set_upload(make_scoped_ptr(
net::UploadDataStream::CreateWithReader(reader.Pass(), 0)));
req->set_upload(
net::ElementsUploadDataStream::CreateWithReader(reader.Pass(), 0));

// Since the upload throttling is disabled, this has no effect on the cost.
EXPECT_EQ(
Expand Down
5 changes: 3 additions & 2 deletions content/browser/loader/upload_data_stream_builder.cc
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
#include "base/logging.h"
#include "content/browser/fileapi/upload_file_system_file_element_reader.h"
#include "content/common/resource_request_body.h"
#include "net/base/elements_upload_data_stream.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 "storage/browser/blob/blob_data_handle.h"
#include "storage/browser/blob/blob_storage_context.h"
Expand Down Expand Up @@ -134,7 +134,8 @@ scoped_ptr<net::UploadDataStream> UploadDataStreamBuilder::Build(
}

return make_scoped_ptr(
new net::UploadDataStream(element_readers.Pass(), body->identifier()));
new net::ElementsUploadDataStream(element_readers.Pass(),
body->identifier()));
}

} // namespace content
Loading

0 comments on commit cbc2b71

Please sign in to comment.