Index: chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTest.java |
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTest.java |
index 17bbb58b31c86826bfcc297449f279775ee73c14..a6726155e1c3434a4a8d636a07e5f0fe66a9592c 100644 |
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTest.java |
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTest.java |
@@ -4,6 +4,7 @@ |
package org.chromium.chrome.browser.customtabs; |
+import android.app.Application; |
import android.app.Instrumentation; |
import android.app.PendingIntent; |
import android.content.BroadcastReceiver; |
@@ -15,7 +16,9 @@ import android.graphics.Color; |
import android.graphics.drawable.BitmapDrawable; |
import android.os.Build; |
import android.os.Bundle; |
+import android.os.IBinder; |
import android.support.customtabs.CustomTabsIntent; |
+import android.support.customtabs.ICustomTabsCallback; |
import android.test.suitebuilder.annotation.SmallTest; |
import android.view.Menu; |
import android.view.MenuItem; |
@@ -37,6 +40,7 @@ import org.chromium.content.browser.test.util.Criteria; |
import org.chromium.content.browser.test.util.CriteriaHelper; |
import java.util.ArrayList; |
+import java.util.concurrent.Callable; |
import java.util.concurrent.TimeoutException; |
import java.util.concurrent.atomic.AtomicBoolean; |
@@ -68,6 +72,8 @@ public class CustomTabActivityTest extends CustomTabActivityTestBase { |
TEST_ACTION = "org.chromium.chrome.browser.customtabs.TEST_PENDING_INTENT_SENT"; |
private static final String TEST_PAGE = TestHttpServerClient.getUrl( |
"chrome/test/data/android/google.html"); |
+ private static final String TEST_PAGE_2 = TestHttpServerClient.getUrl( |
+ "chrome/test/data/android/test.html"); |
private static final String TEST_MENU_TITLE = "testMenuTitle"; |
private CustomTabActivity mActivity; |
@@ -79,10 +85,11 @@ public class CustomTabActivityTest extends CustomTabActivityTestBase { |
} |
/** |
- * @see CustomTabActivityTestBase#createMinimalCustomTabIntent(String) |
+ * @see CustomTabsTestUtils#createMinimalCustomTabIntent(Context, String, IBinder). |
*/ |
private Intent createMinimalCustomTabIntent() { |
- return createMinimalCustomTabIntent(TEST_PAGE); |
+ return CustomTabsTestUtils.createMinimalCustomTabIntent( |
+ getInstrumentation().getTargetContext(), TEST_PAGE, null); |
} |
/** |
@@ -368,6 +375,61 @@ public class CustomTabActivityTest extends CustomTabActivityTestBase { |
assertNull(dataProvider.getActionButtonPendingIntentForTest()); |
} |
+ @SmallTest |
+ public void testLaunchWithSession() throws InterruptedException { |
+ IBinder session = warmUpAndLaunchUrlWithSession(); |
+ assertEquals(mActivity.getIntentDataProvider().getSession(), session); |
+ } |
+ |
+ @SmallTest |
+ public void testLoadNewUrlWithSession() throws InterruptedException { |
+ final IBinder session = warmUpAndLaunchUrlWithSession(); |
+ final Context context = getInstrumentation().getTargetContext(); |
+ assertEquals(mActivity.getIntentDataProvider().getSession(), session); |
+ assertFalse("CustomTabContentHandler handled intent with wrong session", |
+ ThreadUtils.runOnUiThreadBlockingNoException(new Callable<Boolean>() { |
+ @Override |
+ public Boolean call() throws Exception { |
+ return CustomTabActivity.handleInActiveContentIfNeeded( |
+ CustomTabsTestUtils.createMinimalCustomTabIntent(context, |
+ TEST_PAGE_2, |
+ CustomTabsTestUtils.newDummyCallback().asBinder())); |
+ } |
+ })); |
+ assertTrue(CriteriaHelper.pollForCriteria(new Criteria() { |
+ @Override |
+ public boolean isSatisfied() { |
+ return mActivity.getActivityTab().getUrl().equals(TEST_PAGE); |
+ } |
+ })); |
+ assertTrue("CustomTabContentHandler can't handle intent with same session", |
+ ThreadUtils.runOnUiThreadBlockingNoException(new Callable<Boolean>() { |
+ @Override |
+ public Boolean call() throws Exception { |
+ return CustomTabActivity.handleInActiveContentIfNeeded( |
+ CustomTabsTestUtils.createMinimalCustomTabIntent(context, |
+ TEST_PAGE_2, session)); |
+ } |
+ })); |
+ assertTrue(CriteriaHelper.pollForCriteria(new Criteria() { |
+ @Override |
+ public boolean isSatisfied() { |
+ return mActivity.getActivityTab().getUrl().equals(TEST_PAGE_2); |
+ } |
+ })); |
+ } |
+ |
+ private IBinder warmUpAndLaunchUrlWithSession() throws InterruptedException { |
+ Context context = getInstrumentation().getTargetContext().getApplicationContext(); |
+ CustomTabsConnection connection = CustomTabsConnection.getInstance((Application) context); |
+ ICustomTabsCallback callback = CustomTabsTestUtils.newDummyCallback(); |
+ connection.warmup(0); |
+ connection.newSession(callback); |
+ startCustomTabActivityWithIntent(CustomTabsTestUtils.createMinimalCustomTabIntent( |
+ context, TEST_PAGE, callback.asBinder())); |
+ return callback.asBinder(); |
+ } |
+ |
/** |
* A helper class to monitor sending status of a {@link PendingIntent}. |
*/ |