| Index: chrome/android/javatests/src/org/chromium/chrome/browser/ntp/cards/NewTabPageRecyclerViewTest.java
|
| diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/cards/NewTabPageRecyclerViewTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/cards/NewTabPageRecyclerViewTest.java
|
| index 1692f5d92918d47b252306565fe2f21f9194d060..bcdc1bcb6274bd332c164129a864b641c8879a32 100644
|
| --- a/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/cards/NewTabPageRecyclerViewTest.java
|
| +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/cards/NewTabPageRecyclerViewTest.java
|
| @@ -5,11 +5,19 @@
|
| package org.chromium.chrome.browser.ntp.cards;
|
|
|
| import android.content.res.Resources;
|
| +import android.support.test.InstrumentationRegistry;
|
| import android.support.test.filters.MediumTest;
|
| import android.support.v7.widget.RecyclerView;
|
| import android.support.v7.widget.RecyclerView.ViewHolder;
|
| 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.ThreadUtils;
|
| import org.chromium.base.test.util.CommandLineFlags;
|
| import org.chromium.base.test.util.Feature;
|
| @@ -17,6 +25,7 @@ import org.chromium.base.test.util.Restriction;
|
| import org.chromium.base.test.util.RetryOnFailure;
|
| import org.chromium.chrome.R;
|
| import org.chromium.chrome.browser.ChromeFeatureList;
|
| +import org.chromium.chrome.browser.ChromeSwitches;
|
| import org.chromium.chrome.browser.UrlConstants;
|
| import org.chromium.chrome.browser.ntp.ContextMenuManager;
|
| import org.chromium.chrome.browser.ntp.NewTabPage;
|
| @@ -31,13 +40,16 @@ import org.chromium.chrome.browser.suggestions.FakeMostVisitedSites;
|
| import org.chromium.chrome.browser.suggestions.TileGroupDelegateImpl;
|
| import org.chromium.chrome.browser.suggestions.TileSource;
|
| 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.ChromeRestriction;
|
| import org.chromium.chrome.test.util.ChromeTabUtils;
|
| import org.chromium.chrome.test.util.NewTabPageTestUtils;
|
| import org.chromium.chrome.test.util.browser.RecyclerViewTestUtils;
|
| import org.chromium.chrome.test.util.browser.suggestions.FakeSuggestionsSource;
|
| import org.chromium.content.browser.test.util.TestTouchUtils;
|
| +import org.chromium.content.browser.test.util.TouchCommon;
|
| import org.chromium.net.test.EmbeddedTestServer;
|
|
|
| import java.util.ArrayList;
|
| @@ -48,8 +60,16 @@ import java.util.concurrent.TimeoutException;
|
| /**
|
| * Instrumentation tests for {@link NewTabPageRecyclerView}.
|
| */
|
| +@RunWith(ChromeJUnit4ClassRunner.class)
|
| +@CommandLineFlags.Add({
|
| + ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE,
|
| + ChromeActivityTestRule.DISABLE_NETWORK_PREDICTION_FLAG,
|
| +})
|
| @RetryOnFailure
|
| -public class NewTabPageRecyclerViewTest extends ChromeTabbedActivityTestBase {
|
| +public class NewTabPageRecyclerViewTest {
|
| + @Rule
|
| + public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule();
|
| +
|
| private static final String TEST_PAGE = "/chrome/test/data/android/navigate/simple.html";
|
| private static final String[] FAKE_MOST_VISITED_TITLES = new String[] {"Simple"};
|
| private static final String[] FAKE_MOST_VISITED_WHITELIST_ICON_PATHS = new String[] {""};
|
| @@ -71,9 +91,10 @@ public class NewTabPageRecyclerViewTest extends ChromeTabbedActivityTestBase {
|
| private EmbeddedTestServer mTestServer;
|
| private FakeSuggestionsSource mSource;
|
|
|
| - @Override
|
| - protected void setUp() throws Exception {
|
| - mTestServer = EmbeddedTestServer.createAndStartServer(getInstrumentation().getContext());
|
| + @Before
|
| + public void setUp() throws Exception {
|
| + mTestServer = EmbeddedTestServer.createAndStartServer(
|
| + InstrumentationRegistry.getInstrumentation().getContext());
|
| mSiteSuggestionUrls = new String[] {mTestServer.getURL(TEST_PAGE)};
|
|
|
| mMostVisitedSites = new FakeMostVisitedSites();
|
| @@ -90,28 +111,23 @@ public class NewTabPageRecyclerViewTest extends ChromeTabbedActivityTestBase {
|
| mSource.setStatusForCategory(TEST_CATEGORY, CategoryStatus.INITIALIZING);
|
| NewTabPage.setSuggestionsSourceForTests(mSource);
|
|
|
| - super.setUp();
|
| + mActivityTestRule.startMainActivityWithURL(UrlConstants.NTP_URL);
|
| + mTab = mActivityTestRule.getActivity().getActivityTab();
|
| + NewTabPageTestUtils.waitForNtpLoaded(mTab);
|
| +
|
| + Assert.assertTrue(mTab.getNativePage() instanceof NewTabPage);
|
| + mNtp = (NewTabPage) mTab.getNativePage();
|
| }
|
|
|
| - @Override
|
| - protected void tearDown() throws Exception {
|
| + @After
|
| + public void tearDown() throws Exception {
|
| TileGroupDelegateImpl.setMostVisitedSitesForTests(null);
|
| NewTabPage.setSuggestionsSourceForTests(null);
|
| mTestServer.stopAndDestroyServer();
|
|
|
| - super.tearDown();
|
| - }
|
| -
|
| - @Override
|
| - public void startMainActivity() throws InterruptedException {
|
| - startMainActivityWithURL(UrlConstants.NTP_URL);
|
| - mTab = getActivity().getActivityTab();
|
| - NewTabPageTestUtils.waitForNtpLoaded(mTab);
|
| -
|
| - assertTrue(mTab.getNativePage() instanceof NewTabPage);
|
| - mNtp = (NewTabPage) mTab.getNativePage();
|
| }
|
|
|
| + @Test
|
| @MediumTest
|
| @Feature({"NewTabPage"})
|
| public void testClickSuggestion() throws InterruptedException {
|
| @@ -125,21 +141,22 @@ public class NewTabPageRecyclerViewTest extends ChromeTabbedActivityTestBase {
|
| ChromeTabUtils.waitForTabPageLoaded(mTab, new Runnable() {
|
| @Override
|
| public void run() {
|
| - singleClickView(suggestionView);
|
| + TouchCommon.singleClickView(suggestionView);
|
| }
|
| });
|
| - assertEquals(suggestion.mUrl, mTab.getUrl());
|
| + Assert.assertEquals(suggestion.mUrl, mTab.getUrl());
|
| }
|
|
|
| + @Test
|
| @MediumTest
|
| @Feature({"NewTabPage"})
|
| public void testAllDismissed() throws InterruptedException, TimeoutException {
|
| setSuggestionsAndWaitForUpdate(3);
|
| - assertEquals(3, mSource.getSuggestionsForCategory(TEST_CATEGORY).size());
|
| - assertEquals(RecyclerView.NO_POSITION,
|
| + Assert.assertEquals(3, mSource.getSuggestionsForCategory(TEST_CATEGORY).size());
|
| + Assert.assertEquals(RecyclerView.NO_POSITION,
|
| getAdapter().getFirstPositionForType(ItemViewType.ALL_DISMISSED));
|
| - assertEquals(1, mSource.getCategories().length);
|
| - assertEquals(TEST_CATEGORY, mSource.getCategories()[0]);
|
| + Assert.assertEquals(1, mSource.getCategories().length);
|
| + Assert.assertEquals(TEST_CATEGORY, mSource.getCategories()[0]);
|
|
|
| // Dismiss the sign in promo.
|
| int signinPromoPosition = getAdapter().getFirstPositionForType(ItemViewType.PROMO);
|
| @@ -151,24 +168,25 @@ public class NewTabPageRecyclerViewTest extends ChromeTabbedActivityTestBase {
|
| if (cardPosition == RecyclerView.NO_POSITION) break;
|
| dismissItemAtPosition(cardPosition);
|
| }
|
| - assertEquals(0, mSource.getCategories().length);
|
| + Assert.assertEquals(0, mSource.getCategories().length);
|
|
|
| // Click the refresh button on the all dismissed item.
|
| int allDismissedPosition = getAdapter().getFirstPositionForType(ItemViewType.ALL_DISMISSED);
|
| - assertTrue(allDismissedPosition != RecyclerView.NO_POSITION);
|
| + Assert.assertTrue(allDismissedPosition != RecyclerView.NO_POSITION);
|
| View allDismissedView = getViewHolderAtPosition(allDismissedPosition).itemView;
|
| - singleClickView(allDismissedView.findViewById(R.id.action_button));
|
| + TouchCommon.singleClickView(allDismissedView.findViewById(R.id.action_button));
|
| RecyclerViewTestUtils.waitForViewToDetach(getRecyclerView(), allDismissedView);
|
| - assertEquals(1, mSource.getCategories().length);
|
| - assertEquals(TEST_CATEGORY, mSource.getCategories()[0]);
|
| + Assert.assertEquals(1, mSource.getCategories().length);
|
| + Assert.assertEquals(TEST_CATEGORY, mSource.getCategories()[0]);
|
| }
|
|
|
| + @Test
|
| @MediumTest
|
| @Feature({"NewTabPage"})
|
| public void testDismissArticleWithContextMenu() throws InterruptedException, TimeoutException {
|
| setSuggestionsAndWaitForUpdate(10);
|
| List<SnippetArticle> suggestions = mSource.getSuggestionsForCategory(TEST_CATEGORY);
|
| - assertEquals(10, suggestions.size());
|
| + Assert.assertEquals(10, suggestions.size());
|
|
|
| // Scroll a suggestion into view.
|
| int suggestionPosition = getSuggestionPosition(suggestions.get(suggestions.size() - 1));
|
| @@ -179,9 +197,10 @@ public class NewTabPageRecyclerViewTest extends ChromeTabbedActivityTestBase {
|
| RecyclerViewTestUtils.waitForViewToDetach(getRecyclerView(), suggestionView);
|
|
|
| suggestions = mSource.getSuggestionsForCategory(TEST_CATEGORY);
|
| - assertEquals(9, suggestions.size());
|
| + Assert.assertEquals(9, suggestions.size());
|
| }
|
|
|
| + @Test
|
| @MediumTest
|
| @Feature({"NewTabPage"})
|
| public void testDismissStatusCardWithContextMenu()
|
| @@ -191,7 +210,7 @@ public class NewTabPageRecyclerViewTest extends ChromeTabbedActivityTestBase {
|
|
|
| // Scroll the status card into view.
|
| int cardPosition = getAdapter().getFirstCardPosition();
|
| - assertEquals(ItemViewType.STATUS, getAdapter().getItemViewType(cardPosition));
|
| + Assert.assertEquals(ItemViewType.STATUS, getAdapter().getItemViewType(cardPosition));
|
|
|
| View statusCardView = getViewHolderAtPosition(cardPosition).itemView;
|
|
|
| @@ -202,6 +221,7 @@ public class NewTabPageRecyclerViewTest extends ChromeTabbedActivityTestBase {
|
| assertArrayEquals(new int[0], mSource.getCategories());
|
| }
|
|
|
| + @Test
|
| @MediumTest
|
| @Feature({"NewTabPage"})
|
| public void testDismissActionItemWithContextMenu()
|
| @@ -211,7 +231,7 @@ public class NewTabPageRecyclerViewTest extends ChromeTabbedActivityTestBase {
|
|
|
| // Scroll the action item into view.
|
| int actionItemPosition = getAdapter().getFirstCardPosition() + 1;
|
| - assertEquals(ItemViewType.ACTION, getAdapter().getItemViewType(actionItemPosition));
|
| + Assert.assertEquals(ItemViewType.ACTION, getAdapter().getItemViewType(actionItemPosition));
|
| View actionItemView = getViewHolderAtPosition(actionItemPosition).itemView;
|
|
|
| // Dismiss the action item using the context menu.
|
| @@ -221,6 +241,7 @@ public class NewTabPageRecyclerViewTest extends ChromeTabbedActivityTestBase {
|
| assertArrayEquals(new int[0], mSource.getCategories());
|
| }
|
|
|
| + @Test
|
| @MediumTest
|
| @Feature({"NewTabPage"})
|
| @Restriction({ChromeRestriction.RESTRICTION_TYPE_PHONE})
|
| @@ -228,7 +249,8 @@ public class NewTabPageRecyclerViewTest extends ChromeTabbedActivityTestBase {
|
| public void testSnapScroll_noCondensedLayout() {
|
| setSuggestionsAndWaitForUpdate(0);
|
|
|
| - Resources res = getInstrumentation().getTargetContext().getResources();
|
| + Resources res =
|
| + InstrumentationRegistry.getInstrumentation().getTargetContext().getResources();
|
| int toolbarHeight = res.getDimensionPixelSize(R.dimen.toolbar_height_no_shadow)
|
| + res.getDimensionPixelSize(R.dimen.toolbar_progress_bar_height);
|
| View searchBox = getNtpView().findViewById(R.id.search_box);
|
| @@ -238,23 +260,25 @@ public class NewTabPageRecyclerViewTest extends ChromeTabbedActivityTestBase {
|
|
|
| // Two different snapping regions with the default behavior: snapping back up to the
|
| // watershed point in the middle, snapping forward after that.
|
| - assertEquals(0, getSnapPosition(0));
|
| - assertEquals(0, getSnapPosition(toolbarHeight / 2 - 1));
|
| - assertEquals(toolbarHeight, getSnapPosition(toolbarHeight / 2));
|
| - assertEquals(toolbarHeight, getSnapPosition(toolbarHeight));
|
| - assertEquals(toolbarHeight + 1, getSnapPosition(toolbarHeight + 1));
|
| + Assert.assertEquals(0, getSnapPosition(0));
|
| + Assert.assertEquals(0, getSnapPosition(toolbarHeight / 2 - 1));
|
| + Assert.assertEquals(toolbarHeight, getSnapPosition(toolbarHeight / 2));
|
| + Assert.assertEquals(toolbarHeight, getSnapPosition(toolbarHeight));
|
| + Assert.assertEquals(toolbarHeight + 1, getSnapPosition(toolbarHeight + 1));
|
|
|
| - assertEquals(searchBoxTop - searchBoxTransitionLength - 1,
|
| + Assert.assertEquals(searchBoxTop - searchBoxTransitionLength - 1,
|
| getSnapPosition(searchBoxTop - searchBoxTransitionLength - 1));
|
| - assertEquals(searchBoxTop - searchBoxTransitionLength,
|
| + Assert.assertEquals(searchBoxTop - searchBoxTransitionLength,
|
| getSnapPosition(searchBoxTop - searchBoxTransitionLength));
|
| - assertEquals(searchBoxTop - searchBoxTransitionLength,
|
| + Assert.assertEquals(searchBoxTop - searchBoxTransitionLength,
|
| getSnapPosition(searchBoxTop - searchBoxTransitionLength / 2 - 1));
|
| - assertEquals(searchBoxTop, getSnapPosition(searchBoxTop - searchBoxTransitionLength / 2));
|
| - assertEquals(searchBoxTop, getSnapPosition(searchBoxTop));
|
| - assertEquals(searchBoxTop + 1, getSnapPosition(searchBoxTop + 1));
|
| + Assert.assertEquals(
|
| + searchBoxTop, getSnapPosition(searchBoxTop - searchBoxTransitionLength / 2));
|
| + Assert.assertEquals(searchBoxTop, getSnapPosition(searchBoxTop));
|
| + Assert.assertEquals(searchBoxTop + 1, getSnapPosition(searchBoxTop + 1));
|
| }
|
|
|
| + @Test
|
| @MediumTest
|
| @Feature({"NewTabPage"})
|
| @Restriction({ChromeRestriction.RESTRICTION_TYPE_PHONE})
|
| @@ -262,7 +286,8 @@ public class NewTabPageRecyclerViewTest extends ChromeTabbedActivityTestBase {
|
| public void testSnapScroll_condensedLayout() {
|
| setSuggestionsAndWaitForUpdate(0);
|
|
|
| - Resources res = getInstrumentation().getTargetContext().getResources();
|
| + Resources res =
|
| + InstrumentationRegistry.getInstrumentation().getTargetContext().getResources();
|
| int toolbarHeight = res.getDimensionPixelSize(R.dimen.toolbar_height_no_shadow)
|
| + res.getDimensionPixelSize(R.dimen.toolbar_progress_bar_height);
|
| View searchBox = getNtpView().findViewById(R.id.search_box);
|
| @@ -272,22 +297,25 @@ public class NewTabPageRecyclerViewTest extends ChromeTabbedActivityTestBase {
|
|
|
| // With the condensed layout, the snapping regions overlap, so the effect is that of a
|
| // single snapping region.
|
| - assertEquals(0, getSnapPosition(0));
|
| - assertEquals(0, getSnapPosition(toolbarHeight / 2 - 1));
|
| - assertEquals(searchBoxTop, getSnapPosition(toolbarHeight / 2));
|
| - assertEquals(searchBoxTop, getSnapPosition(searchBoxTop - searchBoxTransitionLength));
|
| - assertEquals(searchBoxTop, getSnapPosition(toolbarHeight));
|
| - assertEquals(searchBoxTop, getSnapPosition(searchBoxTop));
|
| - assertEquals(searchBoxTop + 1, getSnapPosition(searchBoxTop + 1));
|
| + Assert.assertEquals(0, getSnapPosition(0));
|
| + Assert.assertEquals(0, getSnapPosition(toolbarHeight / 2 - 1));
|
| + Assert.assertEquals(searchBoxTop, getSnapPosition(toolbarHeight / 2));
|
| + Assert.assertEquals(
|
| + searchBoxTop, getSnapPosition(searchBoxTop - searchBoxTransitionLength));
|
| + Assert.assertEquals(searchBoxTop, getSnapPosition(toolbarHeight));
|
| + Assert.assertEquals(searchBoxTop, getSnapPosition(searchBoxTop));
|
| + Assert.assertEquals(searchBoxTop + 1, getSnapPosition(searchBoxTop + 1));
|
| }
|
|
|
| + @Test
|
| @MediumTest
|
| @Feature({"NewTabPage"})
|
| @Restriction({ChromeRestriction.RESTRICTION_TYPE_TABLET})
|
| public void testSnapScroll_tablet() {
|
| setSuggestionsAndWaitForUpdate(0);
|
|
|
| - Resources res = getInstrumentation().getTargetContext().getResources();
|
| + Resources res =
|
| + InstrumentationRegistry.getInstrumentation().getTargetContext().getResources();
|
| int toolbarHeight = res.getDimensionPixelSize(R.dimen.toolbar_height_no_shadow)
|
| + res.getDimensionPixelSize(R.dimen.toolbar_progress_bar_height);
|
| View searchBox = getNtpView().findViewById(R.id.search_box);
|
| @@ -298,22 +326,22 @@ public class NewTabPageRecyclerViewTest extends ChromeTabbedActivityTestBase {
|
| // No snapping on tablets.
|
| // Note: This ignores snapping for the peeking cards, which is currently disabled
|
| // by default.
|
| - assertEquals(0, getSnapPosition(0));
|
| - assertEquals(toolbarHeight / 2 - 1, getSnapPosition(toolbarHeight / 2 - 1));
|
| - assertEquals(toolbarHeight / 2, getSnapPosition(toolbarHeight / 2));
|
| - assertEquals(toolbarHeight, getSnapPosition(toolbarHeight));
|
| - assertEquals(toolbarHeight + 1, getSnapPosition(toolbarHeight + 1));
|
| + Assert.assertEquals(0, getSnapPosition(0));
|
| + Assert.assertEquals(toolbarHeight / 2 - 1, getSnapPosition(toolbarHeight / 2 - 1));
|
| + Assert.assertEquals(toolbarHeight / 2, getSnapPosition(toolbarHeight / 2));
|
| + Assert.assertEquals(toolbarHeight, getSnapPosition(toolbarHeight));
|
| + Assert.assertEquals(toolbarHeight + 1, getSnapPosition(toolbarHeight + 1));
|
|
|
| - assertEquals(searchBoxTop - searchBoxTransitionLength - 1,
|
| + Assert.assertEquals(searchBoxTop - searchBoxTransitionLength - 1,
|
| getSnapPosition(searchBoxTop - searchBoxTransitionLength - 1));
|
| - assertEquals(searchBoxTop - searchBoxTransitionLength,
|
| + Assert.assertEquals(searchBoxTop - searchBoxTransitionLength,
|
| getSnapPosition(searchBoxTop - searchBoxTransitionLength));
|
| - assertEquals(searchBoxTop - searchBoxTransitionLength / 2 - 1,
|
| + Assert.assertEquals(searchBoxTop - searchBoxTransitionLength / 2 - 1,
|
| getSnapPosition(searchBoxTop - searchBoxTransitionLength / 2 - 1));
|
| - assertEquals(searchBoxTop - searchBoxTransitionLength / 2,
|
| + Assert.assertEquals(searchBoxTop - searchBoxTransitionLength / 2,
|
| getSnapPosition(searchBoxTop - searchBoxTransitionLength / 2));
|
| - assertEquals(searchBoxTop, getSnapPosition(searchBoxTop));
|
| - assertEquals(searchBoxTop + 1, getSnapPosition(searchBoxTop + 1));
|
| + Assert.assertEquals(searchBoxTop, getSnapPosition(searchBoxTop));
|
| + Assert.assertEquals(searchBoxTop + 1, getSnapPosition(searchBoxTop + 1));
|
| }
|
|
|
| private int getSnapPosition(int scrollPosition) {
|
| @@ -355,8 +383,8 @@ public class NewTabPageRecyclerViewTest extends ChromeTabbedActivityTestBase {
|
| ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| @Override
|
| public void run() {
|
| - recyclerView.getLinearLayoutManager().scrollToPositionWithOffset(
|
| - position, getActivity().getResources().getDimensionPixelSize(
|
| + recyclerView.getLinearLayoutManager().scrollToPositionWithOffset(position,
|
| + mActivityTestRule.getActivity().getResources().getDimensionPixelSize(
|
| R.dimen.tab_strip_height));
|
| }
|
| });
|
| @@ -406,13 +434,13 @@ public class NewTabPageRecyclerViewTest extends ChromeTabbedActivityTestBase {
|
| }
|
|
|
| private void invokeContextMenu(View view, int contextMenuItemId) {
|
| - TestTouchUtils.longClickView(getInstrumentation(), view);
|
| - assertTrue(
|
| - getInstrumentation().invokeContextMenuAction(getActivity(), contextMenuItemId, 0));
|
| + TestTouchUtils.longClickView(InstrumentationRegistry.getInstrumentation(), view);
|
| + Assert.assertTrue(InstrumentationRegistry.getInstrumentation().invokeContextMenuAction(
|
| + mActivityTestRule.getActivity(), contextMenuItemId, 0));
|
| }
|
|
|
|
|
| private static void assertArrayEquals(int[] expected, int[] actual) {
|
| - assertEquals(Arrays.toString(expected), Arrays.toString(actual));
|
| + Assert.assertEquals(Arrays.toString(expected), Arrays.toString(actual));
|
| }
|
| }
|
|
|