| Index: components/cronet/android/test/javatests/src/org/chromium/net/CronetUploadTest.java
|
| diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/CronetUploadTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/CronetUploadTest.java
|
| index 218cbf6bb7a2973163d4ff4459b3321353be870c..074eaad7c5e32f1a34f89177894b0223331a5c8d 100644
|
| --- a/components/cronet/android/test/javatests/src/org/chromium/net/CronetUploadTest.java
|
| +++ b/components/cronet/android/test/javatests/src/org/chromium/net/CronetUploadTest.java
|
| @@ -22,8 +22,6 @@ public class CronetUploadTest extends CronetTestBase {
|
| private TestDrivenDataProvider mDataProvider;
|
| private CronetUploadDataStream mUploadDataStream;
|
| private TestUploadDataStreamHandler mHandler;
|
| - // Address of native CronetUploadDataStreamAdapter object.
|
| - private long mAdapter = 0;
|
|
|
| @Override
|
| protected void setUp() throws Exception {
|
| @@ -33,8 +31,8 @@ public class CronetUploadTest extends CronetTestBase {
|
| List<byte[]> reads = Arrays.asList("hello".getBytes());
|
| mDataProvider = new TestDrivenDataProvider(executor, reads);
|
| mUploadDataStream = new CronetUploadDataStream(mDataProvider, executor);
|
| - mAdapter = mUploadDataStream.createAdapterForTesting();
|
| - mHandler = new TestUploadDataStreamHandler(mAdapter);
|
| + mHandler = new TestUploadDataStreamHandler(
|
| + mUploadDataStream.createAdapterForTesting());
|
| }
|
|
|
| @Override
|
| @@ -241,9 +239,13 @@ public class CronetUploadTest extends CronetTestBase {
|
| mDataProvider.waitForReadRequest();
|
| mHandler.checkReadCallbackNotInvoked();
|
|
|
| - // Destroy the C++ object, which should trigger the Java
|
| - // onAdapterDestroyed() which should block until the read completes.
|
| - mAdapter = 0;
|
| + // Destroy the C++ TestUploadDataStreamHandler. The handler owns the
|
| + // CronetUploadDataStreamAdapter, which this will cause it to destroy on
|
| + // the network thread. Destroying the adapter will result in calling
|
| + // the CronetUploadDataSteam's onAdapterDestroyed() method on its
|
| + // executor thread, which will then destroy the
|
| + // CronetUploadDataStreamDelegate.
|
| + mHandler.destroyNativeObjects();
|
|
|
| // Make the read complete should not encounter a crash.
|
| mDataProvider.onReadSucceeded(mUploadDataStream);
|
| @@ -282,15 +284,16 @@ public class CronetUploadTest extends CronetTestBase {
|
| mDataProvider.waitForRewindRequest();
|
| mHandler.checkInitCallbackNotInvoked();
|
|
|
| - // Destroy the C++ object, which should trigger the Java
|
| - // onAdapterDestroyed().
|
| - mAdapter = 0;
|
| + // Destroy the C++ TestUploadDataStreamHandler. The handler owns the
|
| + // CronetUploadDataStreamAdapter, which this will cause it to destroy on
|
| + // the network thread. Destroying the adapter will result in calling
|
| + // the CronetUploadDataSteam's onAdapterDestroyed() method on its
|
| + // executor thread, which will then destroy the
|
| + // CronetUploadDataStreamDelegate.
|
| + mHandler.destroyNativeObjects();
|
|
|
| // Signal rewind completes, and wait for init to complete.
|
| - mHandler.checkInitCallbackNotInvoked();
|
| mDataProvider.onRewindSucceeded(mUploadDataStream);
|
| - mHandler.waitForInitComplete();
|
| - mDataProvider.assertRewindNotPending();
|
|
|
| assertEquals(1, mDataProvider.getNumRewindCalls());
|
| assertEquals(1, mDataProvider.getNumReadCalls());
|
|
|