Chromium Code Reviews| Index: components/cronet/android/test/javatests/src/org/chromium/net/BidirectionalStreamTest.java |
| diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/BidirectionalStreamTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/BidirectionalStreamTest.java |
| index cd0f40a06b5b64ca3a81e415f4cc095fc9262c75..55b15b264dc321896f831bb9bdb840c00a28e3ae 100644 |
| --- a/components/cronet/android/test/javatests/src/org/chromium/net/BidirectionalStreamTest.java |
| +++ b/components/cronet/android/test/javatests/src/org/chromium/net/BidirectionalStreamTest.java |
| @@ -33,7 +33,6 @@ import java.util.regex.Pattern; |
| */ |
| public class BidirectionalStreamTest extends CronetTestBase { |
| private CronetTestFramework mTestFramework; |
| - |
| @Override |
| protected void setUp() throws Exception { |
| super.setUp(); |
| @@ -400,6 +399,41 @@ public class BidirectionalStreamTest extends CronetTestBase { |
| @SmallTest |
| @Feature({"Cronet"}) |
| @OnlyRunNativeCronet |
| + // Regression test for crbug.com/692168. |
| + public void testCancelWhileWriteDataPending() throws Exception { |
| + String url = Http2TestServer.getEchoStreamUrl(); |
| + // Use a direct executor to avoid race. |
| + TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCallback( |
| + /*useDirectExecutor*/ true) { |
| + @Override |
| + public void onWriteCompleted(BidirectionalStream stream, UrlResponseInfo info, |
| + ByteBuffer buffer, boolean endOfStream) { |
| + super.onWriteCompleted(stream, info, buffer, endOfStream); |
| + stream.cancel(); |
| + } |
| + }; |
| + byte[] dummyString = "dummy".getBytes(); |
| + callback.addWriteData(dummyString, true); |
| + callback.addWriteData(dummyString, true); |
|
mef
2017/02/14 22:13:38
Should there be a third writeData?
First write af
|
| + CronetBidirectionalStream stream = |
| + (CronetBidirectionalStream) mTestFramework.mCronetEngine |
| + .newBidirectionalStreamBuilder(url, callback, callback.getExecutor()) |
| + .build(); |
| + callback.setAutoAdvance(false); |
| + stream.start(); |
| + callback.waitForNextWriteStep(); // onStreamReady |
| + // Flush first write. |
| + callback.startNextWrite(stream); |
| + // Flush second write so that second write is in the flush queue. |
| + callback.startNextWrite(stream); |
| + callback.setAutoAdvance(true); |
| + callback.blockForDone(); |
| + assertTrue(callback.mOnCanceledCalled); |
| + } |
| + |
| + @SmallTest |
| + @Feature({"Cronet"}) |
| + @OnlyRunNativeCronet |
| public void testSimpleGetWithFlush() throws Exception { |
| // TODO(xunjieli): Use ParameterizedTest instead of the loop. |
| for (int i = 0; i < 2; i++) { |