| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "components/cronet/android/cronet_url_request_adapter.h" | 5 #include "components/cronet/android/cronet_url_request_adapter.h" |
| 6 | 6 |
| 7 #include <limits> | 7 #include <limits> |
| 8 #include <utility> | 8 #include <utility> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| 11 #include "base/bind.h" | 11 #include "base/bind.h" |
| 12 #include "base/location.h" | 12 #include "base/location.h" |
| 13 #include "base/logging.h" | 13 #include "base/logging.h" |
| 14 #include "components/cronet/android/cronet_url_request_context_adapter.h" | 14 #include "components/cronet/android/cronet_url_request_context_adapter.h" |
| 15 #include "components/cronet/android/io_buffer_with_byte_buffer.h" | 15 #include "components/cronet/android/io_buffer_with_byte_buffer.h" |
| 16 #include "components/cronet/android/url_request_error.h" | 16 #include "components/cronet/android/url_request_error.h" |
| 17 #include "jni/CronetUrlRequest_jni.h" | 17 #include "jni/CronetUrlRequest_jni.h" |
| 18 #include "net/base/load_flags.h" | 18 #include "net/base/load_flags.h" |
| 19 #include "net/base/load_states.h" |
| 19 #include "net/base/net_errors.h" | 20 #include "net/base/net_errors.h" |
| 20 #include "net/base/request_priority.h" | 21 #include "net/base/request_priority.h" |
| 21 #include "net/cert/cert_status_flags.h" | 22 #include "net/cert/cert_status_flags.h" |
| 22 #include "net/http/http_response_headers.h" | 23 #include "net/http/http_response_headers.h" |
| 23 #include "net/http/http_status_code.h" | 24 #include "net/http/http_status_code.h" |
| 24 #include "net/http/http_util.h" | 25 #include "net/http/http_util.h" |
| 25 #include "net/ssl/ssl_info.h" | 26 #include "net/ssl/ssl_info.h" |
| 26 #include "net/url_request/redirect_info.h" | 27 #include "net/url_request/redirect_info.h" |
| 27 #include "net/url_request/url_request_context.h" | 28 #include "net/url_request/url_request_context.h" |
| 28 | 29 |
| (...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 292 if (upload_) | 293 if (upload_) |
| 293 url_request_->set_upload(std::move(upload_)); | 294 url_request_->set_upload(std::move(upload_)); |
| 294 url_request_->Start(); | 295 url_request_->Start(); |
| 295 } | 296 } |
| 296 | 297 |
| 297 void CronetURLRequestAdapter::GetStatusOnNetworkThread( | 298 void CronetURLRequestAdapter::GetStatusOnNetworkThread( |
| 298 const base::android::ScopedJavaGlobalRef<jobject>& status_listener_ref) | 299 const base::android::ScopedJavaGlobalRef<jobject>& status_listener_ref) |
| 299 const { | 300 const { |
| 300 DCHECK(context_->IsOnNetworkThread()); | 301 DCHECK(context_->IsOnNetworkThread()); |
| 301 JNIEnv* env = base::android::AttachCurrentThread(); | 302 JNIEnv* env = base::android::AttachCurrentThread(); |
| 303 int status = net::LOAD_STATE_IDLE; |
| 304 // |url_request_| is initialized in StartOnNetworkThread, and it is |
| 305 // never nulled. If it is null, it must be that StartOnNetworkThread |
| 306 // has not been called, pretend that we are in LOAD_STATE_IDLE. |
| 307 // See crbug.com/606872. |
| 308 if (url_request_) |
| 309 status = url_request_->GetLoadState().state; |
| 302 cronet::Java_CronetUrlRequest_onStatus(env, owner_.obj(), | 310 cronet::Java_CronetUrlRequest_onStatus(env, owner_.obj(), |
| 303 status_listener_ref.obj(), | 311 status_listener_ref.obj(), status); |
| 304 url_request_->GetLoadState().state); | |
| 305 } | 312 } |
| 306 | 313 |
| 307 base::android::ScopedJavaLocalRef<jobjectArray> | 314 base::android::ScopedJavaLocalRef<jobjectArray> |
| 308 CronetURLRequestAdapter::GetResponseHeaders(JNIEnv* env) { | 315 CronetURLRequestAdapter::GetResponseHeaders(JNIEnv* env) { |
| 309 DCHECK(context_->IsOnNetworkThread()); | 316 DCHECK(context_->IsOnNetworkThread()); |
| 310 | 317 |
| 311 std::vector<std::string> response_headers; | 318 std::vector<std::string> response_headers; |
| 312 const net::HttpResponseHeaders* headers = url_request_->response_headers(); | 319 const net::HttpResponseHeaders* headers = url_request_->response_headers(); |
| 313 // Returns an empty array if |headers| is nullptr. | 320 // Returns an empty array if |headers| is nullptr. |
| 314 if (headers != nullptr) { | 321 if (headers != nullptr) { |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 369 ConvertUTF8ToJavaString(env, net::ErrorToString(net_error)).obj(), | 376 ConvertUTF8ToJavaString(env, net::ErrorToString(net_error)).obj(), |
| 370 request->GetTotalReceivedBytes()); | 377 request->GetTotalReceivedBytes()); |
| 371 return true; | 378 return true; |
| 372 } | 379 } |
| 373 | 380 |
| 374 net::URLRequest* CronetURLRequestAdapter::GetURLRequestForTesting() { | 381 net::URLRequest* CronetURLRequestAdapter::GetURLRequestForTesting() { |
| 375 return url_request_.get(); | 382 return url_request_.get(); |
| 376 } | 383 } |
| 377 | 384 |
| 378 } // namespace cronet | 385 } // namespace cronet |
| OLD | NEW |