Index: chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabsConnectionTest.java |
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabsConnectionTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabsConnectionTest.java |
index f7d47e18e05407f605eecb8e2be560a1fa680df2..503975dd7ccf817c29833d722ea1828f4d04231a 100644 |
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabsConnectionTest.java |
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabsConnectionTest.java |
@@ -146,6 +146,30 @@ public class CustomTabsConnectionTest extends InstrumentationTestCase { |
}); |
} |
+ /* |
+ * Tests that when the disconnection notification comes from a non-UI thread, Chrome doesn't |
+ * crash. Non-regression test for crbug.com/623128. |
+ */ |
+ @SmallTest |
+ @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE) |
+ public void testPrerenderAndDisconnectOnOtherThread() { |
+ final CustomTabsSessionToken token = assertWarmupAndMayLaunchUrl(null, URL, true); |
+ final Thread otherThread = new Thread(new Runnable() { |
+ @Override |
+ public void run() { |
+ mCustomTabsConnection.cleanUpSession(token); |
+ } |
+ }); |
+ |
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
+ @Override |
+ public void run() { |
+ otherThread.start(); |
+ } |
+ }); |
+ // Should not crash, hence no assertions below. |
+ } |
+ |
@SmallTest |
@Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE) |
public void testMayLaunchUrlKeepsSpareRendererWithoutPrerendering() { |