| Index: chrome/android/javatests/src/org/chromium/chrome/browser/offlinepages/RecentTabsTest.java
|
| diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/offlinepages/RecentTabsTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/offlinepages/RecentTabsTest.java
|
| index 60f49ac4ac109876e2b29c2ddb65f80d3882cca9..bd270dc20f94dae256d82084ed2ddbf2491d6138 100644
|
| --- a/chrome/android/javatests/src/org/chromium/chrome/browser/offlinepages/RecentTabsTest.java
|
| +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/offlinepages/RecentTabsTest.java
|
| @@ -4,18 +4,29 @@
|
|
|
| package org.chromium.chrome.browser.offlinepages;
|
|
|
| +import android.support.test.InstrumentationRegistry;
|
| import android.support.test.filters.MediumTest;
|
|
|
| +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.Callback;
|
| import org.chromium.base.ThreadUtils;
|
| import org.chromium.base.test.util.CommandLineFlags;
|
| +import org.chromium.chrome.browser.ChromeSwitches;
|
| import org.chromium.chrome.browser.offlinepages.OfflinePageBridge.OfflinePageModelObserver;
|
| import org.chromium.chrome.browser.profiles.Profile;
|
| import org.chromium.chrome.browser.tab.Tab;
|
| import org.chromium.chrome.browser.tabmodel.TabModel;
|
| import org.chromium.chrome.browser.tabmodel.TabModelSelector;
|
| 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.net.NetworkChangeNotifier;
|
| import org.chromium.net.test.EmbeddedTestServer;
|
|
|
| @@ -26,8 +37,14 @@ import java.util.concurrent.Semaphore;
|
| import java.util.concurrent.TimeUnit;
|
|
|
| /** Integration tests for the Last 1 feature of Offline Pages. */
|
| -@CommandLineFlags.Add("enable-features=OfflineRecentPages")
|
| -public class RecentTabsTest extends ChromeTabbedActivityTestBase {
|
| +@RunWith(ChromeJUnit4ClassRunner.class)
|
| +@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE,
|
| + ChromeActivityTestRule.DISABLE_NETWORK_PREDICTION_FLAG,
|
| + "enable-features=OfflineRecentPages"})
|
| +public class RecentTabsTest {
|
| + @Rule
|
| + public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule();
|
| +
|
| private static final String TEST_PAGE = "/chrome/test/data/android/about.html";
|
| private static final int TIMEOUT_MS = 5000;
|
|
|
| @@ -60,13 +77,12 @@ public class RecentTabsTest extends ChromeTabbedActivityTestBase {
|
| });
|
| }
|
| });
|
| - assertTrue(semaphore.tryAcquire(TIMEOUT_MS, TimeUnit.MILLISECONDS));
|
| + Assert.assertTrue(semaphore.tryAcquire(TIMEOUT_MS, TimeUnit.MILLISECONDS));
|
| }
|
|
|
| - @Override
|
| - protected void setUp() throws Exception {
|
| - super.setUp();
|
| -
|
| + @Before
|
| + public void setUp() throws Exception {
|
| + mActivityTestRule.startMainActivityOnBlankPage();
|
| ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| @Override
|
| public void run() {
|
| @@ -80,39 +96,35 @@ public class RecentTabsTest extends ChromeTabbedActivityTestBase {
|
|
|
| initializeBridgeForProfile(false);
|
|
|
| - mTestServer = EmbeddedTestServer.createAndStartServer(getInstrumentation().getContext());
|
| + mTestServer = EmbeddedTestServer.createAndStartServer(
|
| + InstrumentationRegistry.getInstrumentation().getContext());
|
| mTestPage = mTestServer.getURL(TEST_PAGE);
|
| }
|
|
|
| - @Override
|
| - protected void tearDown() throws Exception {
|
| + @After
|
| + public void tearDown() throws Exception {
|
| mTestServer.stopAndDestroyServer();
|
| - super.tearDown();
|
| - }
|
| -
|
| - @Override
|
| - public void startMainActivity() throws InterruptedException {
|
| - startMainActivityOnBlankPage();
|
| }
|
|
|
| + @Test
|
| @CommandLineFlags.Add("short-offline-page-snapshot-delay-for-test")
|
| @MediumTest
|
| public void testLastNPageSavedWhenTabSwitched() throws Exception {
|
| // The tab of interest.
|
| - Tab tab = loadUrlInNewTab(mTestPage);
|
| + Tab tab = mActivityTestRule.loadUrlInNewTab(mTestPage);
|
|
|
| final ClientId firstTabClientId =
|
| new ClientId(OfflinePageBridge.LAST_N_NAMESPACE, Integer.toString(tab.getId()));
|
|
|
| // The tab should be foreground and so no snapshot should exist.
|
| - assertNull(getPageByClientId(firstTabClientId));
|
| + Assert.assertNull(getPageByClientId(firstTabClientId));
|
|
|
| // Note, that switching to a new tab must occur after the SnapshotController believes the
|
| // page quality is good enough. With the debug flag, the delay after DomContentLoaded is 0
|
| // so we can definitely snapshot after onload (which is what |loadUrlInNewTab| waits for).
|
|
|
| // Switch to a new tab to cause the WebContents hidden event.
|
| - loadUrlInNewTab("about:blank");
|
| + mActivityTestRule.loadUrlInNewTab("about:blank");
|
|
|
| waitForPageWithClientId(firstTabClientId);
|
| }
|
| @@ -123,23 +135,24 @@ public class RecentTabsTest extends ChromeTabbedActivityTestBase {
|
| * local testing and I expect it to be "safe" but it flakiness is detected it might have to be
|
| * further increased.
|
| */
|
| + @Test
|
| @CommandLineFlags.Add("short-offline-page-snapshot-delay-for-test")
|
| @MediumTest
|
| public void testLastNClosingTabIsNotSaved() throws Exception {
|
| // Create the tab of interest.
|
| - final Tab tab = loadUrlInNewTab(mTestPage);
|
| + final Tab tab = mActivityTestRule.loadUrlInNewTab(mTestPage);
|
| final ClientId firstTabClientId =
|
| new ClientId(OfflinePageBridge.LAST_N_NAMESPACE, Integer.toString(tab.getId()));
|
|
|
| // The tab should be foreground and so no snapshot should exist.
|
| TabModelSelector tabModelSelector = tab.getTabModelSelector();
|
| - assertEquals(tabModelSelector.getCurrentTab(), tab);
|
| - assertFalse(tab.isHidden());
|
| - assertNull(getPageByClientId(firstTabClientId));
|
| + Assert.assertEquals(tabModelSelector.getCurrentTab(), tab);
|
| + Assert.assertFalse(tab.isHidden());
|
| + Assert.assertNull(getPageByClientId(firstTabClientId));
|
|
|
| // The tab model is expected to support pending closures.
|
| final TabModel tabModel = tabModelSelector.getModelForTabId(tab.getId());
|
| - assertTrue(tabModel.supportsPendingClosures());
|
| + Assert.assertTrue(tabModel.supportsPendingClosures());
|
|
|
| // Requests closing of the tab allowing for closure undo and checks it's actually closing.
|
| boolean closeTabReturnValue = ThreadUtils.runOnUiThreadBlocking(new Callable<Boolean>() {
|
| @@ -148,13 +161,13 @@ public class RecentTabsTest extends ChromeTabbedActivityTestBase {
|
| return tabModel.closeTab(tab, false, false, true);
|
| }
|
| });
|
| - assertTrue(closeTabReturnValue);
|
| - assertTrue(tab.isHidden());
|
| - assertTrue(tab.isClosing());
|
| + Assert.assertTrue(closeTabReturnValue);
|
| + Assert.assertTrue(tab.isHidden());
|
| + Assert.assertTrue(tab.isClosing());
|
|
|
| // Wait a bit and checks that no snapshot was created.
|
| Thread.sleep(100); // Note: Flakiness potential here.
|
| - assertNull(getPageByClientId(firstTabClientId));
|
| + Assert.assertNull(getPageByClientId(firstTabClientId));
|
|
|
| // Undo the closure and make sure the tab is again the current one on foreground.
|
| ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| @@ -165,14 +178,14 @@ public class RecentTabsTest extends ChromeTabbedActivityTestBase {
|
| TabModelUtils.setIndex(tabModel, tabIndex);
|
| }
|
| });
|
| - assertFalse(tab.isHidden());
|
| - assertFalse(tab.isClosing());
|
| - assertEquals(tabModelSelector.getCurrentTab(), tab);
|
| + Assert.assertFalse(tab.isHidden());
|
| + Assert.assertFalse(tab.isClosing());
|
| + Assert.assertEquals(tabModelSelector.getCurrentTab(), tab);
|
|
|
| // Finally switch to a new tab and check that a snapshot is created.
|
| - Tab newTab = loadUrlInNewTab("about:blank");
|
| - assertEquals(tabModelSelector.getCurrentTab(), newTab);
|
| - assertTrue(tab.isHidden());
|
| + Tab newTab = mActivityTestRule.loadUrlInNewTab("about:blank");
|
| + Assert.assertEquals(tabModelSelector.getCurrentTab(), newTab);
|
| + Assert.assertTrue(tab.isHidden());
|
| waitForPageWithClientId(firstTabClientId);
|
| }
|
|
|
| @@ -194,7 +207,7 @@ public class RecentTabsTest extends ChromeTabbedActivityTestBase {
|
| });
|
| }
|
| });
|
| - assertTrue(semaphore.tryAcquire(TIMEOUT_MS, TimeUnit.MILLISECONDS));
|
| + Assert.assertTrue(semaphore.tryAcquire(TIMEOUT_MS, TimeUnit.MILLISECONDS));
|
| }
|
|
|
| private OfflinePageItem getPageByClientId(ClientId clientId) throws InterruptedException {
|
| @@ -218,7 +231,7 @@ public class RecentTabsTest extends ChromeTabbedActivityTestBase {
|
| });
|
| }
|
| });
|
| - assertTrue(semaphore.tryAcquire(TIMEOUT_MS, TimeUnit.MILLISECONDS));
|
| + Assert.assertTrue(semaphore.tryAcquire(TIMEOUT_MS, TimeUnit.MILLISECONDS));
|
| return result[0];
|
| }
|
| }
|
|
|