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

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

Issue 1239543003: [Cronet] Surface SSL cert error through CronetURLRequestAdapter::OnSSLCertificateError (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 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
« no previous file with comments | « components/cronet/android/cronet_url_request_adapter.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "cronet_url_request_adapter.h" 5 #include "cronet_url_request_adapter.h"
6 6
7 #include <limits> 7 #include <limits>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/location.h" 10 #include "base/location.h"
11 #include "base/logging.h" 11 #include "base/logging.h"
12 #include "components/cronet/android/cronet_url_request_context_adapter.h" 12 #include "components/cronet/android/cronet_url_request_context_adapter.h"
13 #include "jni/CronetUrlRequest_jni.h" 13 #include "jni/CronetUrlRequest_jni.h"
14 #include "net/base/io_buffer.h" 14 #include "net/base/io_buffer.h"
15 #include "net/base/load_flags.h" 15 #include "net/base/load_flags.h"
16 #include "net/base/net_errors.h" 16 #include "net/base/net_errors.h"
17 #include "net/base/request_priority.h" 17 #include "net/base/request_priority.h"
18 #include "net/cert/cert_status_flags.h"
18 #include "net/http/http_response_headers.h" 19 #include "net/http/http_response_headers.h"
19 #include "net/http/http_status_code.h" 20 #include "net/http/http_status_code.h"
20 #include "net/http/http_util.h" 21 #include "net/http/http_util.h"
22 #include "net/ssl/ssl_info.h"
21 #include "net/url_request/redirect_info.h" 23 #include "net/url_request/redirect_info.h"
22 #include "net/url_request/url_request_context.h" 24 #include "net/url_request/url_request_context.h"
23 25
24 using base::android::ConvertUTF8ToJavaString; 26 using base::android::ConvertUTF8ToJavaString;
25 27
26 namespace cronet { 28 namespace cronet {
27 29
28 // Explicitly register static JNI functions. 30 // Explicitly register static JNI functions.
29 bool CronetUrlRequestAdapterRegisterJni(JNIEnv* env) { 31 bool CronetUrlRequestAdapterRegisterJni(JNIEnv* env) {
30 return RegisterNativesImpl(env); 32 return RegisterNativesImpl(env);
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 CronetURLRequestAdapter::CronetURLRequestAdapter( 90 CronetURLRequestAdapter::CronetURLRequestAdapter(
89 CronetURLRequestContextAdapter* context, 91 CronetURLRequestContextAdapter* context,
90 JNIEnv* env, 92 JNIEnv* env,
91 jobject jurl_request, 93 jobject jurl_request,
92 const GURL& url, 94 const GURL& url,
93 net::RequestPriority priority) 95 net::RequestPriority priority)
94 : context_(context), 96 : context_(context),
95 initial_url_(url), 97 initial_url_(url),
96 initial_priority_(priority), 98 initial_priority_(priority),
97 initial_method_("GET"), 99 initial_method_("GET"),
98 load_flags_(context->default_load_flags()) { 100 load_flags_(context->default_load_flags()),
101 has_ssl_cert_error_(false) {
99 DCHECK(!context_->IsOnNetworkThread()); 102 DCHECK(!context_->IsOnNetworkThread());
100 owner_.Reset(env, jurl_request); 103 owner_.Reset(env, jurl_request);
101 } 104 }
102 105
103 CronetURLRequestAdapter::~CronetURLRequestAdapter() { 106 CronetURLRequestAdapter::~CronetURLRequestAdapter() {
104 DCHECK(context_->IsOnNetworkThread()); 107 DCHECK(context_->IsOnNetworkThread());
105 } 108 }
106 109
107 jboolean CronetURLRequestAdapter::SetHttpMethod(JNIEnv* env, 110 jboolean CronetURLRequestAdapter::SetHttpMethod(JNIEnv* env,
108 jobject jcaller, 111 jobject jcaller,
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 JNIEnv* env = base::android::AttachCurrentThread(); 269 JNIEnv* env = base::android::AttachCurrentThread();
267 cronet::Java_CronetUrlRequest_onReceivedRedirect( 270 cronet::Java_CronetUrlRequest_onReceivedRedirect(
268 env, owner_.obj(), 271 env, owner_.obj(),
269 ConvertUTF8ToJavaString(env, redirect_info.new_url.spec()).obj(), 272 ConvertUTF8ToJavaString(env, redirect_info.new_url.spec()).obj(),
270 redirect_info.status_code); 273 redirect_info.status_code);
271 *defer_redirect = true; 274 *defer_redirect = true;
272 } 275 }
273 276
274 void CronetURLRequestAdapter::OnResponseStarted(net::URLRequest* request) { 277 void CronetURLRequestAdapter::OnResponseStarted(net::URLRequest* request) {
275 DCHECK(context_->IsOnNetworkThread()); 278 DCHECK(context_->IsOnNetworkThread());
276 if (MaybeReportError(request)) 279 // If any ssl cert error is present,
280 // CronetURLRequesAdapter::OnSSLCertificateError has propagated the error
281 // to the embedder, so do not report again.
282 if (has_ssl_cert_error_ || MaybeReportError(request))
mmenke 2015/07/15 22:03:43 Why is this needed? OnSSLCertificateError calls C
277 return; 283 return;
278 JNIEnv* env = base::android::AttachCurrentThread(); 284 JNIEnv* env = base::android::AttachCurrentThread();
279 cronet::Java_CronetUrlRequest_onResponseStarted(env, owner_.obj(), 285 cronet::Java_CronetUrlRequest_onResponseStarted(env, owner_.obj(),
280 request->GetResponseCode()); 286 request->GetResponseCode());
281 } 287 }
282 288
289 void CronetURLRequestAdapter::OnSSLCertificateError(
290 net::URLRequest* request,
291 const net::SSLInfo& ssl_info,
292 bool fatal) {
293 has_ssl_cert_error_ = true;
294 request->Cancel();
295 int ssl_cert_net_error = net::MapCertStatusToNetError(ssl_info.cert_status);
296 JNIEnv* env = base::android::AttachCurrentThread();
297 cronet::Java_CronetUrlRequest_onError(
298 env, owner_.obj(), ssl_cert_net_error,
299 ConvertUTF8ToJavaString(env, net::ErrorToString(ssl_cert_net_error))
300 .obj());
301 }
302
283 void CronetURLRequestAdapter::OnReadCompleted(net::URLRequest* request, 303 void CronetURLRequestAdapter::OnReadCompleted(net::URLRequest* request,
284 int bytes_read) { 304 int bytes_read) {
285 DCHECK(context_->IsOnNetworkThread()); 305 DCHECK(context_->IsOnNetworkThread());
286 if (MaybeReportError(request)) 306 if (MaybeReportError(request))
287 return; 307 return;
288 if (bytes_read != 0) { 308 if (bytes_read != 0) {
289 JNIEnv* env = base::android::AttachCurrentThread(); 309 JNIEnv* env = base::android::AttachCurrentThread();
290 cronet::Java_CronetUrlRequest_onReadCompleted( 310 cronet::Java_CronetUrlRequest_onReadCompleted(
291 env, owner_.obj(), read_buffer_->byte_buffer(), bytes_read, 311 env, owner_.obj(), read_buffer_->byte_buffer(), bytes_read,
292 read_buffer_->initial_position()); 312 read_buffer_->initial_position());
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
363 VLOG(1) << "Error " << net::ErrorToString(net_error) 383 VLOG(1) << "Error " << net::ErrorToString(net_error)
364 << " on chromium request: " << initial_url_.possibly_invalid_spec(); 384 << " on chromium request: " << initial_url_.possibly_invalid_spec();
365 JNIEnv* env = base::android::AttachCurrentThread(); 385 JNIEnv* env = base::android::AttachCurrentThread();
366 cronet::Java_CronetUrlRequest_onError( 386 cronet::Java_CronetUrlRequest_onError(
367 env, owner_.obj(), net_error, 387 env, owner_.obj(), net_error,
368 ConvertUTF8ToJavaString(env, net::ErrorToString(net_error)).obj()); 388 ConvertUTF8ToJavaString(env, net::ErrorToString(net_error)).obj());
369 return true; 389 return true;
370 } 390 }
371 391
372 } // namespace cronet 392 } // namespace cronet
OLDNEW
« no previous file with comments | « components/cronet/android/cronet_url_request_adapter.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698