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

Unified Diff: components/cronet/android/url_request_adapter.cc

Issue 2361413002: Obliterate legacy cronet API. All of its users have been migrated. (Closed)
Patch Set: Created 4 years, 3 months 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: components/cronet/android/url_request_adapter.cc
diff --git a/components/cronet/android/url_request_adapter.cc b/components/cronet/android/url_request_adapter.cc
deleted file mode 100644
index 95d658e2e671a6376ea367a6f53f1b974f88ba3b..0000000000000000000000000000000000000000
--- a/components/cronet/android/url_request_adapter.cc
+++ /dev/null
@@ -1,339 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "components/cronet/android/url_request_adapter.h"
-
-#include <stddef.h>
-#include <string.h>
-#include <utility>
-
-#include "base/bind.h"
-#include "base/location.h"
-#include "base/logging.h"
-#include "base/single_thread_task_runner.h"
-#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/elements_upload_data_stream.h"
-#include "net/base/load_flags.h"
-#include "net/base/net_errors.h"
-#include "net/base/upload_bytes_element_reader.h"
-#include "net/http/http_response_headers.h"
-#include "net/http/http_status_code.h"
-
-namespace cronet {
-
-static const size_t kReadBufferSize = 32768;
-
-URLRequestAdapter::URLRequestAdapter(URLRequestContextAdapter* context,
- URLRequestAdapterDelegate* delegate,
- GURL url,
- net::RequestPriority priority)
- : method_("GET"),
- total_bytes_read_(0),
- error_code_(0),
- http_status_code_(0),
- canceled_(false),
- expected_size_(0),
- chunked_upload_(false),
- disable_redirect_(false) {
- context_ = context;
- delegate_ = delegate;
- url_ = url;
- priority_ = priority;
-}
-
-URLRequestAdapter::~URLRequestAdapter() {
- DCHECK(OnNetworkThread());
- CHECK(url_request_ == NULL);
-}
-
-void URLRequestAdapter::SetMethod(const std::string& method) {
- method_ = method;
-}
-
-void URLRequestAdapter::AddHeader(const std::string& name,
- const std::string& value) {
- headers_.SetHeader(name, value);
-}
-
-void URLRequestAdapter::SetUploadContent(const char* bytes, int bytes_len) {
- std::vector<char> data(bytes, bytes + bytes_len);
- std::unique_ptr<net::UploadElementReader> reader(
- new net::UploadOwnedBytesElementReader(&data));
- upload_data_stream_ =
- net::ElementsUploadDataStream::CreateWithReader(std::move(reader), 0);
-}
-
-void URLRequestAdapter::SetUploadChannel(JNIEnv* env, int64_t content_length) {
- std::unique_ptr<net::UploadElementReader> reader(
- new WrappedChannelElementReader(delegate_, content_length));
- upload_data_stream_ =
- net::ElementsUploadDataStream::CreateWithReader(std::move(reader), 0);
-}
-
-void URLRequestAdapter::DisableRedirects() {
- disable_redirect_ = true;
-}
-
-void URLRequestAdapter::EnableChunkedUpload() {
- chunked_upload_ = true;
-}
-
-void URLRequestAdapter::AppendChunk(const char* bytes, int bytes_len,
- bool is_last_chunk) {
- VLOG(1) << "AppendChunk, len: " << bytes_len << ", last: " << is_last_chunk;
- std::unique_ptr<char[]> buf(new char[bytes_len]);
- memcpy(buf.get(), bytes, bytes_len);
- context_->PostTaskToNetworkThread(
- FROM_HERE,
- base::Bind(&URLRequestAdapter::OnAppendChunk, base::Unretained(this),
- base::Passed(&buf), bytes_len, is_last_chunk));
-}
-
-std::string URLRequestAdapter::GetHeader(const std::string& name) const {
- std::string value;
- if (url_request_ != NULL) {
- url_request_->GetResponseHeaderByName(name, &value);
- }
- return value;
-}
-
-net::HttpResponseHeaders* URLRequestAdapter::GetResponseHeaders() const {
- if (url_request_ == NULL) {
- return NULL;
- }
- return url_request_->response_headers();
-}
-
-std::string URLRequestAdapter::GetNegotiatedProtocol() const {
- if (url_request_ == NULL)
- return std::string();
- return url_request_->response_info().alpn_negotiated_protocol;
-}
-
-bool URLRequestAdapter::GetWasCached() const {
- if (url_request_ == NULL)
- return false;
- return url_request_->response_info().was_cached;
-}
-
-void URLRequestAdapter::Start() {
- context_->PostTaskToNetworkThread(
- FROM_HERE,
- base::Bind(&URLRequestAdapter::OnInitiateConnection,
- base::Unretained(this)));
-}
-
-void URLRequestAdapter::OnAppendChunk(const std::unique_ptr<char[]> bytes,
- int bytes_len,
- bool is_last_chunk) {
- DCHECK(OnNetworkThread());
- // If AppendData returns false, the request has been cancelled or completed
- // without uploading the entire request body. Either way, that result will
- // have been sent to the embedder, so there's nothing else to do here.
- chunked_upload_writer_->AppendData(bytes.get(), bytes_len, is_last_chunk);
-}
-
-void URLRequestAdapter::OnInitiateConnection() {
- DCHECK(OnNetworkThread());
- if (canceled_) {
- return;
- }
-
- VLOG(1) << "Starting chromium request: "
- << url_.possibly_invalid_spec().c_str()
- << " priority: " << RequestPriorityToString(priority_);
- url_request_ = context_->GetURLRequestContext()->CreateRequest(
- url_, net::DEFAULT_PRIORITY, this);
- int flags = net::LOAD_DO_NOT_SAVE_COOKIES | net::LOAD_DO_NOT_SEND_COOKIES;
- if (context_->load_disable_cache())
- flags |= net::LOAD_DISABLE_CACHE;
- url_request_->SetLoadFlags(flags);
- url_request_->set_method(method_);
- url_request_->SetExtraRequestHeaders(headers_);
- if (!headers_.HasHeader(net::HttpRequestHeaders::kUserAgent)) {
- std::string user_agent;
- user_agent = context_->GetUserAgent(url_);
- url_request_->SetExtraRequestHeaderByName(
- net::HttpRequestHeaders::kUserAgent, user_agent, true /* override */);
- }
-
- if (upload_data_stream_) {
- url_request_->set_upload(std::move(upload_data_stream_));
- } else if (chunked_upload_) {
- std::unique_ptr<net::ChunkedUploadDataStream> chunked_upload_data_stream(
- new net::ChunkedUploadDataStream(0));
- // Create a ChunkedUploadDataStream::Writer, which keeps a weak reference to
- // the UploadDataStream, before passing ownership of the stream to the
- // URLRequest.
- chunked_upload_writer_ = chunked_upload_data_stream->CreateWriter();
- url_request_->set_upload(std::move(chunked_upload_data_stream));
- }
-
- url_request_->SetPriority(priority_);
-
- url_request_->Start();
-}
-
-void URLRequestAdapter::Cancel() {
- context_->PostTaskToNetworkThread(
- FROM_HERE,
- base::Bind(&URLRequestAdapter::OnCancelRequest, base::Unretained(this)));
-}
-
-void URLRequestAdapter::OnCancelRequest() {
- DCHECK(OnNetworkThread());
- DCHECK(!canceled_);
- VLOG(1) << "Canceling chromium request: " << url_.possibly_invalid_spec();
- canceled_ = true;
- // Check whether request has already completed.
- if (url_request_ == nullptr)
- return;
-
- url_request_->Cancel();
- OnRequestCompleted();
-}
-
-void URLRequestAdapter::Destroy() {
- context_->PostTaskToNetworkThread(
- FROM_HERE, base::Bind(&URLRequestAdapter::OnDestroyRequest, this));
-}
-
-// static
-void URLRequestAdapter::OnDestroyRequest(URLRequestAdapter* self) {
- DCHECK(self->OnNetworkThread());
- VLOG(1) << "Destroying chromium request: "
- << self->url_.possibly_invalid_spec();
- delete self;
-}
-
-// static
-void URLRequestAdapter::OnResponseStarted(net::URLRequest* request,
- int net_error) {
- DCHECK_NE(net::ERR_IO_PENDING, net_error);
- DCHECK(OnNetworkThread());
-
- if (net_error != net::OK) {
- OnRequestFailed(net_error);
- return;
- }
-
- http_status_code_ = request->GetResponseCode();
- VLOG(1) << "Response started with status: " << http_status_code_;
-
- net::HttpResponseHeaders* headers = request->response_headers();
- if (headers)
- http_status_text_ = headers->GetStatusText();
-
- request->GetResponseHeaderByName("Content-Type", &content_type_);
- expected_size_ = request->GetExpectedContentSize();
- delegate_->OnResponseStarted(this);
-
- Read();
-}
-
-// Reads all available data or starts an asynchronous read.
-void URLRequestAdapter::Read() {
- DCHECK(OnNetworkThread());
- if (!read_buffer_.get())
- read_buffer_ = new net::IOBufferWithSize(kReadBufferSize);
-
- while(true) {
- int result = url_request_->Read(read_buffer_.get(), kReadBufferSize);
- // If IO is pending, wait for the URLRequest to call OnReadCompleted.
- if (result == net::ERR_IO_PENDING)
- return;
- // Stop when request has failed or succeeded.
- if (!HandleReadResult(result))
- return;
- }
-}
-
-bool URLRequestAdapter::HandleReadResult(int result) {
- DCHECK(OnNetworkThread());
- if (result < 0) {
- OnRequestFailed(result);
- return false;
- }
-
- if (result == 0) {
- OnRequestSucceeded();
- return false;
- }
-
- total_bytes_read_ += result;
- delegate_->OnBytesRead(this, result);
-
- return true;
-}
-
-void URLRequestAdapter::OnReadCompleted(net::URLRequest* request,
- int bytes_read) {
- DCHECK_NE(net::ERR_IO_PENDING, bytes_read);
- if (!HandleReadResult(bytes_read))
- return;
-
- Read();
-}
-
-void URLRequestAdapter::OnReceivedRedirect(net::URLRequest* request,
- const net::RedirectInfo& info,
- bool* defer_redirect) {
- DCHECK(OnNetworkThread());
- if (disable_redirect_) {
- http_status_code_ = request->GetResponseCode();
- request->CancelWithError(net::ERR_TOO_MANY_REDIRECTS);
- error_code_ = net::ERR_TOO_MANY_REDIRECTS;
- canceled_ = true;
- *defer_redirect = false;
- OnRequestCompleted();
- }
-}
-
-void URLRequestAdapter::OnRequestSucceeded() {
- DCHECK(OnNetworkThread());
- if (canceled_) {
- return;
- }
-
- VLOG(1) << "Request completed with HTTP status: " << http_status_code_
- << ". Total bytes read: " << total_bytes_read_;
-
- OnRequestCompleted();
-}
-
-void URLRequestAdapter::OnRequestFailed(int net_error) {
- DCHECK_LE(net_error, 0);
- DCHECK_NE(net::ERR_IO_PENDING, net_error);
- DCHECK(OnNetworkThread());
- if (canceled_) {
- return;
- }
-
- error_code_ = net_error;
- VLOG(1) << "Request failed with error: " << net::ErrorToString(error_code_);
- OnRequestCompleted();
-}
-
-void URLRequestAdapter::OnRequestCompleted() {
- DCHECK(OnNetworkThread());
- VLOG(1) << "Completed: " << url_.possibly_invalid_spec();
-
- DCHECK(url_request_ != nullptr);
-
- delegate_->OnRequestFinished(this);
- url_request_.reset();
-}
-
-unsigned char* URLRequestAdapter::Data() const {
- DCHECK(OnNetworkThread());
- return reinterpret_cast<unsigned char*>(read_buffer_->data());
-}
-
-bool URLRequestAdapter::OnNetworkThread() const {
- return context_->GetNetworkTaskRunner()->BelongsToCurrentThread();
-}
-
-} // namespace cronet
« no previous file with comments | « components/cronet/android/url_request_adapter.h ('k') | components/cronet/android/url_request_context_adapter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698