| 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 b7c9ae1f056bb1a855a8755664b6b1876b0a0b98..e75b261028337ffc69b1c9437a3a1f338cdf1ad0 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
|
| @@ -12,10 +12,9 @@ import android.content.Intent;
|
| import android.net.Uri;
|
| import android.os.Build;
|
| import android.os.Bundle;
|
| -import android.os.IBinder;
|
| import android.os.Process;
|
| import android.support.customtabs.CustomTabsService;
|
| -import android.support.customtabs.ICustomTabsCallback;
|
| +import android.support.customtabs.CustomTabsSessionToken;
|
| import android.test.InstrumentationTestCase;
|
| import android.test.suitebuilder.annotation.SmallTest;
|
|
|
| @@ -63,9 +62,9 @@ public class CustomTabsConnectionTest extends InstrumentationTestCase {
|
| @SmallTest
|
| public void testNewSession() {
|
| assertEquals(false, mCustomTabsConnection.newSession(null));
|
| - ICustomTabsCallback cb = new CustomTabsTestUtils.DummyCallback();
|
| - assertEquals(true, mCustomTabsConnection.newSession(cb));
|
| - assertEquals(false, mCustomTabsConnection.newSession(cb));
|
| + CustomTabsSessionToken token = CustomTabsSessionToken.createDummySessionTokenForTesting();
|
| + assertEquals(true, mCustomTabsConnection.newSession(token));
|
| + assertEquals(false, mCustomTabsConnection.newSession(token));
|
| }
|
|
|
| /**
|
| @@ -73,10 +72,10 @@ public class CustomTabsConnectionTest extends InstrumentationTestCase {
|
| */
|
| @SmallTest
|
| public void testSeveralSessions() {
|
| - ICustomTabsCallback cb = new CustomTabsTestUtils.DummyCallback();
|
| - assertEquals(true, mCustomTabsConnection.newSession(cb));
|
| - ICustomTabsCallback cb2 = new CustomTabsTestUtils.DummyCallback();
|
| - assertEquals(true, mCustomTabsConnection.newSession(cb2));
|
| + CustomTabsSessionToken token = CustomTabsSessionToken.createDummySessionTokenForTesting();
|
| + assertEquals(true, mCustomTabsConnection.newSession(token));
|
| + CustomTabsSessionToken token2 = CustomTabsSessionToken.createDummySessionTokenForTesting();
|
| + assertEquals(true, mCustomTabsConnection.newSession(token2));
|
| }
|
|
|
| /**
|
| @@ -128,15 +127,15 @@ public class CustomTabsConnectionTest extends InstrumentationTestCase {
|
| @SmallTest
|
| @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE)
|
| public void testPrerenderDestroysSpareRenderer() {
|
| - final ICustomTabsCallback cb = assertWarmupAndMayLaunchUrl(null, URL, true);
|
| + final CustomTabsSessionToken token = assertWarmupAndMayLaunchUrl(null, URL, true);
|
| ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| @Override
|
| public void run() {
|
| assertNull(mCustomTabsConnection.takeSpareWebContents());
|
| String referrer =
|
| - mCustomTabsConnection.getReferrerForSession(cb.asBinder()).getUrl();
|
| + mCustomTabsConnection.getReferrerForSession(token).getUrl();
|
| WebContents webContents =
|
| - mCustomTabsConnection.takePrerenderedUrl(cb.asBinder(), URL, referrer);
|
| + mCustomTabsConnection.takePrerenderedUrl(token, URL, referrer);
|
| assertNotNull(webContents);
|
| webContents.destroy();
|
| }
|
| @@ -147,12 +146,13 @@ public class CustomTabsConnectionTest extends InstrumentationTestCase {
|
| @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE)
|
| public void testMayLaunchUrlKeepsSpareRendererWithoutPrerendering() {
|
| assertTrue(mCustomTabsConnection.warmup(0));
|
| - final ICustomTabsCallback cb = new CustomTabsTestUtils.DummyCallback();
|
| - assertTrue(mCustomTabsConnection.newSession(cb));
|
| + final CustomTabsSessionToken token =
|
| + CustomTabsSessionToken.createDummySessionTokenForTesting();
|
| + assertTrue(mCustomTabsConnection.newSession(token));
|
|
|
| Bundle extras = new Bundle();
|
| extras.putBoolean(CustomTabsConnection.NO_PRERENDERING_KEY, true);
|
| - assertTrue(mCustomTabsConnection.mayLaunchUrl(cb, Uri.parse(URL), extras, null));
|
| + assertTrue(mCustomTabsConnection.mayLaunchUrl(token, Uri.parse(URL), extras, null));
|
|
|
| ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| @Override
|
| @@ -172,29 +172,30 @@ public class CustomTabsConnectionTest extends InstrumentationTestCase {
|
| @SmallTest
|
| @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE)
|
| public void testUnderstandsLowConfidenceMayLaunchUrl() {
|
| - final ICustomTabsCallback cb = new CustomTabsTestUtils.DummyCallback();
|
| - assertTrue(mCustomTabsConnection.newSession(cb));
|
| + final CustomTabsSessionToken token =
|
| + CustomTabsSessionToken.createDummySessionTokenForTesting();
|
| + assertTrue(mCustomTabsConnection.newSession(token));
|
| List<Bundle> urls = new ArrayList<>();
|
| Bundle urlBundle = new Bundle();
|
| urlBundle.putParcelable(CustomTabsService.KEY_URL, Uri.parse(URL));
|
| urls.add(urlBundle);
|
| - mCustomTabsConnection.mayLaunchUrl(cb, null, null, urls);
|
| + mCustomTabsConnection.mayLaunchUrl(token, null, null, urls);
|
|
|
| ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| @Override
|
| public void run() {
|
| assertSpareWebContentsNotNullAndDestroy();
|
| - IBinder session = cb.asBinder();
|
| - String referrer = mCustomTabsConnection.getReferrerForSession(session).getUrl();
|
| - assertNull(mCustomTabsConnection.takePrerenderedUrl(session, URL, referrer));
|
| + String referrer = mCustomTabsConnection.getReferrerForSession(token).getUrl();
|
| + assertNull(mCustomTabsConnection.takePrerenderedUrl(token, URL, referrer));
|
| }
|
| });
|
| }
|
|
|
| @SmallTest
|
| public void testLowConfidenceMayLaunchUrlOnlyAcceptUris() {
|
| - final ICustomTabsCallback cb = new CustomTabsTestUtils.DummyCallback();
|
| - assertTrue(mCustomTabsConnection.newSession(cb));
|
| + final CustomTabsSessionToken token =
|
| + CustomTabsSessionToken.createDummySessionTokenForTesting();
|
| + assertTrue(mCustomTabsConnection.newSession(token));
|
| assertTrue(mCustomTabsConnection.warmup(0));
|
|
|
| final List<Bundle> urlsAsString = new ArrayList<>();
|
| @@ -218,8 +219,9 @@ public class CustomTabsConnectionTest extends InstrumentationTestCase {
|
|
|
| @SmallTest
|
| public void testLowConfidenceMayLaunchUrlDoesntCrash() {
|
| - final ICustomTabsCallback cb = new CustomTabsTestUtils.DummyCallback();
|
| - assertTrue(mCustomTabsConnection.newSession(cb));
|
| + final CustomTabsSessionToken token =
|
| + CustomTabsSessionToken.createDummySessionTokenForTesting();
|
| + assertTrue(mCustomTabsConnection.newSession(token));
|
| assertTrue(mCustomTabsConnection.warmup(0));
|
|
|
| final List<Bundle> invalidBundles = new ArrayList<>();
|
| @@ -242,21 +244,21 @@ public class CustomTabsConnectionTest extends InstrumentationTestCase {
|
| @SmallTest
|
| @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE)
|
| public void testStillHighConfidenceMayLaunchUrlWithSeveralUrls() {
|
| - final ICustomTabsCallback cb = new CustomTabsTestUtils.DummyCallback();
|
| - assertTrue(mCustomTabsConnection.newSession(cb));
|
| + final CustomTabsSessionToken token =
|
| + CustomTabsSessionToken.createDummySessionTokenForTesting();
|
| + assertTrue(mCustomTabsConnection.newSession(token));
|
| List<Bundle> urls = new ArrayList<>();
|
| Bundle urlBundle = new Bundle();
|
| urlBundle.putParcelable(CustomTabsService.KEY_URL, Uri.parse(URL));
|
| urls.add(urlBundle);
|
|
|
| - mCustomTabsConnection.mayLaunchUrl(cb, Uri.parse(URL), null, urls);
|
| + mCustomTabsConnection.mayLaunchUrl(token, Uri.parse(URL), null, urls);
|
| ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| @Override
|
| public void run() {
|
| assertNull(mCustomTabsConnection.takeSpareWebContents());
|
| - IBinder session = cb.asBinder();
|
| - String referrer = mCustomTabsConnection.getReferrerForSession(session).getUrl();
|
| - assertNotNull(mCustomTabsConnection.takePrerenderedUrl(session, URL, referrer));
|
| + String referrer = mCustomTabsConnection.getReferrerForSession(token).getUrl();
|
| + assertNotNull(mCustomTabsConnection.takePrerenderedUrl(token, URL, referrer));
|
| }
|
| });
|
| }
|
| @@ -264,21 +266,20 @@ public class CustomTabsConnectionTest extends InstrumentationTestCase {
|
| @SmallTest
|
| @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE)
|
| public void testCanCancelPrerender() {
|
| - final ICustomTabsCallback cb = assertWarmupAndMayLaunchUrl(null, URL, true);
|
| + final CustomTabsSessionToken token = assertWarmupAndMayLaunchUrl(null, URL, true);
|
| ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| @Override
|
| public void run() {
|
| assertNull(mCustomTabsConnection.takeSpareWebContents());
|
| }
|
| });
|
| - assertTrue(mCustomTabsConnection.mayLaunchUrl(cb, null, null, null));
|
| + assertTrue(mCustomTabsConnection.mayLaunchUrl(token, null, null, null));
|
| // mayLaunchUrl() posts a task, the following has to run after it.
|
| ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| @Override
|
| public void run() {
|
| - IBinder session = cb.asBinder();
|
| - String referrer = mCustomTabsConnection.getReferrerForSession(session).getUrl();
|
| - assertNull(mCustomTabsConnection.takePrerenderedUrl(session, URL, referrer));
|
| + String referrer = mCustomTabsConnection.getReferrerForSession(token).getUrl();
|
| + assertNull(mCustomTabsConnection.takePrerenderedUrl(token, URL, referrer));
|
| }
|
| });
|
| }
|
| @@ -293,33 +294,34 @@ public class CustomTabsConnectionTest extends InstrumentationTestCase {
|
| * Calls warmup() and mayLaunchUrl(), checks for the expected result
|
| * (success or failure) and returns the result code.
|
| */
|
| - private ICustomTabsCallback assertWarmupAndMayLaunchUrl(
|
| - ICustomTabsCallback cb, String url, boolean shouldSucceed) {
|
| + private CustomTabsSessionToken assertWarmupAndMayLaunchUrl(
|
| + CustomTabsSessionToken token, String url, boolean shouldSucceed) {
|
| mCustomTabsConnection.warmup(0);
|
| - if (cb == null) {
|
| - cb = new CustomTabsTestUtils.DummyCallback();
|
| - mCustomTabsConnection.newSession(cb);
|
| + if (token == null) {
|
| + token = CustomTabsSessionToken.createDummySessionTokenForTesting();
|
| + mCustomTabsConnection.newSession(token);
|
| }
|
| Uri uri = url == null ? null : Uri.parse(url);
|
| - boolean succeeded = mCustomTabsConnection.mayLaunchUrl(cb, uri, null, null);
|
| + boolean succeeded = mCustomTabsConnection.mayLaunchUrl(token, uri, null, null);
|
| assertEquals(shouldSucceed, succeeded);
|
| - return shouldSucceed ? cb : null;
|
| + return shouldSucceed ? token : null;
|
| }
|
|
|
| /**
|
| * Tests that
|
| * {@link CustomTabsConnection#mayLaunchUrl(
|
| - * ICustomTabsCallback, Uri, android.os.Bundle, java.util.List)}
|
| + * CustomTabsSessionToken, Uri, android.os.Bundle, java.util.List)}
|
| * returns an error when called with an invalid session ID.
|
| */
|
| @SmallTest
|
| public void testNoMayLaunchUrlWithInvalidSessionId() {
|
| - assertWarmupAndMayLaunchUrl(new CustomTabsTestUtils.DummyCallback(), URL, false);
|
| + assertWarmupAndMayLaunchUrl(
|
| + CustomTabsSessionToken.createDummySessionTokenForTesting(), URL, false);
|
| }
|
|
|
| /**
|
| * Tests that
|
| - * {@link CustomTabsConnection#mayLaunchUrl(long, String, Bundle, List<Bundle>)}
|
| + * {@link CustomTabsConnection#mayLaunchUrl(CustomTabsSessionToken, Uri, Bundle, List)}
|
| * rejects invalid URL schemes.
|
| */
|
| @SmallTest
|
| @@ -329,7 +331,7 @@ public class CustomTabsConnectionTest extends InstrumentationTestCase {
|
|
|
| /**
|
| * Tests that
|
| - * {@link CustomTabsConnection#mayLaunchUrl(long, String, Bundle, List<Bundle>)}
|
| + * {@link CustomTabsConnection#mayLaunchUrl(CustomTabsSessionToken, Uri, Bundle, List)}
|
| * succeeds.
|
| */
|
| @SmallTest
|
| @@ -339,16 +341,16 @@ public class CustomTabsConnectionTest extends InstrumentationTestCase {
|
|
|
| /**
|
| * Tests that
|
| - * {@link CustomTabsConnection#mayLaunchUrl(long, String, Bundle, List<Bundle>)}
|
| + * {@link CustomTabsConnection#mayLaunchUrl(CustomTabsSessionToken, Uri, Bundle, List)}
|
| * can be called several times with the same, and different URLs.
|
| */
|
| @SmallTest
|
| public void testMultipleMayLaunchUrl() {
|
| - ICustomTabsCallback cb = assertWarmupAndMayLaunchUrl(null, URL, true);
|
| + CustomTabsSessionToken token = assertWarmupAndMayLaunchUrl(null, URL, true);
|
| mCustomTabsConnection.resetThrottling(mContext, Process.myUid());
|
| - assertWarmupAndMayLaunchUrl(cb, URL, true);
|
| + assertWarmupAndMayLaunchUrl(token, URL, true);
|
| mCustomTabsConnection.resetThrottling(mContext, Process.myUid());
|
| - assertWarmupAndMayLaunchUrl(cb, URL2, true);
|
| + assertWarmupAndMayLaunchUrl(token, URL2, true);
|
| }
|
|
|
| /**
|
| @@ -356,9 +358,9 @@ public class CustomTabsConnectionTest extends InstrumentationTestCase {
|
| */
|
| @SmallTest
|
| public void testForgetsSession() {
|
| - ICustomTabsCallback cb = assertWarmupAndMayLaunchUrl(null, URL, true);
|
| + CustomTabsSessionToken token = assertWarmupAndMayLaunchUrl(null, URL, true);
|
| CustomTabsTestUtils.cleanupSessions(mCustomTabsConnection);
|
| - assertWarmupAndMayLaunchUrl(cb, URL, false);
|
| + assertWarmupAndMayLaunchUrl(token, URL, false);
|
| }
|
|
|
| /**
|
| @@ -403,11 +405,11 @@ public class CustomTabsConnectionTest extends InstrumentationTestCase {
|
| */
|
| @SmallTest
|
| public void testThrottleMayLaunchUrl() {
|
| - ICustomTabsCallback cb = assertWarmupAndMayLaunchUrl(null, URL, true);
|
| + CustomTabsSessionToken token = assertWarmupAndMayLaunchUrl(null, URL, true);
|
| int successfulRequests = 0;
|
| // Send a burst of requests instead of checking for precise delays to avoid flakiness.
|
| while (successfulRequests < 10) {
|
| - if (!mCustomTabsConnection.mayLaunchUrl(cb, Uri.parse(URL), null, null)) break;
|
| + if (!mCustomTabsConnection.mayLaunchUrl(token, Uri.parse(URL), null, null)) break;
|
| successfulRequests++;
|
| }
|
| assertTrue("10 requests in a row should not all succeed.", successfulRequests < 10);
|
| @@ -418,10 +420,10 @@ public class CustomTabsConnectionTest extends InstrumentationTestCase {
|
| */
|
| @SmallTest
|
| public void testThrottlingIsReset() {
|
| - ICustomTabsCallback cb = assertWarmupAndMayLaunchUrl(null, URL, true);
|
| - mCustomTabsConnection.mayLaunchUrl(cb, Uri.parse(URL), null, null);
|
| + CustomTabsSessionToken token = assertWarmupAndMayLaunchUrl(null, URL, true);
|
| + mCustomTabsConnection.mayLaunchUrl(token, Uri.parse(URL), null, null);
|
| // Depending on the timing, the delay should be 100 or 200ms here.
|
| - assertWarmupAndMayLaunchUrl(cb, URL, false);
|
| + assertWarmupAndMayLaunchUrl(token, URL, false);
|
| // Wait for more than 2 * MAX_POSSIBLE_DELAY to clear the delay
|
| try {
|
| Thread.sleep(450); // 2 * MAX_POSSIBLE_DELAY + 50ms
|
| @@ -429,7 +431,7 @@ public class CustomTabsConnectionTest extends InstrumentationTestCase {
|
| fail();
|
| return;
|
| }
|
| - assertWarmupAndMayLaunchUrl(cb, URL, true);
|
| + assertWarmupAndMayLaunchUrl(token, URL, true);
|
| // Check that the delay has been reset, by waiting for 100ms.
|
| try {
|
| Thread.sleep(150); // MIN_DELAY + 50ms margin
|
| @@ -437,7 +439,7 @@ public class CustomTabsConnectionTest extends InstrumentationTestCase {
|
| fail();
|
| return;
|
| }
|
| - assertWarmupAndMayLaunchUrl(cb, URL, true);
|
| + assertWarmupAndMayLaunchUrl(token, URL, true);
|
| }
|
|
|
| /**
|
| @@ -445,13 +447,13 @@ public class CustomTabsConnectionTest extends InstrumentationTestCase {
|
| */
|
| @SmallTest
|
| public void testThrottlingAcrossSessions() {
|
| - ICustomTabsCallback cb = assertWarmupAndMayLaunchUrl(null, URL, true);
|
| + CustomTabsSessionToken token = assertWarmupAndMayLaunchUrl(null, URL, true);
|
| mCustomTabsConnection.resetThrottling(mContext, Process.myUid());
|
| - ICustomTabsCallback cb2 = assertWarmupAndMayLaunchUrl(null, URL, true);
|
| + CustomTabsSessionToken token2 = assertWarmupAndMayLaunchUrl(null, URL, true);
|
| mCustomTabsConnection.resetThrottling(mContext, Process.myUid());
|
| for (int i = 0; i < 10; i++) {
|
| - mCustomTabsConnection.mayLaunchUrl(cb, Uri.parse(URL), null, null);
|
| + mCustomTabsConnection.mayLaunchUrl(token, Uri.parse(URL), null, null);
|
| }
|
| - assertWarmupAndMayLaunchUrl(cb2, URL, false);
|
| + assertWarmupAndMayLaunchUrl(token2, URL, false);
|
| }
|
| }
|
|
|