| 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 package org.chromium.net; | 5 package org.chromium.net; |
| 6 | 6 |
| 7 import android.os.ConditionVariable; | 7 import android.os.ConditionVariable; |
| 8 | 8 |
| 9 import static junit.framework.Assert.assertEquals; | 9 import static junit.framework.Assert.assertEquals; |
| 10 import static junit.framework.Assert.assertFalse; | 10 import static junit.framework.Assert.assertFalse; |
| 11 import static junit.framework.Assert.assertNull; | 11 import static junit.framework.Assert.assertNull; |
| 12 import static junit.framework.Assert.assertTrue; | 12 import static junit.framework.Assert.assertTrue; |
| 13 | 13 |
| 14 import java.nio.ByteBuffer; | 14 import java.nio.ByteBuffer; |
| 15 import java.util.ArrayList; | 15 import java.util.ArrayList; |
| 16 import java.util.concurrent.Executor; | 16 import java.util.concurrent.Executor; |
| 17 import java.util.concurrent.ExecutorService; | 17 import java.util.concurrent.ExecutorService; |
| 18 import java.util.concurrent.Executors; | 18 import java.util.concurrent.Executors; |
| 19 import java.util.concurrent.ThreadFactory; | 19 import java.util.concurrent.ThreadFactory; |
| 20 | 20 |
| 21 /** | 21 /** |
| 22 * Listener that tracks information from different callbacks and and has a | 22 * Listener that tracks information from different callbacks and and has a |
| 23 * method to block thread until the request completes on another thread. | 23 * method to block thread until the request completes on another thread. |
| 24 * Allows to cancel, block request or throw an exception from an arbitrary step. | 24 * Allows to cancel, block request or throw an exception from an arbitrary step. |
| 25 */ | 25 */ |
| 26 class TestUrlRequestListener extends UrlRequestListener { | 26 class TestUrlRequestListener extends UrlRequestListener { |
| 27 public ArrayList<ResponseInfo> mRedirectResponseInfoList = | 27 public ArrayList<UrlResponseInfo> mRedirectResponseInfoList = new ArrayList<
UrlResponseInfo>(); |
| 28 new ArrayList<ResponseInfo>(); | |
| 29 public ArrayList<String> mRedirectUrlList = new ArrayList<String>(); | 28 public ArrayList<String> mRedirectUrlList = new ArrayList<String>(); |
| 30 public ResponseInfo mResponseInfo; | 29 public UrlResponseInfo mResponseInfo; |
| 31 public ExtendedResponseInfo mExtendedResponseInfo; | |
| 32 public UrlRequestException mError; | 30 public UrlRequestException mError; |
| 33 | 31 |
| 34 public ResponseStep mResponseStep = ResponseStep.NOTHING; | 32 public ResponseStep mResponseStep = ResponseStep.NOTHING; |
| 35 | 33 |
| 36 public int mRedirectCount = 0; | 34 public int mRedirectCount = 0; |
| 37 public boolean mOnErrorCalled = false; | 35 public boolean mOnErrorCalled = false; |
| 38 | 36 |
| 39 public int mHttpResponseDataLength = 0; | 37 public int mHttpResponseDataLength = 0; |
| 40 public String mResponseAsString = ""; | 38 public String mResponseAsString = ""; |
| 41 | 39 |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 113 | 111 |
| 114 public Executor getExecutor() { | 112 public Executor getExecutor() { |
| 115 return mExecutorService; | 113 return mExecutorService; |
| 116 } | 114 } |
| 117 | 115 |
| 118 public void shutdownExecutor() { | 116 public void shutdownExecutor() { |
| 119 mExecutorService.shutdown(); | 117 mExecutorService.shutdown(); |
| 120 } | 118 } |
| 121 | 119 |
| 122 @Override | 120 @Override |
| 123 public void onReceivedRedirect(UrlRequest request, | 121 public void onReceivedRedirect( |
| 124 ResponseInfo info, | 122 UrlRequest request, UrlResponseInfo info, String newLocationUrl) { |
| 125 String newLocationUrl) { | |
| 126 assertEquals(mExecutorThread, Thread.currentThread()); | 123 assertEquals(mExecutorThread, Thread.currentThread()); |
| 127 assertFalse(request.isDone()); | 124 assertFalse(request.isDone()); |
| 128 assertTrue(mResponseStep == ResponseStep.NOTHING | 125 assertTrue(mResponseStep == ResponseStep.NOTHING |
| 129 || mResponseStep == ResponseStep.ON_RECEIVED_REDIRECT); | 126 || mResponseStep == ResponseStep.ON_RECEIVED_REDIRECT); |
| 130 assertNull(mError); | 127 assertNull(mError); |
| 131 | 128 |
| 132 mResponseStep = ResponseStep.ON_RECEIVED_REDIRECT; | 129 mResponseStep = ResponseStep.ON_RECEIVED_REDIRECT; |
| 133 mRedirectUrlList.add(newLocationUrl); | 130 mRedirectUrlList.add(newLocationUrl); |
| 134 mRedirectResponseInfoList.add(info); | 131 mRedirectResponseInfoList.add(info); |
| 135 ++mRedirectCount; | 132 ++mRedirectCount; |
| 136 if (maybeThrowCancelOrPause(request)) { | 133 if (maybeThrowCancelOrPause(request)) { |
| 137 return; | 134 return; |
| 138 } | 135 } |
| 139 request.followRedirect(); | 136 request.followRedirect(); |
| 140 } | 137 } |
| 141 | 138 |
| 142 @Override | 139 @Override |
| 143 public void onResponseStarted(UrlRequest request, ResponseInfo info) { | 140 public void onResponseStarted(UrlRequest request, UrlResponseInfo info) { |
| 144 assertEquals(mExecutorThread, Thread.currentThread()); | 141 assertEquals(mExecutorThread, Thread.currentThread()); |
| 145 assertFalse(request.isDone()); | 142 assertFalse(request.isDone()); |
| 146 assertTrue(mResponseStep == ResponseStep.NOTHING | 143 assertTrue(mResponseStep == ResponseStep.NOTHING |
| 147 || mResponseStep == ResponseStep.ON_RECEIVED_REDIRECT); | 144 || mResponseStep == ResponseStep.ON_RECEIVED_REDIRECT); |
| 148 assertNull(mError); | 145 assertNull(mError); |
| 149 | 146 |
| 150 mResponseStep = ResponseStep.ON_RESPONSE_STARTED; | 147 mResponseStep = ResponseStep.ON_RESPONSE_STARTED; |
| 151 mResponseInfo = info; | 148 mResponseInfo = info; |
| 152 if (maybeThrowCancelOrPause(request)) { | 149 if (maybeThrowCancelOrPause(request)) { |
| 153 return; | 150 return; |
| 154 } | 151 } |
| 155 startNextRead(request); | 152 startNextRead(request); |
| 156 } | 153 } |
| 157 | 154 |
| 158 @Override | 155 @Override |
| 159 public void onReadCompleted(UrlRequest request, | 156 public void onReadCompleted(UrlRequest request, UrlResponseInfo info, ByteBu
ffer byteBuffer) { |
| 160 ResponseInfo info, | |
| 161 ByteBuffer byteBuffer) { | |
| 162 assertEquals(mExecutorThread, Thread.currentThread()); | 157 assertEquals(mExecutorThread, Thread.currentThread()); |
| 163 assertFalse(request.isDone()); | 158 assertFalse(request.isDone()); |
| 164 assertTrue(mResponseStep == ResponseStep.ON_RESPONSE_STARTED | 159 assertTrue(mResponseStep == ResponseStep.ON_RESPONSE_STARTED |
| 165 || mResponseStep == ResponseStep.ON_READ_COMPLETED); | 160 || mResponseStep == ResponseStep.ON_READ_COMPLETED); |
| 166 assertNull(mError); | 161 assertNull(mError); |
| 167 | 162 |
| 168 mResponseStep = ResponseStep.ON_READ_COMPLETED; | 163 mResponseStep = ResponseStep.ON_READ_COMPLETED; |
| 169 | 164 |
| 170 final byte[] lastDataReceivedAsBytes; | 165 final byte[] lastDataReceivedAsBytes; |
| 171 if (mLegacyReadByteBufferAdjustment) { | 166 if (mLegacyReadByteBufferAdjustment) { |
| (...skipping 15 matching lines...) Expand all Loading... |
| 187 } | 182 } |
| 188 mResponseAsString += new String(lastDataReceivedAsBytes); | 183 mResponseAsString += new String(lastDataReceivedAsBytes); |
| 189 | 184 |
| 190 if (maybeThrowCancelOrPause(request)) { | 185 if (maybeThrowCancelOrPause(request)) { |
| 191 return; | 186 return; |
| 192 } | 187 } |
| 193 startNextRead(request); | 188 startNextRead(request); |
| 194 } | 189 } |
| 195 | 190 |
| 196 @Override | 191 @Override |
| 197 public void onSucceeded(UrlRequest request, ExtendedResponseInfo info) { | 192 public void onSucceeded(UrlRequest request, UrlResponseInfo info) { |
| 198 assertEquals(mExecutorThread, Thread.currentThread()); | 193 assertEquals(mExecutorThread, Thread.currentThread()); |
| 199 assertTrue(request.isDone()); | 194 assertTrue(request.isDone()); |
| 200 assertTrue(mResponseStep == ResponseStep.ON_RESPONSE_STARTED | 195 assertTrue(mResponseStep == ResponseStep.ON_RESPONSE_STARTED |
| 201 || mResponseStep == ResponseStep.ON_READ_COMPLETED); | 196 || mResponseStep == ResponseStep.ON_READ_COMPLETED); |
| 202 assertNull(mError); | 197 assertNull(mError); |
| 203 | 198 |
| 204 mResponseStep = ResponseStep.ON_SUCCEEDED; | 199 mResponseStep = ResponseStep.ON_SUCCEEDED; |
| 205 mExtendedResponseInfo = info; | 200 mResponseInfo = info; |
| 206 openDone(); | 201 openDone(); |
| 207 maybeThrowCancelOrPause(request); | 202 maybeThrowCancelOrPause(request); |
| 208 } | 203 } |
| 209 | 204 |
| 210 @Override | 205 @Override |
| 211 public void onFailed(UrlRequest request, | 206 public void onFailed(UrlRequest request, UrlResponseInfo info, UrlRequestExc
eption error) { |
| 212 ResponseInfo info, | |
| 213 UrlRequestException error) { | |
| 214 assertEquals(mExecutorThread, Thread.currentThread()); | 207 assertEquals(mExecutorThread, Thread.currentThread()); |
| 215 assertTrue(request.isDone()); | 208 assertTrue(request.isDone()); |
| 216 // Shouldn't happen after success. | 209 // Shouldn't happen after success. |
| 217 assertTrue(mResponseStep != ResponseStep.ON_SUCCEEDED); | 210 assertTrue(mResponseStep != ResponseStep.ON_SUCCEEDED); |
| 218 // Should happen at most once for a single request. | 211 // Should happen at most once for a single request. |
| 219 assertFalse(mOnErrorCalled); | 212 assertFalse(mOnErrorCalled); |
| 220 assertNull(mError); | 213 assertNull(mError); |
| 221 | 214 |
| 222 mOnErrorCalled = true; | 215 mOnErrorCalled = true; |
| 223 mError = error; | 216 mError = error; |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 270 if (mFailureType == FailureType.CANCEL_ASYNC | 263 if (mFailureType == FailureType.CANCEL_ASYNC |
| 271 || mFailureType == FailureType.CANCEL_ASYNC_WITHOUT_PAUSE) { | 264 || mFailureType == FailureType.CANCEL_ASYNC_WITHOUT_PAUSE) { |
| 272 getExecutor().execute(task); | 265 getExecutor().execute(task); |
| 273 } else { | 266 } else { |
| 274 task.run(); | 267 task.run(); |
| 275 } | 268 } |
| 276 return mFailureType != FailureType.CANCEL_ASYNC_WITHOUT_PAUSE; | 269 return mFailureType != FailureType.CANCEL_ASYNC_WITHOUT_PAUSE; |
| 277 } | 270 } |
| 278 } | 271 } |
| 279 | 272 |
| OLD | NEW |