Chromium Code Reviews| 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 95c1fdcf8d33458d9ab4f8fd7fb4323f540849ed..453b7ac85047c5c78c249456b9e7b502fd6fc709 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 |
| @@ -4,15 +4,22 @@ |
| package org.chromium.chrome.browser.customtabs; |
| +import static org.chromium.base.test.util.Restriction.RESTRICTION_TYPE_NON_LOW_END_DEVICE; |
| + |
| import android.app.Application; |
| import android.content.Context; |
| import android.net.Uri; |
| import android.os.Build; |
| +import android.os.Bundle; |
| import android.os.Process; |
| import android.support.customtabs.ICustomTabsCallback; |
| import android.test.InstrumentationTestCase; |
| import android.test.suitebuilder.annotation.SmallTest; |
| +import org.chromium.base.ThreadUtils; |
| +import org.chromium.base.test.util.Restriction; |
| +import org.chromium.content_public.browser.WebContents; |
| + |
| /** Tests for CustomTabsConnection. */ |
| public class CustomTabsConnectionTest extends InstrumentationTestCase { |
| private CustomTabsConnection mCustomTabsConnection; |
| @@ -68,6 +75,85 @@ public class CustomTabsConnectionTest extends InstrumentationTestCase { |
| assertEquals(true, mCustomTabsConnection.warmup(0)); |
| } |
| + @SmallTest |
| + @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE) |
| + public void testCreateSpareRenderer() { |
| + assertTrue(mCustomTabsConnection.warmup(0)); |
| + // On UI thread because: |
| + // 1. takeSpareWebContents needs to be called from the UI thread. |
| + // 2. warmup() is non-blocking and posts tasks to the UI thread, it ensures proper ordering. |
| + ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
| + @Override |
| + public void run() { |
| + assertNotNull(mCustomTabsConnection.takeSpareWebContents()); |
| + assertNull(mCustomTabsConnection.takeSpareWebContents()); |
| + } |
| + }); |
| + } |
| + |
| + @SmallTest |
| + @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE) |
| + public void testCreateSpareRendererCanBeRecreated() { |
| + assertTrue(mCustomTabsConnection.warmup(0)); |
| + ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
| + @Override |
| + public void run() { |
| + assertSpareWebContentsNotNullAndDestroy(); |
| + assertNull(mCustomTabsConnection.takeSpareWebContents()); |
| + } |
| + }); |
| + assertTrue(mCustomTabsConnection.warmup(0)); |
| + ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
| + @Override |
| + public void run() { |
| + assertSpareWebContentsNotNullAndDestroy(); |
| + } |
| + }); |
| + } |
| + |
| + @SmallTest |
| + @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE) |
| + public void testPrerenderDestroysSpareRenderer() { |
| + final ICustomTabsCallback cb = assertWarmupAndMayLaunchUrl(null, URL, true); |
| + ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
| + @Override |
| + public void run() { |
| + assertNull(mCustomTabsConnection.takeSpareWebContents()); |
| + String referrer = |
| + mCustomTabsConnection.getReferrerForSession(cb.asBinder()).getUrl(); |
| + WebContents webContents = |
| + mCustomTabsConnection.takePrerenderedUrl(cb.asBinder(), URL, referrer); |
| + assertNotNull(webContents); |
| + webContents.destroy(); |
| + } |
| + }); |
| + } |
| + |
| + @SmallTest |
| + @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE) |
| + public void testMayLaunchUrlKeepsSpareRendererWithoutPrerendering() { |
| + assertTrue(mCustomTabsConnection.warmup(0)); |
| + final ICustomTabsCallback cb = new CustomTabsTestUtils.DummyCallback(); |
| + assertTrue(mCustomTabsConnection.newSession(cb)); |
| + |
| + Bundle extras = new Bundle(); |
| + extras.putBoolean(CustomTabsConnection.NO_PRERENDERING_KEY, true); |
| + assertTrue(mCustomTabsConnection.mayLaunchUrl(cb, Uri.parse(URL), extras, null)); |
| + |
| + ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
| + @Override |
| + public void run() { |
| + assertSpareWebContentsNotNullAndDestroy(); |
| + } |
| + }); |
| + } |
| + |
| + private void assertSpareWebContentsNotNullAndDestroy() { |
|
pasko
2015/10/29 13:38:58
nit: s/Destroy/CanBeDestroyed/
Benoit L
2015/10/29 17:12:36
There is no assertion here that we can destroy the
|
| + WebContents webContents = mCustomTabsConnection.takeSpareWebContents(); |
| + assertNotNull(webContents); |
| + webContents.destroy(); |
| + } |
| + |
| /** |
| * Calls warmup() and mayLaunchUrl(), checks for the expected result |
| * (success or failure) and returns the result code. |