| 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() {
|
| + 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.
|
|
|