| Index: chrome/android/javatests/src/org/chromium/chrome/browser/PrerenderTest.java
|
| diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/PrerenderTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/PrerenderTest.java
|
| index 0b317f4539bac7134af72a927f1908025a39317f..45278b4606b049b9a09cfc6a581f58573bbe19c8 100644
|
| --- a/chrome/android/javatests/src/org/chromium/chrome/browser/PrerenderTest.java
|
| +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/PrerenderTest.java
|
| @@ -6,10 +6,19 @@ package org.chromium.chrome.browser;
|
|
|
| import static org.chromium.base.test.util.Restriction.RESTRICTION_TYPE_NON_LOW_END_DEVICE;
|
|
|
| +import android.support.test.InstrumentationRegistry;
|
| import android.support.test.filters.LargeTest;
|
| import android.test.MoreAsserts;
|
|
|
| +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.ThreadUtils;
|
| +import org.chromium.base.test.util.CommandLineFlags;
|
| import org.chromium.base.test.util.DisabledTest;
|
| import org.chromium.base.test.util.Feature;
|
| import org.chromium.base.test.util.FlakyTest;
|
| @@ -17,7 +26,9 @@ import org.chromium.base.test.util.Restriction;
|
| import org.chromium.base.test.util.RetryOnFailure;
|
| import org.chromium.chrome.browser.prerender.ExternalPrerenderHandler;
|
| import org.chromium.chrome.browser.tab.Tab;
|
| -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.PrerenderTestHelper;
|
| import org.chromium.chrome.test.util.browser.TabTitleObserver;
|
| import org.chromium.net.test.EmbeddedTestServer;
|
| @@ -30,45 +41,54 @@ import java.util.concurrent.TimeoutException;
|
| *
|
| * Tests are disabled on low-end devices. These only support one renderer for performance reasons.
|
| */
|
| -public class PrerenderTest extends ChromeTabbedActivityTestBase {
|
| +@RunWith(ChromeJUnit4ClassRunner.class)
|
| +@CommandLineFlags.Add({
|
| + ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE,
|
| + ChromeActivityTestRule.DISABLE_NETWORK_PREDICTION_FLAG,
|
| +})
|
| +public class PrerenderTest {
|
| + @Rule
|
| + public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule();
|
|
|
| private EmbeddedTestServer mTestServer;
|
|
|
| - @Override
|
| - protected void setUp() throws Exception {
|
| - super.setUp();
|
| - mTestServer = EmbeddedTestServer.createAndStartServer(getInstrumentation().getContext());
|
| + @Before
|
| + public void setUp() throws Exception {
|
| + mActivityTestRule.startMainActivityOnBlankPage();
|
| + mTestServer = EmbeddedTestServer.createAndStartServer(
|
| + InstrumentationRegistry.getInstrumentation().getContext());
|
| }
|
|
|
| - @Override
|
| - protected void tearDown() throws Exception {
|
| + @After
|
| + public void tearDown() throws Exception {
|
| mTestServer.stopAndDestroyServer();
|
| - super.tearDown();
|
| }
|
|
|
| /**
|
| * We are using Autocomplete Action Predictor to decide whether or not to prerender.
|
| * Without any training data the default action should be no-prerender.
|
| */
|
| + @Test
|
| @LargeTest
|
| @Restriction({RESTRICTION_TYPE_NON_LOW_END_DEVICE})
|
| @Feature({"TabContents"})
|
| public void testNoPrerender() throws InterruptedException {
|
| String testUrl = mTestServer.getURL(
|
| "/chrome/test/data/android/prerender/google.html");
|
| - final Tab tab = getActivity().getActivityTab();
|
| + final Tab tab = mActivityTestRule.getActivity().getActivityTab();
|
|
|
| // Mimic user behavior: touch to focus then type some URL.
|
| // Since this is a URL, it should be prerendered.
|
| // Type one character at a time to properly simulate input
|
| // to the action predictor.
|
| - typeInOmnibox(testUrl, true);
|
| + mActivityTestRule.typeInOmnibox(testUrl, true);
|
|
|
| - assertFalse("URL should not have been prerendered.",
|
| + Assert.assertFalse("URL should not have been prerendered.",
|
| PrerenderTestHelper.waitForPrerenderUrl(tab, testUrl, true));
|
| // Navigate should not use the prerendered version.
|
| - assertEquals(TabLoadStatus.DEFAULT_PAGE_LOAD,
|
| - loadUrlInTab(testUrl, PageTransition.TYPED | PageTransition.FROM_ADDRESS_BAR, tab));
|
| + Assert.assertEquals(TabLoadStatus.DEFAULT_PAGE_LOAD,
|
| + mActivityTestRule.loadUrlInTab(
|
| + testUrl, PageTransition.TYPED | PageTransition.FROM_ADDRESS_BAR, tab));
|
| }
|
|
|
| /*
|
| @@ -76,14 +96,16 @@ public class PrerenderTest extends ChromeTabbedActivityTestBase {
|
| @Restriction({RESTRICTION_TYPE_NON_LOW_END_DEVICE})
|
| @Feature({"TabContents"})
|
| */
|
| + @Test
|
| @FlakyTest(message = "crbug.com/339668")
|
| public void testPrerenderNotDead() throws InterruptedException, TimeoutException {
|
| String testUrl = mTestServer.getURL(
|
| "/chrome/test/data/android/prerender/google.html");
|
| - final Tab tab = getActivity().getActivityTab();
|
| + final Tab tab = mActivityTestRule.getActivity().getActivityTab();
|
| PrerenderTestHelper.prerenderUrl(testUrl, tab);
|
| // Navigate should use the prerendered version.
|
| - assertEquals(TabLoadStatus.FULL_PRERENDERED_PAGE_LOAD, loadUrl(testUrl));
|
| + Assert.assertEquals(
|
| + TabLoadStatus.FULL_PRERENDERED_PAGE_LOAD, mActivityTestRule.loadUrl(testUrl));
|
|
|
| // Prerender again with new text; make sure we get something different.
|
| String newTitle = "Welcome to the YouTube";
|
| @@ -96,24 +118,25 @@ public class PrerenderTest extends ChromeTabbedActivityTestBase {
|
| TabTitleObserver observer = new TabTitleObserver(tab, newTitle);
|
|
|
| // Now commit and see the new title.
|
| - loadUrl(testUrl);
|
| + mActivityTestRule.loadUrl(testUrl);
|
|
|
| observer.waitForTitleUpdate(5);
|
| - assertEquals(newTitle, tab.getTitle());
|
| + Assert.assertEquals(newTitle, tab.getTitle());
|
| }
|
|
|
| /**
|
| * Tests that we do get the page load finished notification even when a page has been fully
|
| * prerendered.
|
| */
|
| + @Test
|
| @LargeTest
|
| @Restriction({RESTRICTION_TYPE_NON_LOW_END_DEVICE})
|
| @Feature({"TabContents"})
|
| @RetryOnFailure
|
| public void testPageLoadFinishNotification() throws InterruptedException {
|
| String url = mTestServer.getURL("/chrome/test/data/android/prerender/google.html");
|
| - PrerenderTestHelper.prerenderUrl(url, getActivity().getActivityTab());
|
| - loadUrl(url);
|
| + PrerenderTestHelper.prerenderUrl(url, mActivityTestRule.getActivity().getActivityTab());
|
| + mActivityTestRule.loadUrl(url);
|
| }
|
|
|
| /**
|
| @@ -127,12 +150,13 @@ public class PrerenderTest extends ChromeTabbedActivityTestBase {
|
| @Restriction({RESTRICTION_TYPE_NON_LOW_END_DEVICE})
|
| @Feature({"TabContents"})
|
| */
|
| + @Test
|
| @DisabledTest(message = "Prerenderer disables infobars. crbug.com/588808")
|
| public void testInfoBarDismissed() throws InterruptedException {
|
| final String url = mTestServer.getURL(
|
| "/chrome/test/data/geolocation/geolocation_on_load.html");
|
| - final ExternalPrerenderHandler handler =
|
| - PrerenderTestHelper.prerenderUrl(url, getActivity().getActivityTab());
|
| + final ExternalPrerenderHandler handler = PrerenderTestHelper.prerenderUrl(
|
| + url, mActivityTestRule.getActivity().getActivityTab());
|
|
|
| // Cancel the prerender. This will discard the prerendered WebContents and close the
|
| // infobars.
|
| @@ -143,9 +167,4 @@ public class PrerenderTest extends ChromeTabbedActivityTestBase {
|
| }
|
| });
|
| }
|
| -
|
| - @Override
|
| - public void startMainActivity() throws InterruptedException {
|
| - startMainActivityOnBlankPage();
|
| - }
|
| }
|
|
|