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 "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" |
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
262 void CronetURLRequestAdapter::OnReceivedRedirect( | 262 void CronetURLRequestAdapter::OnReceivedRedirect( |
263 net::URLRequest* request, | 263 net::URLRequest* request, |
264 const net::RedirectInfo& redirect_info, | 264 const net::RedirectInfo& redirect_info, |
265 bool* defer_redirect) { | 265 bool* defer_redirect) { |
266 DCHECK(context_->IsOnNetworkThread()); | 266 DCHECK(context_->IsOnNetworkThread()); |
267 DCHECK(request->status().is_success()); | 267 DCHECK(request->status().is_success()); |
268 JNIEnv* env = base::android::AttachCurrentThread(); | 268 JNIEnv* env = base::android::AttachCurrentThread(); |
269 cronet::Java_CronetUrlRequest_onReceivedRedirect( | 269 cronet::Java_CronetUrlRequest_onReceivedRedirect( |
270 env, owner_.obj(), | 270 env, owner_.obj(), |
271 ConvertUTF8ToJavaString(env, redirect_info.new_url.spec()).obj(), | 271 ConvertUTF8ToJavaString(env, redirect_info.new_url.spec()).obj(), |
272 redirect_info.status_code); | 272 redirect_info.status_code, request->GetTotalReceivedBytes()); |
273 *defer_redirect = true; | 273 *defer_redirect = true; |
274 } | 274 } |
275 | 275 |
276 void CronetURLRequestAdapter::OnSSLCertificateError( | 276 void CronetURLRequestAdapter::OnSSLCertificateError( |
277 net::URLRequest* request, | 277 net::URLRequest* request, |
278 const net::SSLInfo& ssl_info, | 278 const net::SSLInfo& ssl_info, |
279 bool fatal) { | 279 bool fatal) { |
280 DCHECK(context_->IsOnNetworkThread()); | 280 DCHECK(context_->IsOnNetworkThread()); |
281 request->Cancel(); | 281 request->Cancel(); |
282 int net_error = net::MapCertStatusToNetError(ssl_info.cert_status); | 282 int net_error = net::MapCertStatusToNetError(ssl_info.cert_status); |
283 JNIEnv* env = base::android::AttachCurrentThread(); | 283 JNIEnv* env = base::android::AttachCurrentThread(); |
284 cronet::Java_CronetUrlRequest_onError( | 284 cronet::Java_CronetUrlRequest_onError( |
285 env, owner_.obj(), net_error, | 285 env, owner_.obj(), net_error, |
286 ConvertUTF8ToJavaString(env, net::ErrorToString(net_error)).obj()); | 286 ConvertUTF8ToJavaString(env, net::ErrorToString(net_error)).obj(), |
| 287 request->GetTotalReceivedBytes()); |
287 } | 288 } |
288 | 289 |
289 void CronetURLRequestAdapter::OnResponseStarted(net::URLRequest* request) { | 290 void CronetURLRequestAdapter::OnResponseStarted(net::URLRequest* request) { |
290 DCHECK(context_->IsOnNetworkThread()); | 291 DCHECK(context_->IsOnNetworkThread()); |
291 if (MaybeReportError(request)) | 292 if (MaybeReportError(request)) |
292 return; | 293 return; |
293 JNIEnv* env = base::android::AttachCurrentThread(); | 294 JNIEnv* env = base::android::AttachCurrentThread(); |
294 cronet::Java_CronetUrlRequest_onResponseStarted(env, owner_.obj(), | 295 cronet::Java_CronetUrlRequest_onResponseStarted(env, owner_.obj(), |
295 request->GetResponseCode()); | 296 request->GetResponseCode()); |
296 } | 297 } |
297 | 298 |
298 void CronetURLRequestAdapter::OnReadCompleted(net::URLRequest* request, | 299 void CronetURLRequestAdapter::OnReadCompleted(net::URLRequest* request, |
299 int bytes_read) { | 300 int bytes_read) { |
300 DCHECK(context_->IsOnNetworkThread()); | 301 DCHECK(context_->IsOnNetworkThread()); |
301 if (MaybeReportError(request)) | 302 if (MaybeReportError(request)) |
302 return; | 303 return; |
303 if (bytes_read != 0) { | 304 if (bytes_read != 0) { |
304 JNIEnv* env = base::android::AttachCurrentThread(); | 305 JNIEnv* env = base::android::AttachCurrentThread(); |
305 cronet::Java_CronetUrlRequest_onReadCompleted( | 306 cronet::Java_CronetUrlRequest_onReadCompleted( |
306 env, owner_.obj(), read_buffer_->byte_buffer(), bytes_read, | 307 env, owner_.obj(), read_buffer_->byte_buffer(), bytes_read, |
307 read_buffer_->initial_position()); | 308 read_buffer_->initial_position(), request->GetTotalReceivedBytes()); |
308 // Free the read buffer. This lets the Java ByteBuffer be freed, if the | 309 // Free the read buffer. This lets the Java ByteBuffer be freed, if the |
309 // embedder releases it, too. | 310 // embedder releases it, too. |
310 read_buffer_ = nullptr; | 311 read_buffer_ = nullptr; |
311 } else { | 312 } else { |
312 JNIEnv* env = base::android::AttachCurrentThread(); | 313 JNIEnv* env = base::android::AttachCurrentThread(); |
313 cronet::Java_CronetUrlRequest_onSucceeded( | 314 cronet::Java_CronetUrlRequest_onSucceeded( |
314 env, owner_.obj(), url_request_->GetTotalReceivedBytes()); | 315 env, owner_.obj(), url_request_->GetTotalReceivedBytes()); |
315 } | 316 } |
316 } | 317 } |
317 | 318 |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
373 DCHECK_NE(net::URLRequestStatus::IO_PENDING, url_request_->status().status()); | 374 DCHECK_NE(net::URLRequestStatus::IO_PENDING, url_request_->status().status()); |
374 DCHECK_EQ(request, url_request_); | 375 DCHECK_EQ(request, url_request_); |
375 if (url_request_->status().is_success()) | 376 if (url_request_->status().is_success()) |
376 return false; | 377 return false; |
377 int net_error = url_request_->status().error(); | 378 int net_error = url_request_->status().error(); |
378 VLOG(1) << "Error " << net::ErrorToString(net_error) | 379 VLOG(1) << "Error " << net::ErrorToString(net_error) |
379 << " on chromium request: " << initial_url_.possibly_invalid_spec(); | 380 << " on chromium request: " << initial_url_.possibly_invalid_spec(); |
380 JNIEnv* env = base::android::AttachCurrentThread(); | 381 JNIEnv* env = base::android::AttachCurrentThread(); |
381 cronet::Java_CronetUrlRequest_onError( | 382 cronet::Java_CronetUrlRequest_onError( |
382 env, owner_.obj(), net_error, | 383 env, owner_.obj(), net_error, |
383 ConvertUTF8ToJavaString(env, net::ErrorToString(net_error)).obj()); | 384 ConvertUTF8ToJavaString(env, net::ErrorToString(net_error)).obj(), |
| 385 request->GetTotalReceivedBytes()); |
384 return true; | 386 return true; |
385 } | 387 } |
386 | 388 |
387 } // namespace cronet | 389 } // namespace cronet |
OLD | NEW |