| 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 7dac055eef67ac12990ad9a7093ec742a0fca254..7cead421103c0229838f02aa19c1a0c63520c841 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
|
| @@ -118,8 +118,7 @@ public class NewTabPageRecyclerViewTest extends ChromeTabbedActivityTestBase {
|
| // Scroll the last suggestion into view and click it.
|
| SnippetArticle suggestion = suggestions.get(suggestions.size() - 1);
|
| int suggestionPosition = getSuggestionPosition(suggestion);
|
| - scrollToPosition(suggestionPosition);
|
| - final View suggestionView = waitForView(suggestionPosition);
|
| + final View suggestionView = getViewHolderAtPosition(suggestionPosition).itemView;
|
| ChromeTabUtils.waitForTabPageLoaded(mTab, new Runnable() {
|
| @Override
|
| public void run() {
|
| @@ -142,27 +141,20 @@ public class NewTabPageRecyclerViewTest extends ChromeTabbedActivityTestBase {
|
|
|
| // Dismiss the sign in promo.
|
| int signinPromoPosition = getAdapter().getFirstPositionForType(ItemViewType.PROMO);
|
| - scrollToPosition(signinPromoPosition);
|
| - View signinPromoView = waitForView(signinPromoPosition);
|
| - getAdapter().dismissItem(signinPromoPosition);
|
| - waitForViewToDetach(signinPromoView);
|
| + dismissItemAtPosition(signinPromoPosition);
|
|
|
| // Dismiss all the cards, including status cards, which dismisses the associated category.
|
| - int cardPosition = getAdapter().getFirstCardPosition();
|
| - while (cardPosition != RecyclerView.NO_POSITION) {
|
| - scrollToPosition(cardPosition);
|
| - View cardView = waitForView(cardPosition);
|
| - getAdapter().dismissItem(cardPosition);
|
| - waitForViewToDetach(cardView);
|
| - cardPosition = getAdapter().getFirstCardPosition();
|
| + while (true) {
|
| + int cardPosition = getAdapter().getFirstCardPosition();
|
| + if (cardPosition == RecyclerView.NO_POSITION) break;
|
| + dismissItemAtPosition(cardPosition);
|
| }
|
| 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);
|
| - scrollToPosition(allDismissedPosition);
|
| - View allDismissedView = waitForView(allDismissedPosition);
|
| + View allDismissedView = getViewHolderAtPosition(allDismissedPosition).itemView;
|
| singleClickView(allDismissedView.findViewById(R.id.action_button));
|
| waitForViewToDetach(allDismissedView);
|
| assertEquals(1, mSource.getCategories().length);
|
| @@ -180,8 +172,7 @@ public class NewTabPageRecyclerViewTest extends ChromeTabbedActivityTestBase {
|
|
|
| // Scroll a suggestion into view.
|
| int suggestionPosition = getSuggestionPosition(suggestions.get(suggestions.size() - 1));
|
| - scrollToPosition(suggestionPosition);
|
| - View suggestionView = waitForView(suggestionPosition);
|
| + View suggestionView = getViewHolderAtPosition(suggestionPosition).itemView;
|
|
|
| // Dismiss the suggestion using the context menu.
|
| invokeContextMenu(suggestionView, ContextMenuManager.ID_REMOVE);
|
| @@ -203,8 +194,7 @@ public class NewTabPageRecyclerViewTest extends ChromeTabbedActivityTestBase {
|
| int cardPosition = getAdapter().getFirstCardPosition();
|
| assertEquals(ItemViewType.STATUS, getAdapter().getItemViewType(cardPosition));
|
|
|
| - scrollToPosition(cardPosition);
|
| - View statusCardView = waitForView(cardPosition);
|
| + View statusCardView = getViewHolderAtPosition(cardPosition).itemView;
|
|
|
| // Dismiss the status card using the context menu.
|
| invokeContextMenu(statusCardView, ContextMenuManager.ID_REMOVE);
|
| @@ -224,8 +214,7 @@ public class NewTabPageRecyclerViewTest extends ChromeTabbedActivityTestBase {
|
| // Scroll the action item into view.
|
| int actionItemPosition = getAdapter().getFirstCardPosition() + 1;
|
| assertEquals(ItemViewType.ACTION, getAdapter().getItemViewType(actionItemPosition));
|
| - scrollToPosition(actionItemPosition);
|
| - View actionItemView = waitForView(actionItemPosition);
|
| + View actionItemView = getViewHolderAtPosition(actionItemPosition).itemView;
|
|
|
| // Dismiss the action item using the context menu.
|
| invokeContextMenu(actionItemView, ContextMenuManager.ID_REMOVE);
|
| @@ -255,7 +244,13 @@ public class NewTabPageRecyclerViewTest extends ChromeTabbedActivityTestBase {
|
| return RecyclerView.NO_POSITION;
|
| }
|
|
|
| - private void scrollToPosition(final int position) {
|
| + /**
|
| + * Scroll the {@link View} at the given adapter position into view and returns
|
| + * its {@link ViewHolder}.
|
| + * @param position the adapter position for which to return the {@link ViewHolder}.
|
| + * @return the ViewHolder for the given {@code position}.
|
| + */
|
| + private ViewHolder getViewHolderAtPosition(final int position) {
|
| final NewTabPageRecyclerView recyclerView = getRecyclerView();
|
|
|
| ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| @@ -263,9 +258,28 @@ public class NewTabPageRecyclerViewTest extends ChromeTabbedActivityTestBase {
|
| public void run() {
|
| recyclerView.getLinearLayoutManager().scrollToPositionWithOffset(
|
| position, getActivity().getResources().getDimensionPixelSize(
|
| - R.dimen.tab_strip_height));
|
| + R.dimen.tab_strip_height));
|
| + }
|
| + });
|
| + return waitForView(position);
|
| + }
|
| +
|
| + /**
|
| + * Dismiss the item at the given {@code position} and wait until it has been removed from the
|
| + * {@link RecyclerView}.
|
| + * @param position the adapter position to remove.
|
| + * @throws InterruptedException
|
| + * @throws TimeoutException
|
| + */
|
| + private void dismissItemAtPosition(int position) throws InterruptedException, TimeoutException {
|
| + final ViewHolder viewHolder = getViewHolderAtPosition(position);
|
| + ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| + @Override
|
| + public void run() {
|
| + getRecyclerView().dismissItemWithAnimation(viewHolder);
|
| }
|
| });
|
| + waitForViewToDetach(viewHolder.itemView);
|
| }
|
|
|
| private void setSuggestionsAndWaitForUpdate(final int suggestionsCount) {
|
| @@ -298,7 +312,7 @@ public class NewTabPageRecyclerViewTest extends ChromeTabbedActivityTestBase {
|
| getInstrumentation().invokeContextMenuAction(getActivity(), contextMenuItemId, 0));
|
| }
|
|
|
| - private View waitForView(final int position) {
|
| + private ViewHolder waitForView(final int position) {
|
| final NewTabPageRecyclerView recyclerView = getRecyclerView();
|
|
|
| CriteriaHelper.pollUiThread(new Criteria() {
|
| @@ -322,7 +336,7 @@ public class NewTabPageRecyclerViewTest extends ChromeTabbedActivityTestBase {
|
|
|
| waitForStableRecyclerView();
|
|
|
| - return recyclerView.findViewHolderForAdapterPosition(position).itemView;
|
| + return recyclerView.findViewHolderForAdapterPosition(position);
|
| }
|
|
|
| private void waitForViewToDetach(final View view)
|
|
|