Chromium Code Reviews| 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); |
|
Yusuf
2017/04/18 17:33:54
indentation off here
Benoit L
2017/04/19 09:19:09
git cl format made me do it :-)
And the presubmit
|
| + mNavigationDelegate = (CustomTabNavigationDelegate) |
| + customTabDelegateFactory.getExternalNavigationDelegate(); |
|
Yusuf
2017/04/18 17:33:54
indentation?
Benoit L
2017/04/19 09:19:09
ditto.
|
| + } |
| } |