| Index: chrome/android/javatests/src/org/chromium/chrome/browser/TabsOpenedFromExternalAppTest.java
|
| diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/TabsOpenedFromExternalAppTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/TabsOpenedFromExternalAppTest.java
|
| index 6c9620e4449d39eeac056d14fda93274dfc9b22f..c52de3d6711a3f75e6ba6932c591dadece914bdd 100644
|
| --- a/chrome/android/javatests/src/org/chromium/chrome/browser/TabsOpenedFromExternalAppTest.java
|
| +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/TabsOpenedFromExternalAppTest.java
|
| @@ -9,13 +9,19 @@ import android.content.Intent;
|
| import android.net.Uri;
|
| import android.os.Bundle;
|
| import android.provider.Browser;
|
| +import android.support.test.InstrumentationRegistry;
|
| import android.support.test.filters.LargeTest;
|
| import android.support.test.filters.MediumTest;
|
| import android.text.TextUtils;
|
| import android.view.ContextMenu;
|
| import android.view.View;
|
|
|
| -import junit.framework.Assert;
|
| +import org.junit.After;
|
| +import org.junit.Assert;
|
| +import org.junit.Before;
|
| +import org.junit.Rule;
|
| +import org.junit.Test;
|
| +import org.junit.runner.RunWith;
|
|
|
| import org.chromium.base.BaseSwitches;
|
| import org.chromium.base.ThreadUtils;
|
| @@ -29,7 +35,9 @@ import org.chromium.chrome.R;
|
| import org.chromium.chrome.browser.tab.EmptyTabObserver;
|
| import org.chromium.chrome.browser.tab.Tab;
|
| import org.chromium.chrome.browser.tabmodel.TabModelUtils;
|
| -import org.chromium.chrome.test.ChromeTabbedActivityTestBase;
|
| +import org.chromium.chrome.test.ChromeActivityTestRule;
|
| +import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
|
| +import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
|
| import org.chromium.chrome.test.util.ApplicationTestUtils;
|
| import org.chromium.chrome.test.util.ChromeTabUtils;
|
| import org.chromium.content.browser.test.util.Criteria;
|
| @@ -45,8 +53,16 @@ import java.util.concurrent.TimeoutException;
|
| /**
|
| * Test the behavior of tabs when opening a URL from an external app.
|
| */
|
| +@RunWith(ChromeJUnit4ClassRunner.class)
|
| +@CommandLineFlags.Add({
|
| + ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE,
|
| + ChromeActivityTestRule.DISABLE_NETWORK_PREDICTION_FLAG,
|
| +})
|
| @RetryOnFailure
|
| -public class TabsOpenedFromExternalAppTest extends ChromeTabbedActivityTestBase {
|
| +public class TabsOpenedFromExternalAppTest {
|
| + @Rule
|
| + public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule();
|
| +
|
| private static final String EXTERNAL_APP_1_ID = "app1";
|
| private static final String EXTERNAL_APP_2_ID = "app2";
|
| private static final String ANDROID_APP_REFERRER = "android-app://com.my.great.great.app";
|
| @@ -161,22 +177,15 @@ public class TabsOpenedFromExternalAppTest extends ChromeTabbedActivityTestBase
|
|
|
| private EmbeddedTestServer mTestServer;
|
|
|
| - @Override
|
| - public void startMainActivity() {
|
| - // We'll start the activity explicitly in the tests, as we need to start it with an intent
|
| - // in a specific test.
|
| - }
|
| -
|
| - @Override
|
| - protected void setUp() throws Exception {
|
| - super.setUp();
|
| - mTestServer = EmbeddedTestServer.createAndStartServer(getInstrumentation().getContext());
|
| + @Before
|
| + public void setUp() throws Exception {
|
| + mTestServer = EmbeddedTestServer.createAndStartServer(
|
| + InstrumentationRegistry.getInstrumentation().getContext());
|
| }
|
|
|
| - @Override
|
| - protected void tearDown() throws Exception {
|
| + @After
|
| + public void tearDown() throws Exception {
|
| mTestServer.stopAndDestroyServer();
|
| - super.tearDown();
|
| }
|
|
|
| /**
|
| @@ -197,27 +206,28 @@ public class TabsOpenedFromExternalAppTest extends ChromeTabbedActivityTestBase
|
| if (extras != null) intent.putExtras(extras);
|
|
|
| if (firstParty) {
|
| - Context context = getInstrumentation().getTargetContext();
|
| + Context context = InstrumentationRegistry.getInstrumentation().getTargetContext();
|
| intent.setPackage(context.getPackageName());
|
| IntentHandler.addTrustedIntentExtras(intent);
|
| }
|
|
|
| - final Tab originalTab = getActivity().getActivityTab();
|
| + final Tab originalTab = mActivityTestRule.getActivity().getActivityTab();
|
| ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| @Override
|
| public void run() {
|
| - getActivity().onNewIntent(intent);
|
| + mActivityTestRule.getActivity().onNewIntent(intent);
|
| }
|
| });
|
| if (createNewTab) {
|
| CriteriaHelper.pollUiThread(new Criteria("Failed to select different tab") {
|
| @Override
|
| public boolean isSatisfied() {
|
| - return getActivity().getActivityTab() != originalTab;
|
| + return mActivityTestRule.getActivity().getActivityTab() != originalTab;
|
| }
|
| });
|
| }
|
| - ChromeTabUtils.waitForTabPageLoaded(getActivity().getActivityTab(), expectedUrl);
|
| + ChromeTabUtils.waitForTabPageLoaded(
|
| + mActivityTestRule.getActivity().getActivityTab(), expectedUrl);
|
| }
|
|
|
| private void launchUrlFromExternalApp(String url, String expectedUrl, String appId,
|
| @@ -234,85 +244,96 @@ public class TabsOpenedFromExternalAppTest extends ChromeTabbedActivityTestBase
|
| * Tests that URLs opened from external apps can set an android-app scheme referrer.
|
| * @throws InterruptedException
|
| */
|
| + @Test
|
| @LargeTest
|
| @Feature({"Navigation"})
|
| public void testReferrer() throws InterruptedException {
|
| String url = mTestServer.getURL("/chrome/test/data/android/about.html");
|
| - startMainActivityFromLauncher();
|
| + mActivityTestRule.startMainActivityFromLauncher();
|
| Bundle extras = new Bundle();
|
| extras.putParcelable(Intent.EXTRA_REFERRER, Uri.parse(ANDROID_APP_REFERRER));
|
| launchUrlFromExternalApp(url, url, EXTERNAL_APP_1_ID, true, extras);
|
| CriteriaHelper.pollInstrumentationThread(
|
| - new ReferrerCriteria(getActivity().getActivityTab(), ANDROID_APP_REFERRER), 2000,
|
| - 200);
|
| + new ReferrerCriteria(
|
| + mActivityTestRule.getActivity().getActivityTab(), ANDROID_APP_REFERRER),
|
| + 2000, 200);
|
| }
|
|
|
| /**
|
| * Tests that URLs opened from external apps can set an android-app scheme referrer.
|
| * @throws InterruptedException
|
| */
|
| + @Test
|
| @LargeTest
|
| @Feature({"Navigation"})
|
| public void testCannotSetArbitraryReferrer() throws InterruptedException {
|
| String url = mTestServer.getURL("/chrome/test/data/android/about.html");
|
| - startMainActivityFromLauncher();
|
| + mActivityTestRule.startMainActivityFromLauncher();
|
| String referrer = "foobar://totally.legit.referrer";
|
| Bundle extras = new Bundle();
|
| extras.putParcelable(Intent.EXTRA_REFERRER, Uri.parse(referrer));
|
| launchUrlFromExternalApp(url, url, EXTERNAL_APP_1_ID, true, extras);
|
| CriteriaHelper.pollInstrumentationThread(
|
| - new ReferrerCriteria(getActivity().getActivityTab(), ""), 2000, 200);
|
| + new ReferrerCriteria(mActivityTestRule.getActivity().getActivityTab(), ""), 2000,
|
| + 200);
|
| }
|
|
|
| /**
|
| * Tests that URLs opened from external applications cannot set an http:// referrer.
|
| * @throws InterruptedException
|
| */
|
| + @Test
|
| @LargeTest
|
| @Feature({"Navigation"})
|
| public void testNoHttpReferrer() throws InterruptedException {
|
| String url = mTestServer.getURL("/chrome/test/data/android/about.html");
|
| - startMainActivityFromLauncher();
|
| + mActivityTestRule.startMainActivityFromLauncher();
|
| Bundle extras = new Bundle();
|
| extras.putParcelable(Intent.EXTRA_REFERRER, Uri.parse(HTTP_REFERRER));
|
|
|
| launchUrlFromExternalApp(url, url, EXTERNAL_APP_1_ID, true, extras, false);
|
| CriteriaHelper.pollInstrumentationThread(
|
| - new ReferrerCriteria(getActivity().getActivityTab(), ""), 2000, 200);
|
| + new ReferrerCriteria(mActivityTestRule.getActivity().getActivityTab(), ""), 2000,
|
| + 200);
|
| }
|
|
|
| /**
|
| * Tests that URLs opened from First party apps can set an http:// referrrer.
|
| * @throws InterruptedException
|
| */
|
| + @Test
|
| @LargeTest
|
| @Feature({"Navigation"})
|
| public void testHttpReferrerFromFirstParty() throws InterruptedException {
|
| String url = mTestServer.getURL("/chrome/test/data/android/about.html");
|
| - startMainActivityFromLauncher();
|
| + mActivityTestRule.startMainActivityFromLauncher();
|
| Bundle extras = new Bundle();
|
| extras.putParcelable(Intent.EXTRA_REFERRER, Uri.parse(HTTP_REFERRER));
|
|
|
| launchUrlFromExternalApp(url, url, EXTERNAL_APP_1_ID, true, extras, true);
|
| CriteriaHelper.pollInstrumentationThread(
|
| - new ReferrerCriteria(getActivity().getActivityTab(), HTTP_REFERRER), 2000, 200);
|
| + new ReferrerCriteria(
|
| + mActivityTestRule.getActivity().getActivityTab(), HTTP_REFERRER),
|
| + 2000, 200);
|
| }
|
|
|
| /**
|
| * Tests that an https:// referrer is stripped in case of downgrade.
|
| * @throws InterruptedException
|
| */
|
| + @Test
|
| @LargeTest
|
| @Feature({"Navigation"})
|
| public void testHttpsReferrerFromFirstPartyNoDowngrade() throws InterruptedException {
|
| String url = mTestServer.getURL("/chrome/test/data/android/about.html");
|
| - startMainActivityFromLauncher();
|
| + mActivityTestRule.startMainActivityFromLauncher();
|
| Bundle extras = new Bundle();
|
| extras.putParcelable(Intent.EXTRA_REFERRER, Uri.parse(HTTPS_REFERRER));
|
|
|
| launchUrlFromExternalApp(url, url, EXTERNAL_APP_1_ID, true, extras, true);
|
| CriteriaHelper.pollInstrumentationThread(
|
| - new ReferrerCriteria(getActivity().getActivityTab(), ""), 2000, 200);
|
| + new ReferrerCriteria(mActivityTestRule.getActivity().getActivityTab(), ""), 2000,
|
| + 200);
|
| }
|
|
|
| /**
|
| @@ -321,42 +342,44 @@ public class TabsOpenedFromExternalAppTest extends ChromeTabbedActivityTestBase
|
| */
|
| // @LargeTest
|
| // @Feature({"Navigation"})
|
| + @Test
|
| @DisabledTest
|
| public void testNoNewTabForSameApp() throws InterruptedException {
|
| - startMainActivityFromLauncher();
|
| + mActivityTestRule.startMainActivityFromLauncher();
|
|
|
| String url1 = mTestServer.getURL("/chrome/test/data/android/google.html");
|
| String url2 = mTestServer.getURL("/chrome/test/data/android/about.html");
|
|
|
| - int originalTabCount = ChromeTabUtils.getNumOpenTabs(getActivity());
|
| + int originalTabCount = ChromeTabUtils.getNumOpenTabs(mActivityTestRule.getActivity());
|
|
|
| // Launch a first URL from an app.
|
| launchUrlFromExternalApp(url1, EXTERNAL_APP_1_ID, false);
|
| // It should have opened in a new tab.
|
| - int newTabCount = ChromeTabUtils.getNumOpenTabs(getActivity());
|
| - assertEquals("Incorrect number of tabs open", originalTabCount + 1, newTabCount);
|
| - assertEquals("Selected tab is not on the right URL.", url1,
|
| - getActivity().getActivityTab().getUrl());
|
| + int newTabCount = ChromeTabUtils.getNumOpenTabs(mActivityTestRule.getActivity());
|
| + Assert.assertEquals("Incorrect number of tabs open", originalTabCount + 1, newTabCount);
|
| + Assert.assertEquals("Selected tab is not on the right URL.", url1,
|
| + mActivityTestRule.getActivity().getActivityTab().getUrl());
|
|
|
| // Launch a new URL from the same app, it should open in the same tab.
|
| - originalTabCount = ChromeTabUtils.getNumOpenTabs(getActivity());
|
| + originalTabCount = ChromeTabUtils.getNumOpenTabs(mActivityTestRule.getActivity());
|
| launchUrlFromExternalApp(url2, EXTERNAL_APP_1_ID, false);
|
| - newTabCount = ChromeTabUtils.getNumOpenTabs(getActivity());
|
| - assertEquals("Incorrect number of tabs open", originalTabCount, newTabCount);
|
| - assertEquals("Selected tab is not on the right URL.", url2,
|
| - getActivity().getActivityTab().getUrl());
|
| + newTabCount = ChromeTabUtils.getNumOpenTabs(mActivityTestRule.getActivity());
|
| + Assert.assertEquals("Incorrect number of tabs open", originalTabCount, newTabCount);
|
| + Assert.assertEquals("Selected tab is not on the right URL.", url2,
|
| + mActivityTestRule.getActivity().getActivityTab().getUrl());
|
|
|
| // And pressing back should close Clank.
|
| - assertTrue("Window does not have focus before pressing back.",
|
| - getActivity().hasWindowFocus());
|
| + Assert.assertTrue("Window does not have focus before pressing back.",
|
| + mActivityTestRule.getActivity().hasWindowFocus());
|
| ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| @Override
|
| public void run() {
|
| - getActivity().onBackPressed();
|
| + mActivityTestRule.getActivity().onBackPressed();
|
| }
|
| });
|
| - getInstrumentation().waitForIdleSync();
|
| - assertFalse("Window still has focus after pressing back.", getActivity().hasWindowFocus());
|
| + InstrumentationRegistry.getInstrumentation().waitForIdleSync();
|
| + Assert.assertFalse("Window still has focus after pressing back.",
|
| + mActivityTestRule.getActivity().hasWindowFocus());
|
| }
|
|
|
| /**
|
| @@ -365,11 +388,11 @@ public class TabsOpenedFromExternalAppTest extends ChromeTabbedActivityTestBase
|
| * @throws InterruptedException
|
| */
|
|
|
| -
|
| + @Test
|
| @LargeTest
|
| @Feature({"Navigation"})
|
| public void testNewTabForUnknownApp() throws InterruptedException {
|
| - startMainActivityFromLauncher();
|
| + mActivityTestRule.startMainActivityFromLauncher();
|
|
|
| String url1 = mTestServer.getURL("/chrome/test/data/android/google.html");
|
| String url2 = mTestServer.getURL("/chrome/test/data/android/about.html");
|
| @@ -378,37 +401,38 @@ public class TabsOpenedFromExternalAppTest extends ChromeTabbedActivityTestBase
|
| // Launch a first URL with an app.
|
| launchUrlFromExternalApp(url1, EXTERNAL_APP_1_ID, false);
|
|
|
| - assertEquals("Selected tab is not on the right URL.", url1,
|
| - getActivity().getActivityTab().getUrl());
|
| - int originalTabCount = ChromeTabUtils.getNumOpenTabs(getActivity());
|
| + Assert.assertEquals("Selected tab is not on the right URL.", url1,
|
| + mActivityTestRule.getActivity().getActivityTab().getUrl());
|
| + int originalTabCount = ChromeTabUtils.getNumOpenTabs(mActivityTestRule.getActivity());
|
|
|
| // Launch the same URL without app ID. It should open a new tab.
|
| - originalTabCount = ChromeTabUtils.getNumOpenTabs(getActivity());
|
| + originalTabCount = ChromeTabUtils.getNumOpenTabs(mActivityTestRule.getActivity());
|
| launchUrlFromExternalApp(url1, null, false);
|
| - int newTabCount = ChromeTabUtils.getNumOpenTabs(getActivity());
|
| - assertEquals("Incorrect number of tabs open", originalTabCount + 1, newTabCount);
|
| - assertEquals("Selected tab is not on the right URL.", url1,
|
| - getActivity().getActivityTab().getUrl());
|
| + int newTabCount = ChromeTabUtils.getNumOpenTabs(mActivityTestRule.getActivity());
|
| + Assert.assertEquals("Incorrect number of tabs open", originalTabCount + 1, newTabCount);
|
| + Assert.assertEquals("Selected tab is not on the right URL.", url1,
|
| + mActivityTestRule.getActivity().getActivityTab().getUrl());
|
|
|
| // Launch another URL without app ID. It should open a new tab.
|
| - originalTabCount = ChromeTabUtils.getNumOpenTabs(getActivity());
|
| + originalTabCount = ChromeTabUtils.getNumOpenTabs(mActivityTestRule.getActivity());
|
| launchUrlFromExternalApp(url2, null, false);
|
| - newTabCount = ChromeTabUtils.getNumOpenTabs(getActivity());
|
| - assertEquals("Incorrect number of tabs open", originalTabCount + 1, newTabCount);
|
| - assertEquals("Selected tab is not on the right URL.", url2,
|
| - getActivity().getActivityTab().getUrl());
|
| + newTabCount = ChromeTabUtils.getNumOpenTabs(mActivityTestRule.getActivity());
|
| + Assert.assertEquals("Incorrect number of tabs open", originalTabCount + 1, newTabCount);
|
| + Assert.assertEquals("Selected tab is not on the right URL.", url2,
|
| + mActivityTestRule.getActivity().getActivityTab().getUrl());
|
|
|
| // And pressing back should close Clank.
|
| - assertTrue("Window does not have focus before pressing back.",
|
| - getActivity().hasWindowFocus());
|
| + Assert.assertTrue("Window does not have focus before pressing back.",
|
| + mActivityTestRule.getActivity().hasWindowFocus());
|
| ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| @Override
|
| public void run() {
|
| - getActivity().onBackPressed();
|
| + mActivityTestRule.getActivity().onBackPressed();
|
| }
|
| });
|
| - getInstrumentation().waitForIdleSync();
|
| - assertFalse("Window still has focus after pressing back.", getActivity().hasWindowFocus());
|
| + InstrumentationRegistry.getInstrumentation().waitForIdleSync();
|
| + Assert.assertFalse("Window still has focus after pressing back.",
|
| + mActivityTestRule.getActivity().hasWindowFocus());
|
| }
|
|
|
| /**
|
| @@ -418,42 +442,44 @@ public class TabsOpenedFromExternalAppTest extends ChromeTabbedActivityTestBase
|
| */
|
| // @LargeTest
|
| // @Feature({"Navigation"})
|
| + @Test
|
| @DisabledTest
|
| public void testNewTabWithNewTabExtra() throws InterruptedException {
|
| - startMainActivityFromLauncher();
|
| + mActivityTestRule.startMainActivityFromLauncher();
|
|
|
| String url1 = mTestServer.getURL("/chrome/test/data/android/google.html");
|
| String url2 = mTestServer.getURL("/chrome/test/data/android/about.html");
|
|
|
| - int originalTabCount = ChromeTabUtils.getNumOpenTabs(getActivity());
|
| + int originalTabCount = ChromeTabUtils.getNumOpenTabs(mActivityTestRule.getActivity());
|
|
|
| // Launch a first URL from an app.
|
| launchUrlFromExternalApp(url1, EXTERNAL_APP_1_ID, false);
|
| // It should have opened in a new tab.
|
| - int newTabCount = ChromeTabUtils.getNumOpenTabs(getActivity());
|
| - assertEquals("Incorrect number of tabs open", originalTabCount + 1, newTabCount);
|
| - assertEquals("Selected tab is not on the right URL.", url1,
|
| - getActivity().getActivityTab().getUrl());
|
| + int newTabCount = ChromeTabUtils.getNumOpenTabs(mActivityTestRule.getActivity());
|
| + Assert.assertEquals("Incorrect number of tabs open", originalTabCount + 1, newTabCount);
|
| + Assert.assertEquals("Selected tab is not on the right URL.", url1,
|
| + mActivityTestRule.getActivity().getActivityTab().getUrl());
|
|
|
| // Launch a new URL from the same app with the right extra to open in a new tab.
|
| - originalTabCount = ChromeTabUtils.getNumOpenTabs(getActivity());
|
| + originalTabCount = ChromeTabUtils.getNumOpenTabs(mActivityTestRule.getActivity());
|
| launchUrlFromExternalApp(url2, EXTERNAL_APP_1_ID, true);
|
| - newTabCount = ChromeTabUtils.getNumOpenTabs(getActivity());
|
| - assertEquals("Incorrect number of tabs open", originalTabCount + 1, newTabCount);
|
| - assertEquals("Selected tab is not on the right URL.", url2,
|
| - getActivity().getActivityTab().getUrl());
|
| + newTabCount = ChromeTabUtils.getNumOpenTabs(mActivityTestRule.getActivity());
|
| + Assert.assertEquals("Incorrect number of tabs open", originalTabCount + 1, newTabCount);
|
| + Assert.assertEquals("Selected tab is not on the right URL.", url2,
|
| + mActivityTestRule.getActivity().getActivityTab().getUrl());
|
|
|
| // And pressing back should close Clank.
|
| - assertTrue("Window does not have focus before pressing back.",
|
| - getActivity().hasWindowFocus());
|
| + Assert.assertTrue("Window does not have focus before pressing back.",
|
| + mActivityTestRule.getActivity().hasWindowFocus());
|
| ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| @Override
|
| public void run() {
|
| - getActivity().onBackPressed();
|
| + mActivityTestRule.getActivity().onBackPressed();
|
| }
|
| });
|
| - getInstrumentation().waitForIdleSync();
|
| - assertFalse("Window still has focus after pressing back.", getActivity().hasWindowFocus());
|
| + InstrumentationRegistry.getInstrumentation().waitForIdleSync();
|
| + Assert.assertFalse("Window still has focus after pressing back.",
|
| + mActivityTestRule.getActivity().hasWindowFocus());
|
| }
|
|
|
| /**
|
| @@ -461,6 +487,7 @@ public class TabsOpenedFromExternalAppTest extends ChromeTabbedActivityTestBase
|
| * tab) from the external app.
|
| * @throws InterruptedException
|
| */
|
| + @Test
|
| @LargeTest
|
| @Feature({"Navigation", "Main"})
|
| public void testNoNewTabForSameAppOnStart() throws InterruptedException {
|
| @@ -468,39 +495,41 @@ public class TabsOpenedFromExternalAppTest extends ChromeTabbedActivityTestBase
|
| String url2 = mTestServer.getURL("/chrome/test/data/android/about.html");
|
|
|
| // Launch Clank from the external app.
|
| - startMainActivityFromExternalApp(url1, EXTERNAL_APP_1_ID);
|
| - assertEquals("Selected tab is not on the right URL.", url1,
|
| - getActivity().getActivityTab().getUrl());
|
| + mActivityTestRule.startMainActivityFromExternalApp(url1, EXTERNAL_APP_1_ID);
|
| + Assert.assertEquals("Selected tab is not on the right URL.", url1,
|
| + mActivityTestRule.getActivity().getActivityTab().getUrl());
|
|
|
| // Launch a new URL from the same app, it should open in the same tab.
|
| - int originalTabCount = ChromeTabUtils.getNumOpenTabs(getActivity());
|
| + int originalTabCount = ChromeTabUtils.getNumOpenTabs(mActivityTestRule.getActivity());
|
| launchUrlFromExternalApp(url2, EXTERNAL_APP_1_ID, false);
|
| - int newTabCount = ChromeTabUtils.getNumOpenTabs(getActivity());
|
| - assertEquals("Incorrect number of tabs open", originalTabCount, newTabCount);
|
| - assertEquals("Selected tab is not on the right URL.", url2,
|
| - getActivity().getActivityTab().getUrl());
|
| + int newTabCount = ChromeTabUtils.getNumOpenTabs(mActivityTestRule.getActivity());
|
| + Assert.assertEquals("Incorrect number of tabs open", originalTabCount, newTabCount);
|
| + Assert.assertEquals("Selected tab is not on the right URL.", url2,
|
| + mActivityTestRule.getActivity().getActivityTab().getUrl());
|
|
|
| // And pressing back should close Clank.
|
| - assertTrue("Window does not have focus before pressing back.",
|
| - getActivity().hasWindowFocus());
|
| + Assert.assertTrue("Window does not have focus before pressing back.",
|
| + mActivityTestRule.getActivity().hasWindowFocus());
|
| ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| @Override
|
| public void run() {
|
| - getActivity().onBackPressed();
|
| + mActivityTestRule.getActivity().onBackPressed();
|
| }
|
| });
|
| - getInstrumentation().waitForIdleSync();
|
| - assertFalse("Window still has focus after pressing back.", getActivity().hasWindowFocus());
|
| + InstrumentationRegistry.getInstrumentation().waitForIdleSync();
|
| + Assert.assertFalse("Window still has focus after pressing back.",
|
| + mActivityTestRule.getActivity().hasWindowFocus());
|
| }
|
|
|
| /**
|
| * Test that URLs opened from different external apps do create new tabs.
|
| * @throws InterruptedException
|
| */
|
| + @Test
|
| @LargeTest
|
| @Feature({"Navigation", "Main"})
|
| public void testNewTabForDifferentApps() throws InterruptedException {
|
| - startMainActivityFromLauncher();
|
| + mActivityTestRule.startMainActivityFromLauncher();
|
|
|
| String url1 = mTestServer.getURL("/chrome/test/data/android/google.html");
|
| String url2 = mTestServer.getURL("/chrome/test/data/android/about.html");
|
| @@ -509,24 +538,24 @@ public class TabsOpenedFromExternalAppTest extends ChromeTabbedActivityTestBase
|
| // Launch a first URL from an app1.
|
| launchUrlFromExternalApp(url1, EXTERNAL_APP_1_ID, false);
|
|
|
| - int originalTabCount = ChromeTabUtils.getNumOpenTabs(getActivity());
|
| + int originalTabCount = ChromeTabUtils.getNumOpenTabs(mActivityTestRule.getActivity());
|
|
|
| // Launch a second URL from an app2, it should open in a new tab.
|
| launchUrlFromExternalApp(url2, EXTERNAL_APP_2_ID, false);
|
|
|
| // It should have opened in a new tab.
|
| - int newTabCount = ChromeTabUtils.getNumOpenTabs(getActivity());
|
| - assertEquals("Incorrect number of tabs open", originalTabCount + 1, newTabCount);
|
| - assertEquals("Selected tab is not on the right URL.", url2,
|
| - getActivity().getActivityTab().getUrl());
|
| + int newTabCount = ChromeTabUtils.getNumOpenTabs(mActivityTestRule.getActivity());
|
| + Assert.assertEquals("Incorrect number of tabs open", originalTabCount + 1, newTabCount);
|
| + Assert.assertEquals("Selected tab is not on the right URL.", url2,
|
| + mActivityTestRule.getActivity().getActivityTab().getUrl());
|
|
|
| // Also try with no app id, it should also open in a new tab.
|
| - originalTabCount = ChromeTabUtils.getNumOpenTabs(getActivity());
|
| + originalTabCount = ChromeTabUtils.getNumOpenTabs(mActivityTestRule.getActivity());
|
| launchUrlFromExternalApp(url3, null, false);
|
| - newTabCount = ChromeTabUtils.getNumOpenTabs(getActivity());
|
| - assertEquals("Incorrect number of tabs open", originalTabCount + 1, newTabCount);
|
| - assertEquals("Selected tab is not on the right URL.", url3,
|
| - getActivity().getActivityTab().getUrl());
|
| + newTabCount = ChromeTabUtils.getNumOpenTabs(mActivityTestRule.getActivity());
|
| + Assert.assertEquals("Incorrect number of tabs open", originalTabCount + 1, newTabCount);
|
| + Assert.assertEquals("Selected tab is not on the right URL.", url3,
|
| + mActivityTestRule.getActivity().getActivityTab().getUrl());
|
| }
|
|
|
| /**
|
| @@ -534,10 +563,11 @@ public class TabsOpenedFromExternalAppTest extends ChromeTabbedActivityTestBase
|
| * when the user has navigated elsewhere manually in the same tab.
|
| * @throws InterruptedException
|
| */
|
| + @Test
|
| @LargeTest
|
| @Feature({"Navigation"})
|
| public void testNewTabAfterNavigation() throws InterruptedException {
|
| - startMainActivityFromLauncher();
|
| + mActivityTestRule.startMainActivityFromLauncher();
|
|
|
| String url1 = mTestServer.getURL("/chrome/test/data/android/google.html");
|
| String url2 = mTestServer.getURL("/chrome/test/data/android/about.html");
|
| @@ -547,15 +577,15 @@ public class TabsOpenedFromExternalAppTest extends ChromeTabbedActivityTestBase
|
| launchUrlFromExternalApp(url1, EXTERNAL_APP_1_ID, false);
|
|
|
| // Now simulate the user manually navigating to another URL.
|
| - loadUrl(url3);
|
| + mActivityTestRule.loadUrl(url3);
|
|
|
| // Launch a second URL from the same app, it should open in a new tab.
|
| - int originalTabCount = ChromeTabUtils.getNumOpenTabs(getActivity());
|
| + int originalTabCount = ChromeTabUtils.getNumOpenTabs(mActivityTestRule.getActivity());
|
| launchUrlFromExternalApp(url2, EXTERNAL_APP_1_ID, false);
|
| - int newTabCount = ChromeTabUtils.getNumOpenTabs(getActivity());
|
| - assertEquals("Incorrect number of tabs open", originalTabCount + 1, newTabCount);
|
| - assertEquals("Selected tab is not on the right URL.", url2,
|
| - getActivity().getActivityTab().getUrl());
|
| + int newTabCount = ChromeTabUtils.getNumOpenTabs(mActivityTestRule.getActivity());
|
| + Assert.assertEquals("Incorrect number of tabs open", originalTabCount + 1, newTabCount);
|
| + Assert.assertEquals("Selected tab is not on the right URL.", url2,
|
| + mActivityTestRule.getActivity().getActivityTab().getUrl());
|
| }
|
|
|
| /**
|
| @@ -567,9 +597,10 @@ public class TabsOpenedFromExternalAppTest extends ChromeTabbedActivityTestBase
|
| * @LargeTest
|
| * @Feature({"Navigation"})
|
| */
|
| + @Test
|
| @FlakyTest(message = "http://crbug.com/6467101")
|
| public void testNewTabWhenPageEdited() throws InterruptedException, TimeoutException {
|
| - startMainActivityFromLauncher();
|
| + mActivityTestRule.startMainActivityFromLauncher();
|
|
|
| String url1 = mTestServer.getURL("/chrome/test/data/android/google.html");
|
| String url2 = mTestServer.getURL("/chrome/test/data/android/about.html");
|
| @@ -578,27 +609,31 @@ public class TabsOpenedFromExternalAppTest extends ChromeTabbedActivityTestBase
|
| launchUrlFromExternalApp(url1, EXTERNAL_APP_1_ID, false);
|
|
|
| // Focus the text-field and type something.
|
| - Tab tab = getActivity().getActivityTab();
|
| + Tab tab = mActivityTestRule.getActivity().getActivityTab();
|
| DOMUtils.focusNode(tab.getContentViewCore().getWebContents(), "textField");
|
|
|
| // Some processing needs to happen before the test-field has the focus.
|
| - CriteriaHelper.pollInstrumentationThread(new ElementFocusedCriteria(
|
| - getActivity().getActivityTab(), "textField"), 2000, 200);
|
| + CriteriaHelper.pollInstrumentationThread(
|
| + new ElementFocusedCriteria(
|
| + mActivityTestRule.getActivity().getActivityTab(), "textField"),
|
| + 2000, 200);
|
|
|
| // Now type something.
|
| - getInstrumentation().sendStringSync("banana");
|
| + InstrumentationRegistry.getInstrumentation().sendStringSync("banana");
|
|
|
| // We also have to wait for the text to happen in the page.
|
| - CriteriaHelper.pollInstrumentationThread(new ElementTextIsCriteria(
|
| - getActivity().getActivityTab(), "textField", "banana"), 2000, 200);
|
| + CriteriaHelper.pollInstrumentationThread(
|
| + new ElementTextIsCriteria(
|
| + mActivityTestRule.getActivity().getActivityTab(), "textField", "banana"),
|
| + 2000, 200);
|
|
|
| // Launch a second URL from the same app, it should open in a new tab.
|
| - int originalTabCount = ChromeTabUtils.getNumOpenTabs(getActivity());
|
| + int originalTabCount = ChromeTabUtils.getNumOpenTabs(mActivityTestRule.getActivity());
|
| launchUrlFromExternalApp(url2, EXTERNAL_APP_1_ID, false);
|
| - int newTabCount = ChromeTabUtils.getNumOpenTabs(getActivity());
|
| - assertEquals("Incorrect number of tabs open", originalTabCount + 1, newTabCount);
|
| - assertEquals("Selected tab is not on the right URL.", url2,
|
| - getActivity().getActivityTab().getUrl());
|
| + int newTabCount = ChromeTabUtils.getNumOpenTabs(mActivityTestRule.getActivity());
|
| + Assert.assertEquals("Incorrect number of tabs open", originalTabCount + 1, newTabCount);
|
| + Assert.assertEquals("Selected tab is not on the right URL.", url2,
|
| + mActivityTestRule.getActivity().getActivityTab().getUrl());
|
| }
|
|
|
|
|
| @@ -614,22 +649,24 @@ public class TabsOpenedFromExternalAppTest extends ChromeTabbedActivityTestBase
|
| /**
|
| * Catches regressions for https://crbug.com/495877.
|
| */
|
| + @Test
|
| @FlakyTest(message = "https://crbug.com/571030")
|
| @MediumTest
|
| @CommandLineFlags.Add(BaseSwitches.ENABLE_LOW_END_DEVICE_MODE)
|
| public void testBackgroundSvelteTabIsSelectedAfterClosingExternalTab() throws Exception {
|
| // Start up Chrome and immediately close its tab -- it gets in the way.
|
| - startMainActivityFromLauncher();
|
| + mActivityTestRule.startMainActivityFromLauncher();
|
| ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| @Override
|
| public void run() {
|
| - TabModelUtils.closeTabByIndex(getActivity().getCurrentTabModel(), 0);
|
| + TabModelUtils.closeTabByIndex(
|
| + mActivityTestRule.getActivity().getCurrentTabModel(), 0);
|
| }
|
| });
|
| CriteriaHelper.pollUiThread(Criteria.equals(0, new Callable<Integer>() {
|
| @Override
|
| public Integer call() {
|
| - return getActivity().getTabModelSelector().getTotalTabCount();
|
| + return mActivityTestRule.getActivity().getTabModelSelector().getTotalTabCount();
|
| }
|
| }));
|
|
|
| @@ -652,28 +689,33 @@ public class TabsOpenedFromExternalAppTest extends ChromeTabbedActivityTestBase
|
|
|
| // Open a tab via an external application.
|
| final Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(hrefLink));
|
| - intent.setClassName(getInstrumentation().getTargetContext().getPackageName(),
|
| + intent.setClassName(
|
| + InstrumentationRegistry.getInstrumentation().getTargetContext().getPackageName(),
|
| ChromeTabbedActivity.class.getName());
|
| intent.putExtra(Browser.EXTRA_APPLICATION_ID, "com.legit.totes");
|
| intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
| - getInstrumentation().getTargetContext().startActivity(intent);
|
| + InstrumentationRegistry.getInstrumentation().getTargetContext().startActivity(intent);
|
|
|
| CriteriaHelper.pollUiThread(Criteria.equals(1, new Callable<Integer>() {
|
| @Override
|
| public Integer call() {
|
| - return getActivity().getTabModelSelector().getTotalTabCount();
|
| + return mActivityTestRule.getActivity().getTabModelSelector().getTotalTabCount();
|
| }
|
| }));
|
| - ApplicationTestUtils.assertWaitForPageScaleFactorMatch(getActivity(), 0.5f, false);
|
| + ApplicationTestUtils.assertWaitForPageScaleFactorMatch(
|
| + mActivityTestRule.getActivity(), 0.5f, false);
|
|
|
| // Long press the center of the page, which should bring up the context menu.
|
| final TestTabObserver observer = new TestTabObserver();
|
| - getActivity().getActivityTab().addObserver(observer);
|
| - assertNull(observer.mContextMenu);
|
| + mActivityTestRule.getActivity().getActivityTab().addObserver(observer);
|
| + Assert.assertNull(observer.mContextMenu);
|
| final View view = ThreadUtils.runOnUiThreadBlocking(new Callable<View>() {
|
| @Override
|
| public View call() throws Exception {
|
| - return getActivity().getActivityTab().getContentViewCore().getContainerView();
|
| + return mActivityTestRule.getActivity()
|
| + .getActivityTab()
|
| + .getContentViewCore()
|
| + .getContainerView();
|
| }
|
| });
|
| TouchCommon.longPressView(view);
|
| @@ -683,13 +725,13 @@ public class TabsOpenedFromExternalAppTest extends ChromeTabbedActivityTestBase
|
| return observer.mContextMenu != null;
|
| }
|
| });
|
| - getActivity().getActivityTab().removeObserver(observer);
|
| + mActivityTestRule.getActivity().getActivityTab().removeObserver(observer);
|
|
|
| // Select the "open in new tab" option.
|
| ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| @Override
|
| public void run() {
|
| - assertTrue(observer.mContextMenu.performIdentifierAction(
|
| + Assert.assertTrue(observer.mContextMenu.performIdentifierAction(
|
| R.id.contextmenu_open_in_new_tab, 0));
|
| }
|
| });
|
| @@ -698,7 +740,7 @@ public class TabsOpenedFromExternalAppTest extends ChromeTabbedActivityTestBase
|
| CriteriaHelper.pollUiThread(Criteria.equals(2, new Callable<Integer>() {
|
| @Override
|
| public Integer call() {
|
| - return getActivity().getTabModelSelector().getTotalTabCount();
|
| + return mActivityTestRule.getActivity().getTabModelSelector().getTotalTabCount();
|
| }
|
| }));
|
|
|
| @@ -707,13 +749,13 @@ public class TabsOpenedFromExternalAppTest extends ChromeTabbedActivityTestBase
|
| ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| @Override
|
| public void run() {
|
| - getActivity().onBackPressed();
|
| + mActivityTestRule.getActivity().onBackPressed();
|
| }
|
| });
|
| CriteriaHelper.pollUiThread(Criteria.equals(1, new Callable<Integer>() {
|
| @Override
|
| public Integer call() {
|
| - return getActivity().getTabModelSelector().getTotalTabCount();
|
| + return mActivityTestRule.getActivity().getTabModelSelector().getTotalTabCount();
|
| }
|
| }));
|
| }
|
| @@ -722,11 +764,12 @@ public class TabsOpenedFromExternalAppTest extends ChromeTabbedActivityTestBase
|
| * Tests that a Weblite url from an external app uses the lite_url param when Data Reduction
|
| * Proxy previews are being used.
|
| */
|
| + @Test
|
| @MediumTest
|
| @CommandLineFlags.Add({"enable-spdy-proxy-auth", "data-reduction-proxy-lo-fi=always-on",
|
| "enable-data-reduction-proxy-lite-page"})
|
| public void testLaunchWebLiteURL() throws InterruptedException {
|
| - startMainActivityFromLauncher();
|
| + mActivityTestRule.startMainActivityFromLauncher();
|
|
|
| String url = mTestServer.getURL("/chrome/test/data/android/about.html");
|
|
|
| @@ -734,24 +777,25 @@ public class TabsOpenedFromExternalAppTest extends ChromeTabbedActivityTestBase
|
| launchUrlFromExternalApp("http://googleweblight.com/?lite_url=" + url, url,
|
| EXTERNAL_APP_1_ID, false, null);
|
|
|
| - assertEquals("Selected tab is not on the right URL.",
|
| - url, getActivity().getActivityTab().getUrl());
|
| + Assert.assertEquals("Selected tab is not on the right URL.", url,
|
| + mActivityTestRule.getActivity().getActivityTab().getUrl());
|
| }
|
|
|
| /**
|
| * Tests that a Weblite url from an external app does not use the lite_url param when Data
|
| * Reduction Proxy previews are not being used.
|
| */
|
| + @Test
|
| @MediumTest
|
| public void testLaunchWebLiteURLNoPreviews() throws InterruptedException {
|
| - startMainActivityFromLauncher();
|
| + mActivityTestRule.startMainActivityFromLauncher();
|
|
|
| String url = "http://googleweblight.com/?lite_url=chrome/test/data/android/about.html";
|
|
|
| // Launch a first URL from an app.
|
| launchUrlFromExternalApp(url, url, EXTERNAL_APP_1_ID, false, null);
|
|
|
| - assertEquals("Selected tab is not on the right URL.",
|
| - url, getActivity().getActivityTab().getUrl());
|
| + Assert.assertEquals("Selected tab is not on the right URL.", url,
|
| + mActivityTestRule.getActivity().getActivityTab().getUrl());
|
| }
|
| }
|
|
|