| Index: chrome/android/javatests/src/org/chromium/chrome/browser/offlinepages/OfflinePageRequestTest.java
 | 
| diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/offlinepages/OfflinePageRequestTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/offlinepages/OfflinePageRequestTest.java
 | 
| index da04976d8fb75c2f3e8edc38a9a9887133ff1d04..6283b7556a9587090e917b2ebd852fd3ccee222e 100644
 | 
| --- a/chrome/android/javatests/src/org/chromium/chrome/browser/offlinepages/OfflinePageRequestTest.java
 | 
| +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/offlinepages/OfflinePageRequestTest.java
 | 
| @@ -4,26 +4,17 @@
 | 
|  
 | 
|  package org.chromium.chrome.browser.offlinepages;
 | 
|  
 | 
| -import android.support.test.InstrumentationRegistry;
 | 
|  import android.support.test.filters.SmallTest;
 | 
| -
 | 
| -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.RetryOnFailure;
 | 
|  import org.chromium.chrome.browser.ChromeActivity;
 | 
| -import org.chromium.chrome.browser.ChromeSwitches;
 | 
|  import org.chromium.chrome.browser.offlinepages.OfflinePageBridge.OfflinePageModelObserver;
 | 
|  import org.chromium.chrome.browser.offlinepages.OfflinePageBridge.SavePageCallback;
 | 
|  import org.chromium.chrome.browser.profiles.Profile;
 | 
|  import org.chromium.chrome.browser.tab.Tab;
 | 
| -import org.chromium.chrome.test.ChromeActivityTestRule;
 | 
| -import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
 | 
| +import org.chromium.chrome.test.ChromeActivityTestCaseBase;
 | 
|  import org.chromium.components.offlinepages.SavePageResult;
 | 
|  import org.chromium.net.NetworkChangeNotifier;
 | 
|  import org.chromium.net.test.EmbeddedTestServer;
 | 
| @@ -32,15 +23,8 @@
 | 
|  import java.util.concurrent.TimeUnit;
 | 
|  
 | 
|  /** Unit tests for offline page request handling. */
 | 
| -@RunWith(ChromeJUnit4ClassRunner.class)
 | 
| -@CommandLineFlags.Add({"enable-features=OfflineBookmarks",
 | 
| -        ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE,
 | 
| -        ChromeActivityTestRule.DISABLE_NETWORK_PREDICTION_FLAG})
 | 
| -public class OfflinePageRequestTest {
 | 
| -    @Rule
 | 
| -    public ChromeActivityTestRule<ChromeActivity> mActivityTestRule =
 | 
| -            new ChromeActivityTestRule<>(ChromeActivity.class);
 | 
| -
 | 
| +@CommandLineFlags.Add("enable-features=OfflineBookmarks")
 | 
| +public class OfflinePageRequestTest extends ChromeActivityTestCaseBase<ChromeActivity> {
 | 
|      private static final String TEST_PAGE = "/chrome/test/data/android/test.html";
 | 
|      private static final String ABOUT_PAGE = "/chrome/test/data/android/about.html";
 | 
|      private static final int TIMEOUT_MS = 5000;
 | 
| @@ -49,9 +33,13 @@
 | 
|  
 | 
|      private OfflinePageBridge mOfflinePageBridge;
 | 
|  
 | 
| -    @Before
 | 
| -    public void setUp() throws Exception {
 | 
| -        mActivityTestRule.startMainActivityOnBlankPage();
 | 
| +    public OfflinePageRequestTest() {
 | 
| +        super(ChromeActivity.class);
 | 
| +    }
 | 
| +
 | 
| +    @Override
 | 
| +    protected void setUp() throws Exception {
 | 
| +        super.setUp();
 | 
|          final Semaphore semaphore = new Semaphore(0);
 | 
|          ThreadUtils.runOnUiThreadBlocking(new Runnable() {
 | 
|              @Override
 | 
| @@ -76,29 +64,38 @@
 | 
|                  }
 | 
|              }
 | 
|          });
 | 
| -        Assert.assertTrue(semaphore.tryAcquire(TIMEOUT_MS, TimeUnit.MILLISECONDS));
 | 
| +        assertTrue(semaphore.tryAcquire(TIMEOUT_MS, TimeUnit.MILLISECONDS));
 | 
|      }
 | 
|  
 | 
| -    @Test
 | 
| +    @Override
 | 
| +    protected void tearDown() throws Exception {
 | 
| +        super.tearDown();
 | 
| +    }
 | 
| +
 | 
| +    @Override
 | 
| +    public void startMainActivity() throws InterruptedException {
 | 
| +        startMainActivityOnBlankPage();
 | 
| +    }
 | 
| +
 | 
|      @SmallTest
 | 
|      @RetryOnFailure
 | 
|      public void testLoadOfflinePageOnDisconnectedNetwork() throws Exception {
 | 
|          EmbeddedTestServer testServer = EmbeddedTestServer.createAndStartServer(
 | 
| -                InstrumentationRegistry.getInstrumentation().getContext());
 | 
| +                getInstrumentation().getContext());
 | 
|          String testUrl = testServer.getURL(TEST_PAGE);
 | 
|          String aboutUrl = testServer.getURL(ABOUT_PAGE);
 | 
|  
 | 
| -        Tab tab = mActivityTestRule.getActivity().getActivityTab();
 | 
| +        Tab tab = getActivity().getActivityTab();
 | 
|  
 | 
|          // Load and save an offline page.
 | 
|          savePage(testUrl);
 | 
| -        Assert.assertFalse(isErrorPage(tab));
 | 
| -        Assert.assertFalse(isOfflinePage(tab));
 | 
| +        assertFalse(isErrorPage(tab));
 | 
| +        assertFalse(isOfflinePage(tab));
 | 
|  
 | 
|          // Load another page.
 | 
| -        mActivityTestRule.loadUrl(aboutUrl);
 | 
| -        Assert.assertFalse(isErrorPage(tab));
 | 
| -        Assert.assertFalse(isOfflinePage(tab));
 | 
| +        loadUrl(aboutUrl);
 | 
| +        assertFalse(isErrorPage(tab));
 | 
| +        assertFalse(isOfflinePage(tab));
 | 
|  
 | 
|          // Stop the server and also disconnect the network.
 | 
|          testServer.stopAndDestroyServer();
 | 
| @@ -110,26 +107,25 @@
 | 
|          });
 | 
