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(); |
- } |
} |