Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4555)

Unified Diff: chrome/android/javatests/src/org/chromium/chrome/browser/ntp/cards/NewTabPageRecyclerViewTest.java

Issue 2570913003: [Android NTP] Move dismissing items into the TreeNode interface. (Closed)
Patch Set: comments Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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)

Powered by Google App Engine
This is Rietveld 408576698