| 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
|
|
|