| Index: chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebappModeTest.java
|
| diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebappModeTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebappModeTest.java
|
| index 540f792afc623822f79d235c824173519c6837a9..a105310bfa3d8405fbf8012937788266ce394da7 100644
|
| --- a/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebappModeTest.java
|
| +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebappModeTest.java
|
| @@ -8,23 +8,34 @@ import android.app.Activity;
|
| import android.content.Context;
|
| import android.content.Intent;
|
| import android.content.SharedPreferences;
|
| +import android.support.test.InstrumentationRegistry;
|
| import android.support.test.filters.MediumTest;
|
| import android.view.View;
|
|
|
| +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.ApplicationStatus;
|
| import org.chromium.base.ContextUtils;
|
| import org.chromium.base.ThreadUtils;
|
| +import org.chromium.base.test.util.CommandLineFlags;
|
| import org.chromium.base.test.util.Feature;
|
| import org.chromium.base.test.util.RetryOnFailure;
|
| import org.chromium.base.test.util.UrlUtils;
|
| import org.chromium.blink_public.platform.WebDisplayMode;
|
| import org.chromium.chrome.browser.ChromeActivity;
|
| +import org.chromium.chrome.browser.ChromeSwitches;
|
| import org.chromium.chrome.browser.ChromeTabbedActivity;
|
| import org.chromium.chrome.browser.ShortcutHelper;
|
| import org.chromium.chrome.browser.ShortcutSource;
|
| import org.chromium.chrome.browser.tab.Tab;
|
| import org.chromium.chrome.browser.tab.TabIdManager;
|
| -import org.chromium.chrome.test.MultiActivityTestBase;
|
| +import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
|
| +import org.chromium.chrome.test.MultiActivityTestRule;
|
| import org.chromium.chrome.test.util.ActivityUtils;
|
| import org.chromium.chrome.test.util.ApplicationTestUtils;
|
| import org.chromium.chrome.test.util.browser.TabLoadObserver;
|
| @@ -44,8 +55,13 @@ import org.chromium.net.test.EmbeddedTestServer;
|
| * FLAG_ACTIVITY_NEW_DOCUMENT mechanism. Moreover, we don't have access to the task list pre-L so
|
| * we have to assume that any non-running WebappActivities are not listed in Android's Overview.
|
| */
|
| +@RunWith(ChromeJUnit4ClassRunner.class)
|
| +@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE})
|
| @RetryOnFailure
|
| -public class WebappModeTest extends MultiActivityTestBase {
|
| +public class WebappModeTest {
|
| + @Rule
|
| + public MultiActivityTestRule mTestRule = new MultiActivityTestRule();
|
| +
|
| private static final String WEBAPP_1_ID = "webapp_id_1";
|
| private static final String WEBAPP_1_URL = UrlUtils.encodeHtmlDataUri(
|
| "<html><head><title>Web app #1</title><meta name='viewport' "
|
| @@ -67,12 +83,14 @@ public class WebappModeTest extends MultiActivityTestBase {
|
| private Intent createIntent(String id, String url, String title, String icon, boolean addMac) {
|
| Intent intent = new Intent();
|
| intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
| - intent.setPackage(getInstrumentation().getTargetContext().getPackageName());
|
| + intent.setPackage(
|
| + InstrumentationRegistry.getInstrumentation().getTargetContext().getPackageName());
|
| intent.setAction(WebappLauncherActivity.ACTION_START_WEBAPP);
|
| if (addMac) {
|
| // Needed for security reasons. If the MAC is excluded, the URL of the webapp is opened
|
| // in a browser window, instead.
|
| - String mac = ShortcutHelper.getEncodedMac(getInstrumentation().getTargetContext(), url);
|
| + String mac = ShortcutHelper.getEncodedMac(
|
| + InstrumentationRegistry.getInstrumentation().getTargetContext(), url);
|
| intent.putExtra(ShortcutHelper.EXTRA_MAC, mac);
|
| }
|
|
|
| @@ -89,14 +107,13 @@ public class WebappModeTest extends MultiActivityTestBase {
|
| boolean addMac) {
|
| Intent intent = createIntent(id, url, title, icon, addMac);
|
|
|
| - getInstrumentation().getTargetContext().startActivity(intent);
|
| - getInstrumentation().waitForIdleSync();
|
| + InstrumentationRegistry.getInstrumentation().getTargetContext().startActivity(intent);
|
| + InstrumentationRegistry.getInstrumentation().waitForIdleSync();
|
| ApplicationTestUtils.waitUntilChromeInForeground();
|
| }
|
|
|
| - @Override
|
| + @Before
|
| public void setUp() throws Exception {
|
| - super.setUp();
|
| WebappRegistry.refreshSharedPrefsForTesting();
|
|
|
| // Register the webapps so when the data storage is opened, the test doesn't crash. There is
|
| @@ -119,18 +136,19 @@ public class WebappModeTest extends MultiActivityTestBase {
|
| }
|
| });
|
|
|
| - mTestServer = EmbeddedTestServer.createAndStartServer(getInstrumentation().getContext());
|
| + mTestServer = EmbeddedTestServer.createAndStartServer(
|
| + InstrumentationRegistry.getInstrumentation().getContext());
|
| }
|
|
|
| - @Override
|
| + @After
|
| public void tearDown() throws Exception {
|
| mTestServer.stopAndDestroyServer();
|
| - super.tearDown();
|
| }
|
|
|
| /**
|
| * Tests that WebappActivities are started properly.
|
| */
|
| + @Test
|
| @MediumTest
|
| @Feature({"Webapps"})
|
| public void testWebappLaunches() {
|
| @@ -169,6 +187,7 @@ public class WebappModeTest extends MultiActivityTestBase {
|
| /**
|
| * Tests that the WebappActivity gets the next available Tab ID instead of 0.
|
| */
|
| + @Test
|
| @MediumTest
|
| @Feature({"Webapps"})
|
| public void testWebappTabIdsProperlyAssigned() {
|
| @@ -179,13 +198,15 @@ public class WebappModeTest extends MultiActivityTestBase {
|
|
|
| final WebappActivity webappActivity =
|
| startWebappActivity(WEBAPP_1_ID, WEBAPP_1_URL, WEBAPP_1_TITLE, WEBAPP_ICON);
|
| - assertEquals("Wrong Tab ID was used", 11684, webappActivity.getActivityTab().getId());
|
| + Assert.assertEquals(
|
| + "Wrong Tab ID was used", 11684, webappActivity.getActivityTab().getId());
|
| }
|
|
|
| /**
|
| * Tests that a WebappActivity can be brought forward by firing an Intent with
|
| * TabOpenType.BRING_TAB_TO_FRONT.
|
| */
|
| + @Test
|
| @MediumTest
|
| @Feature({"Webapps"})
|
| public void testBringTabToFront() throws Exception {
|
| @@ -195,9 +216,9 @@ public class WebappModeTest extends MultiActivityTestBase {
|
| final int webappTabId = firstActivity.getActivityTab().getId();
|
|
|
| // Return home.
|
| - final Context context = getInstrumentation().getTargetContext();
|
| + final Context context = InstrumentationRegistry.getInstrumentation().getTargetContext();
|
| ApplicationTestUtils.fireHomeScreenIntent(context);
|
| - getInstrumentation().waitForIdleSync();
|
| + InstrumentationRegistry.getInstrumentation().waitForIdleSync();
|
|
|
| // Bring the WebappActivity back via an Intent.
|
| Intent intent = Tab.createBringTabToFrontIntent(webappTabId);
|
| @@ -207,7 +228,7 @@ public class WebappModeTest extends MultiActivityTestBase {
|
| // When Chrome is back in the foreground, confirm that the correct Activity was restored.
|
| // Because of Android killing Activities willy-nilly, it may not be the same Activity, but
|
| // it should have the same Tab ID.
|
| - getInstrumentation().waitForIdleSync();
|
| + InstrumentationRegistry.getInstrumentation().waitForIdleSync();
|
| ApplicationTestUtils.waitUntilChromeInForeground();
|
| CriteriaHelper.pollInstrumentationThread(new Criteria() {
|
| @Override
|
| @@ -224,6 +245,7 @@ public class WebappModeTest extends MultiActivityTestBase {
|
| /**
|
| * Ensure WebappActivities can't be launched without proper security checks.
|
| */
|
| + @Test
|
| @MediumTest
|
| @Feature({"Webapps"})
|
| public void testWebappRequiresValidMac() {
|
| @@ -238,7 +260,7 @@ public class WebappModeTest extends MultiActivityTestBase {
|
| });
|
| ChromeActivity chromeActivity =
|
| (ChromeActivity) ApplicationStatus.getLastTrackedFocusedActivity();
|
| - waitForFullLoad(chromeActivity, WEBAPP_1_TITLE);
|
| + mTestRule.waitForFullLoad(chromeActivity, WEBAPP_1_TITLE);
|
|
|
| // Firing a correct Intent should start a WebappActivity instance instead of the browser.
|
| fireWebappIntent(WEBAPP_2_ID, WEBAPP_2_URL, WEBAPP_2_TITLE, WEBAPP_ICON, true);
|
| @@ -253,6 +275,7 @@ public class WebappModeTest extends MultiActivityTestBase {
|
| /**
|
| * Tests that WebappActivities handle window.open() properly in tabbed mode.
|
| */
|
| + @Test
|
| @MediumTest
|
| @Feature({"Webapps"})
|
| public void testWebappHandlesWindowOpenInTabbedMode() throws Exception {
|
| @@ -262,6 +285,7 @@ public class WebappModeTest extends MultiActivityTestBase {
|
| /**
|
| * Tests that WebappActivities handle suppressed window.open() properly in tabbed mode.
|
| */
|
| + @Test
|
| @MediumTest
|
| @Feature({"Webapps"})
|
| public void testWebappHandlesSuppressedWindowOpenInTabbedMode() throws Exception {
|
| @@ -294,14 +318,14 @@ public class WebappModeTest extends MultiActivityTestBase {
|
| }
|
| };
|
| ChromeActivity secondActivity = ActivityUtils.waitForActivity(
|
| - getInstrumentation(), classToWaitFor, fgTrigger);
|
| - waitForFullLoad(secondActivity, "The Google");
|
| + InstrumentationRegistry.getInstrumentation(), classToWaitFor, fgTrigger);
|
| + mTestRule.waitForFullLoad(secondActivity, "The Google");
|
| if (checkContents) {
|
| - assertEquals("New WebContents was not created", "SUCCESS",
|
| + Assert.assertEquals("New WebContents was not created", "SUCCESS",
|
| firstActivity.getActivityTab().getTitle());
|
| }
|
| - assertNotSame("Wrong Activity in foreground",
|
| - firstActivity, ApplicationStatus.getLastTrackedFocusedActivity());
|
| + Assert.assertNotSame("Wrong Activity in foreground", firstActivity,
|
| + ApplicationStatus.getLastTrackedFocusedActivity());
|
|
|
| // Close the child window to kick the user back to the WebappActivity.
|
| JavaScriptUtils.executeJavaScript(
|
|
|