Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(366)

Unified Diff: chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabExternalNavigationTest.java

Issue 2805763003: customtabs: Add a test for external app redirection. (Closed)
Patch Set: Address comments. Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabExternalNavigationTest.java
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabExternalNavigationTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabExternalNavigationTest.java
index ab7a16ae32f91fc6099ca51c06e2cda5a2abb1f2..b86be3d749f11634b11f65f9eb104b44439cccdc 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabExternalNavigationTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabExternalNavigationTest.java
@@ -15,14 +15,16 @@ import org.chromium.chrome.browser.externalnav.ExternalNavigationHandler.Overrid
import org.chromium.chrome.browser.externalnav.ExternalNavigationParams;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TabDelegateFactory;
+import org.chromium.content.browser.test.util.Criteria;
+import org.chromium.content.browser.test.util.CriteriaHelper;
+import org.chromium.content.browser.test.util.DOMUtils;
import org.chromium.net.test.EmbeddedTestServer;
/**
- * Instrumentation test for external navigation handling of a Custom Tab.
+ * Instrumentation tests for external navigation handling of a Custom Tab.
*/
@RetryOnFailure
public class CustomTabExternalNavigationTest extends CustomTabActivityTestBase {
-
/**
* A dummy activity that claims to handle "customtab://customtabtest".
*/
@@ -62,30 +64,14 @@ public class CustomTabExternalNavigationTest extends CustomTabActivityTestBase {
super.tearDown();
}
- @Override
- public void startMainActivity() throws InterruptedException {
- super.startMainActivity();
- startCustomTabActivityWithIntent(CustomTabsTestUtils.createMinimalCustomTabIntent(
- getInstrumentation().getTargetContext(), mTestServer.getURL(TEST_PATH)));
- Tab tab = getActivity().getActivityTab();
- TabDelegateFactory delegateFactory = tab.getDelegateFactory();
- assertTrue(delegateFactory instanceof CustomTabDelegateFactory);
- CustomTabDelegateFactory customTabDelegateFactory =
- ((CustomTabDelegateFactory) delegateFactory);
- mUrlHandler = customTabDelegateFactory.getExternalNavigationHandler();
- assertTrue(customTabDelegateFactory.getExternalNavigationDelegate()
- instanceof CustomTabNavigationDelegate);
- mNavigationDelegate = (CustomTabNavigationDelegate) customTabDelegateFactory
- .getExternalNavigationDelegate();
- }
-
/**
* For urls with special schemes and hosts, and there is exactly one activity having a matching
* intent filter, the framework will make that activity the default handler of the special url.
* This test tests whether chrome is able to start the default external handler.
*/
@SmallTest
- public void testExternalActivityStartedForDefaultUrl() {
+ public void testExternalActivityStartedForDefaultUrl() throws Exception {
+ startCustomTabActivity(mTestServer.getURL(TEST_PATH));
final String testUrl = "customtab://customtabtest/intent";
ExternalNavigationParams params = new ExternalNavigationParams.Builder(testUrl, false)
.build();
@@ -100,7 +86,8 @@ public class CustomTabExternalNavigationTest extends CustomTabActivityTestBase {
* be shown, even if other activities such as {@link DummyActivityForHttp} claim to handle it.
*/
@SmallTest
- public void testIntentPickerNotShownForNormalUrl() {
+ public void testIntentPickerNotShownForNormalUrl() throws Exception {
+ startCustomTabActivity(mTestServer.getURL(TEST_PATH));
final String testUrl = "http://customtabtest.com";
ExternalNavigationParams params = new ExternalNavigationParams.Builder(testUrl, false)
.build();
@@ -109,4 +96,40 @@ public class CustomTabExternalNavigationTest extends CustomTabActivityTestBase {
assertFalse("External activities should not be started to handle the url",
mNavigationDelegate.hasExternalActivityStarted());
}
+
+ /**
+ * Launches a Custom Tab, clicks on an external app scheme link, and check that an external
+ * activity has been launched.
+ */
+ @SmallTest
+ public void testExternalApplicationLink() throws Exception {
+ warmUpAndWait();
+ startCustomTabActivity(mTestServer.getURL(TEST_PATH));
+
+ Tab tab = getActivity().getActivityTab();
+ assertTrue(DOMUtils.clickNode(tab.getContentViewCore(), "customtab-external-link"));
+
+ CriteriaHelper.pollUiThread(new Criteria("External Activity not launched.") {
+ @Override
+ public boolean isSatisfied() {
+ return mNavigationDelegate.hasExternalActivityStarted();
+ }
+ });
+ }
+
+ private void startCustomTabActivity(String url) throws InterruptedException {
+ super.startMainActivity();
+ startCustomTabActivityWithIntent(CustomTabsTestUtils.createMinimalCustomTabIntent(
+ getInstrumentation().getTargetContext(), url));
+ Tab tab = getActivity().getActivityTab();
+ TabDelegateFactory delegateFactory = tab.getDelegateFactory();
+ assertTrue(delegateFactory instanceof CustomTabDelegateFactory);
+ CustomTabDelegateFactory customTabDelegateFactory =
+ ((CustomTabDelegateFactory) delegateFactory);
+ mUrlHandler = customTabDelegateFactory.getExternalNavigationHandler();
+ assertTrue(customTabDelegateFactory.getExternalNavigationDelegate()
+ instanceof CustomTabNavigationDelegate);
+ mNavigationDelegate = (CustomTabNavigationDelegate)
+ customTabDelegateFactory.getExternalNavigationDelegate();
+ }
}

Powered by Google App Engine
This is Rietveld 408576698