Chromium Code Reviews| Index: components/cronet/android/java/src/org/chromium/net/impl/CronetBidirectionalStream.java |
| diff --git a/components/cronet/android/java/src/org/chromium/net/impl/CronetBidirectionalStream.java b/components/cronet/android/java/src/org/chromium/net/impl/CronetBidirectionalStream.java |
| index d9c80a1b4d448ede5284707aeddcfb8b4db67f21..fc3446bfabde5d15f64bb24a66f14124b562b502 100644 |
| --- a/components/cronet/android/java/src/org/chromium/net/impl/CronetBidirectionalStream.java |
| +++ b/components/cronet/android/java/src/org/chromium/net/impl/CronetBidirectionalStream.java |
| @@ -86,6 +86,7 @@ public class CronetBidirectionalStream extends BidirectionalStream { |
| private final String mRequestHeaders[]; |
| private final boolean mDelayRequestHeadersUntilFirstFlush; |
| private final Collection<Object> mRequestAnnotations; |
| + private UrlRequestException mException; |
| /* |
| * Synchronizes access to mNativeStream, mReadState and mWriteState. |
| @@ -639,10 +640,18 @@ public class CronetBidirectionalStream extends BidirectionalStream { |
| connectEndMs, sslStartMs, sslEndMs, sendingStartMs, sendingEndMs, pushStartMs, |
| pushEndMs, responseStartMs, requestEndMs, socketReused, sentBytesCount, |
| receivedBytesCount); |
| - // TODO(xunjieli): Fill this with real values. |
| - final RequestFinishedInfo requestFinishedInfo = |
| - new RequestFinishedInfo(mInitialUrl, mRequestAnnotations, mMetrics, |
| - RequestFinishedInfo.SUCCEEDED, mResponseInfo, null); |
| + int finishedReason; |
| + if (mReadState == State.SUCCESS && mWriteState == State.SUCCESS) { |
| + finishedReason = RequestFinishedInfo.SUCCEEDED; |
| + } else if (mReadState == State.ERROR && mWriteState == State.ERROR) { |
| + finishedReason = RequestFinishedInfo.FAILED; |
| + } else if (mReadState == State.CANCELED && mWriteState == State.CANCELED) { |
| + finishedReason = RequestFinishedInfo.CANCELED; |
| + } else { |
| + throw new IllegalStateException("Unexpected state when collecting metrics."); |
|
xunjieli
2016/10/17 21:33:43
Instead of doing a runtime exception that can't be
mgersh
2016/10/17 22:20:45
Done.
|
| + } |
| + final RequestFinishedInfo requestFinishedInfo = new RequestFinishedInfo(mInitialUrl, |
| + mRequestAnnotations, mMetrics, finishedReason, mResponseInfo, mException); |
| mRequestContext.reportFinished(requestFinishedInfo); |
| } |
| } |
| @@ -738,6 +747,7 @@ public class CronetBidirectionalStream extends BidirectionalStream { |
| * Fails the stream with an exception. Only called on the Executor. |
| */ |
| private void failWithExceptionOnExecutor(CronetException e) { |
| + mException = e; |
| // Do not call into mCallback if request is complete. |
| synchronized (mNativeStreamLock) { |
| if (isDoneLocked()) { |