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

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

Issue 617393005: Make URLRequestContextAdapter initialization asynchronous (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed Misha's comments Created 6 years, 2 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
index 9d9e29b2ce3258ab2a86ee8e506eb99426c7731c..fc4cfdca3d0eb143503e49a0a29b26f67d1e5e7c 100644
--- a/components/cronet/android/url_request_adapter.cc
+++ b/components/cronet/android/url_request_adapter.cc
@@ -9,6 +9,7 @@
#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"
@@ -40,6 +41,7 @@ URLRequestAdapter::URLRequestAdapter(URLRequestContextAdapter* context,
}
URLRequestAdapter::~URLRequestAdapter() {
+ DCHECK(OnNetworkThread());
CHECK(url_request_ == NULL);
}
@@ -76,7 +78,7 @@ void URLRequestAdapter::AppendChunk(const char* bytes, int bytes_len,
VLOG(1) << "AppendChunk, len: " << bytes_len << ", last: " << is_last_chunk;
scoped_ptr<char[]> buf(new char[bytes_len]);
memcpy(buf.get(), bytes, bytes_len);
- context_->GetNetworkTaskRunner()->PostTask(
+ context_->PostTaskToNetworkThread(
FROM_HERE,
base::Bind(&URLRequestAdapter::OnAppendChunk,
base::Unretained(this),
@@ -107,7 +109,7 @@ std::string URLRequestAdapter::GetNegotiatedProtocol() const {
}
void URLRequestAdapter::Start() {
- context_->GetNetworkTaskRunner()->PostTask(
+ context_->PostTaskToNetworkThread(
FROM_HERE,
base::Bind(&URLRequestAdapter::OnInitiateConnection,
base::Unretained(this)));
@@ -115,10 +117,12 @@ void URLRequestAdapter::Start() {
void URLRequestAdapter::OnAppendChunk(const scoped_ptr<char[]> bytes,
int bytes_len, bool is_last_chunk) {
+ DCHECK(OnNetworkThread());
url_request_->AppendChunkToUpload(bytes.get(), bytes_len, is_last_chunk);
}
void URLRequestAdapter::OnInitiateConnection() {
+ DCHECK(OnNetworkThread());
if (canceled_) {
return;
}
@@ -158,12 +162,13 @@ void URLRequestAdapter::Cancel() {
canceled_ = true;
- context_->GetNetworkTaskRunner()->PostTask(
+ context_->PostTaskToNetworkThread(
FROM_HERE,
base::Bind(&URLRequestAdapter::OnCancelRequest, base::Unretained(this)));
}
void URLRequestAdapter::OnCancelRequest() {
+ DCHECK(OnNetworkThread());
VLOG(1) << "Canceling chromium request: " << url_.possibly_invalid_spec();
if (url_request_ != NULL) {
@@ -174,18 +179,21 @@ void URLRequestAdapter::OnCancelRequest() {
}
void URLRequestAdapter::Destroy() {
- context_->GetNetworkTaskRunner()->PostTask(
+ 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) {
+ DCHECK(OnNetworkThread());
if (request->status().status() != net::URLRequestStatus::SUCCESS) {
OnRequestFailed();
return;
@@ -203,6 +211,7 @@ void URLRequestAdapter::OnResponseStarted(net::URLRequest* request) {
// Reads all available data or starts an asynchronous read.
void URLRequestAdapter::Read() {
+ DCHECK(OnNetworkThread());
while (true) {
if (read_buffer_->RemainingCapacity() == 0) {
int new_capacity = read_buffer_->capacity() + kBufferSizeIncrement;
@@ -239,6 +248,7 @@ void URLRequestAdapter::Read() {
void URLRequestAdapter::OnReadCompleted(net::URLRequest* request,
int bytes_read) {
+ DCHECK(OnNetworkThread());
VLOG(1) << "Asynchronously read: " << bytes_read << " bytes";
if (bytes_read < 0) {
OnRequestFailed();
@@ -253,12 +263,14 @@ void URLRequestAdapter::OnReadCompleted(net::URLRequest* request,
}
void URLRequestAdapter::OnBytesRead(int bytes_read) {
+ DCHECK(OnNetworkThread());
read_buffer_->set_offset(read_buffer_->offset() + bytes_read);
bytes_read_ += bytes_read;
total_bytes_read_ += bytes_read;
}
void URLRequestAdapter::OnRequestSucceeded() {
+ DCHECK(OnNetworkThread());
if (canceled_) {
return;
}
@@ -270,6 +282,7 @@ void URLRequestAdapter::OnRequestSucceeded() {
}
void URLRequestAdapter::OnRequestFailed() {
+ DCHECK(OnNetworkThread());
if (canceled_) {
return;
}
@@ -281,10 +294,12 @@ void URLRequestAdapter::OnRequestFailed() {
}
void URLRequestAdapter::OnRequestCanceled() {
+ DCHECK(OnNetworkThread());
OnRequestCompleted();
}
void URLRequestAdapter::OnRequestCompleted() {
+ DCHECK(OnNetworkThread());
VLOG(1) << "Completed: " << url_.possibly_invalid_spec();
url_request_.reset();
@@ -293,7 +308,12 @@ void URLRequestAdapter::OnRequestCompleted() {
}
unsigned char* URLRequestAdapter::Data() const {
+ DCHECK(OnNetworkThread());
return reinterpret_cast<unsigned char*>(read_buffer_->StartOfBuffer());
}
+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