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

Side by Side Diff: components/cronet/android/java/src/org/chromium/net/impl/CronetUrlRequest.java

Issue 2349973006: Implement exception and finished reason in RequestFinishedInfo (Closed)
Patch Set: rebase again? Created 4 years, 2 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 | « no previous file | components/cronet/android/test/javatests/src/org/chromium/net/RequestFinishedInfoTest.java » ('j') | 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 package org.chromium.net.impl; 5 package org.chromium.net.impl;
6 6
7 import android.util.Log; 7 import android.util.Log;
8 8
9 import org.chromium.base.VisibleForTesting; 9 import org.chromium.base.VisibleForTesting;
10 import org.chromium.base.annotations.CalledByNative; 10 import org.chromium.base.annotations.CalledByNative;
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 */ 76 */
77 private final List<String> mUrlChain = new ArrayList<String>(); 77 private final List<String> mUrlChain = new ArrayList<String>();
78 private long mReceivedBytesCountFromRedirects; 78 private long mReceivedBytesCountFromRedirects;
79 79
80 private final UrlRequest.Callback mCallback; 80 private final UrlRequest.Callback mCallback;
81 private final String mInitialUrl; 81 private final String mInitialUrl;
82 private final int mPriority; 82 private final int mPriority;
83 private String mInitialMethod; 83 private String mInitialMethod;
84 private final HeadersList mRequestHeaders = new HeadersList(); 84 private final HeadersList mRequestHeaders = new HeadersList();
85 private final Collection<Object> mRequestAnnotations; 85 private final Collection<Object> mRequestAnnotations;
86 @RequestFinishedInfo.FinishedReason
87 private int mFinishedReason;
88 private UrlRequestException mException;
86 private final boolean mDisableCache; 89 private final boolean mDisableCache;
87 private final boolean mDisableConnectionMigration; 90 private final boolean mDisableConnectionMigration;
88 91
89 private CronetUploadDataStream mUploadDataStream; 92 private CronetUploadDataStream mUploadDataStream;
90 93
91 private UrlResponseInfo mResponseInfo; 94 private UrlResponseInfo mResponseInfo;
92 95
93 /* 96 /*
94 * Listener callback is repeatedly invoked when each read is completed, so i t 97 * Listener callback is repeatedly invoked when each read is completed, so i t
95 * is cached as a member variable. 98 * is cached as a member variable.
(...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after
443 UrlRequestException uploadError = 446 UrlRequestException uploadError =
444 new UrlRequestException("Exception received from UploadDataProvi der", e); 447 new UrlRequestException("Exception received from UploadDataProvi der", e);
445 Log.e(CronetUrlRequestContext.LOG_TAG, "Exception in upload method", e); 448 Log.e(CronetUrlRequestContext.LOG_TAG, "Exception in upload method", e);
446 failWithException(uploadError); 449 failWithException(uploadError);
447 } 450 }
448 451
449 /** 452 /**
450 * Fails the request with an exception. Can be called on any thread. 453 * Fails the request with an exception. Can be called on any thread.
451 */ 454 */
452 private void failWithException(final UrlRequestException exception) { 455 private void failWithException(final UrlRequestException exception) {
456 mException = exception;
453 synchronized (mUrlRequestAdapterLock) { 457 synchronized (mUrlRequestAdapterLock) {
454 if (isDoneLocked()) { 458 if (isDoneLocked()) {
455 return; 459 return;
456 } 460 }
457 destroyRequestAdapter(false); 461 destroyRequestAdapter(false);
458 } 462 }
459 Runnable task = new Runnable() { 463 Runnable task = new Runnable() {
460 @Override 464 @Override
461 public void run() { 465 public void run() {
462 try { 466 try {
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
592 596
593 /** 597 /**
594 * Called when request is completed successfully, no callbacks will be 598 * Called when request is completed successfully, no callbacks will be
595 * called afterwards. 599 * called afterwards.
596 * 600 *
597 * @param receivedBytesCount number of bytes received. 601 * @param receivedBytesCount number of bytes received.
598 */ 602 */
599 @SuppressWarnings("unused") 603 @SuppressWarnings("unused")
600 @CalledByNative 604 @CalledByNative
601 private void onSucceeded(long receivedBytesCount) { 605 private void onSucceeded(long receivedBytesCount) {
606 mFinishedReason = RequestFinishedInfo.SUCCEEDED;
602 mResponseInfo.setReceivedBytesCount(mReceivedBytesCountFromRedirects + r eceivedBytesCount); 607 mResponseInfo.setReceivedBytesCount(mReceivedBytesCountFromRedirects + r eceivedBytesCount);
603 Runnable task = new Runnable() { 608 Runnable task = new Runnable() {
604 @Override 609 @Override
605 public void run() { 610 public void run() {
606 synchronized (mUrlRequestAdapterLock) { 611 synchronized (mUrlRequestAdapterLock) {
607 if (isDoneLocked()) { 612 if (isDoneLocked()) {
608 return; 613 return;
609 } 614 }
610 // Destroy adapter first, so request context could be shut 615 // Destroy adapter first, so request context could be shut
611 // down from the listener. 616 // down from the listener.
(...skipping 15 matching lines...) Expand all
627 * @param errorCode error code from {@link UrlRequestException.ERROR_LISTENE R_EXCEPTION_THROWN 632 * @param errorCode error code from {@link UrlRequestException.ERROR_LISTENE R_EXCEPTION_THROWN
628 * UrlRequestException.ERROR_*}. 633 * UrlRequestException.ERROR_*}.
629 * @param nativeError native net error code. 634 * @param nativeError native net error code.
630 * @param errorString textual representation of the error code. 635 * @param errorString textual representation of the error code.
631 * @param receivedBytesCount number of bytes received. 636 * @param receivedBytesCount number of bytes received.
632 */ 637 */
633 @SuppressWarnings("unused") 638 @SuppressWarnings("unused")
634 @CalledByNative 639 @CalledByNative
635 private void onError(int errorCode, int nativeError, int nativeQuicError, St ring errorString, 640 private void onError(int errorCode, int nativeError, int nativeQuicError, St ring errorString,
636 long receivedBytesCount) { 641 long receivedBytesCount) {
642 mFinishedReason = RequestFinishedInfo.FAILED;
637 if (mResponseInfo != null) { 643 if (mResponseInfo != null) {
638 mResponseInfo.setReceivedBytesCount( 644 mResponseInfo.setReceivedBytesCount(
639 mReceivedBytesCountFromRedirects + receivedBytesCount); 645 mReceivedBytesCountFromRedirects + receivedBytesCount);
640 } 646 }
641 if (errorCode == UrlRequestException.ERROR_QUIC_PROTOCOL_FAILED) { 647 if (errorCode == UrlRequestException.ERROR_QUIC_PROTOCOL_FAILED) {
642 failWithException(new QuicException( 648 failWithException(new QuicException(
643 "Exception in CronetUrlRequest: " + errorString, nativeError , nativeQuicError)); 649 "Exception in CronetUrlRequest: " + errorString, nativeError , nativeQuicError));
644 } else { 650 } else {
645 failWithException(new UrlRequestException( 651 failWithException(new UrlRequestException(
646 "Exception in CronetUrlRequest: " + errorString, errorCode, nativeError)); 652 "Exception in CronetUrlRequest: " + errorString, errorCode, nativeError));
647 } 653 }
648 } 654 }
649 655
650 /** 656 /**
651 * Called when request is canceled, no callbacks will be called afterwards. 657 * Called when request is canceled, no callbacks will be called afterwards.
652 */ 658 */
653 @SuppressWarnings("unused") 659 @SuppressWarnings("unused")
654 @CalledByNative 660 @CalledByNative
655 private void onCanceled() { 661 private void onCanceled() {
662 mFinishedReason = RequestFinishedInfo.CANCELED;
656 Runnable task = new Runnable() { 663 Runnable task = new Runnable() {
657 @Override 664 @Override
658 public void run() { 665 public void run() {
659 try { 666 try {
660 mCallback.onCanceled(CronetUrlRequest.this, mResponseInfo); 667 mCallback.onCanceled(CronetUrlRequest.this, mResponseInfo);
661 } catch (Exception e) { 668 } catch (Exception e) {
662 Log.e(CronetUrlRequestContext.LOG_TAG, "Exception in onCance led method", e); 669 Log.e(CronetUrlRequestContext.LOG_TAG, "Exception in onCance led method", e);
663 } 670 }
664 } 671 }
665 }; 672 };
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
699 mMetrics = new CronetMetrics(requestStartMs, dnsStartMs, dnsEndMs, c onnectStartMs, 706 mMetrics = new CronetMetrics(requestStartMs, dnsStartMs, dnsEndMs, c onnectStartMs,
700 connectEndMs, sslStartMs, sslEndMs, sendingStartMs, sendingE ndMs, pushStartMs, 707 connectEndMs, sslStartMs, sslEndMs, sendingStartMs, sendingE ndMs, pushStartMs,
701 pushEndMs, responseStartMs, responseEndMs, socketReused, sen tBytesCount, 708 pushEndMs, responseStartMs, responseEndMs, socketReused, sen tBytesCount,
702 receivedBytesCount); 709 receivedBytesCount);
703 } 710 }
704 mRequestContext.reportFinished(getRequestFinishedInfo()); 711 mRequestContext.reportFinished(getRequestFinishedInfo());
705 } 712 }
706 713
707 private RequestFinishedInfo getRequestFinishedInfo() { 714 private RequestFinishedInfo getRequestFinishedInfo() {
708 // TODO(mgersh): fill in real values for finishedReason and exception 715 // TODO(mgersh): fill in real values for finishedReason and exception
709 return new RequestFinishedInfo(mInitialUrl, mRequestAnnotations, mMetric s, 716 return new RequestFinishedInfo(mInitialUrl, mRequestAnnotations, mMetric s, mFinishedReason,
710 RequestFinishedInfo.SUCCEEDED, mResponseInfo, null); 717 mResponseInfo, mException);
711 } 718 }
712 719
713 /** Enforces prohibition of direct execution. */ 720 /** Enforces prohibition of direct execution. */
714 void checkCallingThread() { 721 void checkCallingThread() {
715 if (!mAllowDirectExecutor && mRequestContext.isNetworkThread(Thread.curr entThread())) { 722 if (!mAllowDirectExecutor && mRequestContext.isNetworkThread(Thread.curr entThread())) {
716 throw new InlineExecutionProhibitedException(); 723 throw new InlineExecutionProhibitedException();
717 } 724 }
718 } 725 }
719 726
720 // Native methods are implemented in cronet_url_request_adapter.cc. 727 // Native methods are implemented in cronet_url_request_adapter.cc.
(...skipping 17 matching lines...) Expand all
738 @NativeClassQualifiedName("CronetURLRequestAdapter") 745 @NativeClassQualifiedName("CronetURLRequestAdapter")
739 private native boolean nativeReadData( 746 private native boolean nativeReadData(
740 long nativePtr, ByteBuffer byteBuffer, int position, int capacity); 747 long nativePtr, ByteBuffer byteBuffer, int position, int capacity);
741 748
742 @NativeClassQualifiedName("CronetURLRequestAdapter") 749 @NativeClassQualifiedName("CronetURLRequestAdapter")
743 private native void nativeDestroy(long nativePtr, boolean sendOnCanceled); 750 private native void nativeDestroy(long nativePtr, boolean sendOnCanceled);
744 751
745 @NativeClassQualifiedName("CronetURLRequestAdapter") 752 @NativeClassQualifiedName("CronetURLRequestAdapter")
746 private native void nativeGetStatus(long nativePtr, UrlRequest.StatusListene r listener); 753 private native void nativeGetStatus(long nativePtr, UrlRequest.StatusListene r listener);
747 } 754 }
OLDNEW
« no previous file with comments | « no previous file | components/cronet/android/test/javatests/src/org/chromium/net/RequestFinishedInfoTest.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698