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

Side by Side Diff: components/cronet/android/cronet_url_request_adapter.cc

Issue 2069303002: Add new Cronet exception class for QUIC errors (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: header Created 4 years, 5 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 unified diff | Download patch
OLDNEW
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/load_states.h"
20 #include "net/base/net_errors.h" 20 #include "net/base/net_errors.h"
21 #include "net/base/request_priority.h" 21 #include "net/base/request_priority.h"
22 #include "net/cert/cert_status_flags.h" 22 #include "net/cert/cert_status_flags.h"
23 #include "net/http/http_response_headers.h" 23 #include "net/http/http_response_headers.h"
24 #include "net/http/http_status_code.h" 24 #include "net/http/http_status_code.h"
25 #include "net/http/http_util.h" 25 #include "net/http/http_util.h"
26 #include "net/quic/quic_protocol.h"
26 #include "net/ssl/ssl_info.h" 27 #include "net/ssl/ssl_info.h"
27 #include "net/url_request/redirect_info.h" 28 #include "net/url_request/redirect_info.h"
28 #include "net/url_request/url_request_context.h" 29 #include "net/url_request/url_request_context.h"
29 30
30 using base::android::ConvertUTF8ToJavaString; 31 using base::android::ConvertUTF8ToJavaString;
31 32
32 namespace cronet { 33 namespace cronet {
33 34
34 // Explicitly register static JNI functions. 35 // Explicitly register static JNI functions.
35 bool CronetUrlRequestAdapterRegisterJni(JNIEnv* env) { 36 bool CronetUrlRequestAdapterRegisterJni(JNIEnv* env) {
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
228 void CronetURLRequestAdapter::OnSSLCertificateError( 229 void CronetURLRequestAdapter::OnSSLCertificateError(
229 net::URLRequest* request, 230 net::URLRequest* request,
230 const net::SSLInfo& ssl_info, 231 const net::SSLInfo& ssl_info,
231 bool fatal) { 232 bool fatal) {
232 DCHECK(context_->IsOnNetworkThread()); 233 DCHECK(context_->IsOnNetworkThread());
233 request->Cancel(); 234 request->Cancel();
234 int net_error = net::MapCertStatusToNetError(ssl_info.cert_status); 235 int net_error = net::MapCertStatusToNetError(ssl_info.cert_status);
235 JNIEnv* env = base::android::AttachCurrentThread(); 236 JNIEnv* env = base::android::AttachCurrentThread();
236 cronet::Java_CronetUrlRequest_onError( 237 cronet::Java_CronetUrlRequest_onError(
237 env, owner_.obj(), NetErrorToUrlRequestError(net_error), net_error, 238 env, owner_.obj(), NetErrorToUrlRequestError(net_error), net_error,
239 net::QUIC_NO_ERROR,
238 ConvertUTF8ToJavaString(env, net::ErrorToString(net_error)).obj(), 240 ConvertUTF8ToJavaString(env, net::ErrorToString(net_error)).obj(),
239 request->GetTotalReceivedBytes()); 241 request->GetTotalReceivedBytes());
240 } 242 }
241 243
242 void CronetURLRequestAdapter::OnResponseStarted(net::URLRequest* request) { 244 void CronetURLRequestAdapter::OnResponseStarted(net::URLRequest* request) {
243 DCHECK(context_->IsOnNetworkThread()); 245 DCHECK(context_->IsOnNetworkThread());
244 if (MaybeReportError(request)) 246 if (MaybeReportError(request))
245 return; 247 return;
246 JNIEnv* env = base::android::AttachCurrentThread(); 248 JNIEnv* env = base::android::AttachCurrentThread();
247 cronet::Java_CronetUrlRequest_onResponseStarted( 249 cronet::Java_CronetUrlRequest_onResponseStarted(
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
361 } 363 }
362 delete this; 364 delete this;
363 } 365 }
364 366
365 bool CronetURLRequestAdapter::MaybeReportError(net::URLRequest* request) const { 367 bool CronetURLRequestAdapter::MaybeReportError(net::URLRequest* request) const {
366 DCHECK_NE(net::URLRequestStatus::IO_PENDING, url_request_->status().status()); 368 DCHECK_NE(net::URLRequestStatus::IO_PENDING, url_request_->status().status());
367 DCHECK_EQ(request, url_request_.get()); 369 DCHECK_EQ(request, url_request_.get());
368 if (url_request_->status().is_success()) 370 if (url_request_->status().is_success())
369 return false; 371 return false;
370 int net_error = url_request_->status().error(); 372 int net_error = url_request_->status().error();
373 net::NetErrorDetails net_error_details;
374 url_request_->PopulateNetErrorDetails(&net_error_details);
371 VLOG(1) << "Error " << net::ErrorToString(net_error) 375 VLOG(1) << "Error " << net::ErrorToString(net_error)
372 << " on chromium request: " << initial_url_.possibly_invalid_spec(); 376 << " on chromium request: " << initial_url_.possibly_invalid_spec();
373 JNIEnv* env = base::android::AttachCurrentThread(); 377 JNIEnv* env = base::android::AttachCurrentThread();
374 cronet::Java_CronetUrlRequest_onError( 378 cronet::Java_CronetUrlRequest_onError(
375 env, owner_.obj(), NetErrorToUrlRequestError(net_error), net_error, 379 env, owner_.obj(), NetErrorToUrlRequestError(net_error), net_error,
380 net_error_details.quic_connection_error,
376 ConvertUTF8ToJavaString(env, net::ErrorToString(net_error)).obj(), 381 ConvertUTF8ToJavaString(env, net::ErrorToString(net_error)).obj(),
377 request->GetTotalReceivedBytes()); 382 request->GetTotalReceivedBytes());
378 return true; 383 return true;
379 } 384 }
380 385
381 net::URLRequest* CronetURLRequestAdapter::GetURLRequestForTesting() { 386 net::URLRequest* CronetURLRequestAdapter::GetURLRequestForTesting() {
382 return url_request_.get(); 387 return url_request_.get();
383 } 388 }
384 389
385 } // namespace cronet 390 } // namespace cronet
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698