|  
 | 
|          // Load the page that has an offline copy. The offline page should be shown.
 | 
| -        mActivityTestRule.loadUrl(testUrl);
 | 
| -        Assert.assertFalse(isErrorPage(tab));
 | 
| -        Assert.assertTrue(isOfflinePage(tab));
 | 
| +        loadUrl(testUrl);
 | 
| +        assertFalse(isErrorPage(tab));
 | 
| +        assertTrue(isOfflinePage(tab));
 | 
|      }
 | 
|  
 | 
| -    @Test
 | 
|      @SmallTest
 | 
|      @RetryOnFailure
 | 
|      public void testLoadOfflinePageWithFragmentOnDisconnectedNetwork() throws Exception {
 | 
| -        EmbeddedTestServer testServer = EmbeddedTestServer.createAndStartServer(
 | 
| -                InstrumentationRegistry.getInstrumentation().getContext());
 | 
| +        EmbeddedTestServer testServer =
 | 
| +                EmbeddedTestServer.createAndStartServer(getInstrumentation().getContext());
 | 
|          String testUrl = testServer.getURL(TEST_PAGE);
 | 
|          String testUrlWithFragment = testUrl + "#ref";
 | 
|  
 | 
| -        Tab tab = mActivityTestRule.getActivity().getActivityTab();
 | 
| +        Tab tab = getActivity().getActivityTab();
 | 
|  
 | 
|          // Load and save an offline page for the url with a fragment.
 | 
|          savePage(testUrlWithFragment);
 | 
| -        Assert.assertFalse(isErrorPage(tab));
 | 
| -        Assert.assertFalse(isOfflinePage(tab));
 | 
| +        assertFalse(isErrorPage(tab));
 | 
| +        assertFalse(isOfflinePage(tab));
 | 
|  
 | 
|          // Stop the server and also disconnect the network.
 | 
|          testServer.stopAndDestroyServer();
 | 
| @@ -141,32 +137,31 @@
 | 
|          });
 | 
|  
 | 
|          // Load the URL without the fragment. The offline page should be shown.
 | 
| -        mActivityTestRule.loadUrl(testUrl);
 | 
| -        Assert.assertFalse(isErrorPage(tab));
 | 
| -        Assert.assertTrue(isOfflinePage(tab));
 | 
| +        loadUrl(testUrl);
 | 
| +        assertFalse(isErrorPage(tab));
 | 
| +        assertTrue(isOfflinePage(tab));
 | 
|      }
 | 
|  
 | 
|      private void savePage(String url) throws InterruptedException {
 | 
| -        mActivityTestRule.loadUrl(url);
 | 
| +        loadUrl(url);
 | 
|  
 | 
|          final Semaphore semaphore = new Semaphore(0);
 | 
|          ThreadUtils.runOnUiThreadBlocking(new Runnable() {
 | 
|              @Override
 | 
|              public void run() {
 | 
| -                mOfflinePageBridge.savePage(
 | 
| -                        mActivityTestRule.getActivity().getActivityTab().getWebContents(),
 | 
| +                mOfflinePageBridge.savePage(getActivity().getActivityTab().getWebContents(),
 | 
|                          CLIENT_ID, new SavePageCallback() {
 | 
|                              @Override
 | 
|                              public void onSavePageDone(
 | 
|                                      int savePageResult, String url, long offlineId) {
 | 
| -                                Assert.assertEquals(
 | 
| +                                assertEquals(
 | 
|                                          "Save failed.", SavePageResult.SUCCESS, savePageResult);
 | 
|                                  semaphore.release();
 | 
|                              }
 | 
|                          });
 | 
|              }
 | 
|          });
 | 
| -        Assert.assertTrue(semaphore.tryAcquire(TIMEOUT_MS, TimeUnit.MILLISECONDS));
 | 
| +        assertTrue(semaphore.tryAcquire(TIMEOUT_MS, TimeUnit.MILLISECONDS));
 | 
|      }
 | 
|  
 | 
|      private boolean isOfflinePage(final Tab tab) {
 | 
| 
 |