Index: components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java |
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java |
index 5353b8a9cf40674832f1c17e5c0e1a26adf5d481..5fbfcbf4a43c4c234ea68988fec508afe9557723 100644 |
--- a/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java |
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java |
@@ -1125,4 +1125,30 @@ public class CronetUrlRequestContextTest extends CronetTestBase { |
assertTrue(loader.wasCalled()); |
} |
} |
+ |
+ // Creates a CronetEngine on another thread and then one on the main thread. This shouldn't |
+ // crash. |
+ @SmallTest |
+ @Feature({"Cronet"}) |
+ public void testThreadedStartup() throws Exception { |
+ final ConditionVariable otherThreadDone = new ConditionVariable(); |
+ final ConditionVariable uiThreadDone = new ConditionVariable(); |
+ new Handler(Looper.getMainLooper()).post(new Runnable() { |
+ public void run() { |
+ final CronetEngine.Builder builder = |
+ new CronetEngine.Builder(getContext()).setLibraryName("cronet_tests"); |
+ new Thread() { |
+ public void run() { |
+ CronetEngine cronetEngine = builder.build(); |
mef
2016/04/27 18:48:15
Can we create and start a new request here, before
pauljensen
2016/04/27 19:04:24
We could do lots of things here. I think our othe
mef
2016/04/27 19:50:00
Acknowledged.
|
+ otherThreadDone.open(); |
+ cronetEngine.shutdown(); |
+ } |
+ }.start(); |
+ otherThreadDone.block(); |
mef
2016/04/27 18:48:15
OTOH I can see Paul's point that this will deadloc
|
+ builder.build().shutdown(); |
+ uiThreadDone.open(); |
+ } |
+ }); |
+ assertTrue(uiThreadDone.block(1000)); |
+ } |
} |