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

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

Issue 2670863004: 🏠 Add instrumentation test for Suggestions BottomSheet (Closed)
Patch Set: rebase, properly fix test initialisation, address comments Created 3 years, 10 months 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 b50ff293d8b6ffe8a8420126dcb351b1ec2db6e4..3990052ea2be8d724fcf15ba13fbd571654706b8 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
@@ -10,7 +10,6 @@
import android.view.View;
import org.chromium.base.ThreadUtils;
-import org.chromium.base.test.util.CallbackHelper;
import org.chromium.base.test.util.CommandLineFlags;
import org.chromium.base.test.util.Feature;
import org.chromium.base.test.util.RetryOnFailure;
@@ -23,7 +22,6 @@
import org.chromium.chrome.browser.ntp.snippets.CategoryInt;
import org.chromium.chrome.browser.ntp.snippets.CategoryStatus;
import org.chromium.chrome.browser.ntp.snippets.ContentSuggestionsCardLayout;
-import org.chromium.chrome.browser.ntp.snippets.FakeSuggestionsSource;
import org.chromium.chrome.browser.ntp.snippets.KnownCategories;
import org.chromium.chrome.browser.ntp.snippets.SnippetArticle;
import org.chromium.chrome.browser.suggestions.FakeMostVisitedSites;
@@ -32,8 +30,8 @@
import org.chromium.chrome.test.ChromeTabbedActivityTestBase;
import org.chromium.chrome.test.util.ChromeTabUtils;
import org.chromium.chrome.test.util.NewTabPageTestUtils;
-import org.chromium.content.browser.test.util.Criteria;
-import org.chromium.content.browser.test.util.CriteriaHelper;
+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.net.test.EmbeddedTestServer;
@@ -162,7 +160,7 @@ public void testAllDismissed() throws InterruptedException, TimeoutException {
assertTrue(allDismissedPosition != RecyclerView.NO_POSITION);
View allDismissedView = getViewHolderAtPosition(allDismissedPosition).itemView;
singleClickView(allDismissedView.findViewById(R.id.action_button));
- waitForViewToDetach(allDismissedView);
+ RecyclerViewTestUtils.waitForViewToDetach(getRecyclerView(), allDismissedView);
assertEquals(1, mSource.getCategories().length);
assertEquals(TEST_CATEGORY, mSource.getCategories()[0]);
}
@@ -181,7 +179,7 @@ public void testDismissArticleWithContextMenu() throws InterruptedException, Tim
// Dismiss the suggestion using the context menu.
invokeContextMenu(suggestionView, ContextMenuManager.ID_REMOVE);
- waitForViewToDetach(suggestionView);
+ RecyclerViewTestUtils.waitForViewToDetach(getRecyclerView(), suggestionView);
suggestions = mSource.getSuggestionsForCategory(TEST_CATEGORY);
assertEquals(9, suggestions.size());
@@ -203,7 +201,7 @@ public void testDismissStatusCardWithContextMenu()
// Dismiss the status card using the context menu.
invokeContextMenu(statusCardView, ContextMenuManager.ID_REMOVE);
- waitForViewToDetach(statusCardView);
+ RecyclerViewTestUtils.waitForViewToDetach(getRecyclerView(), statusCardView);
assertArrayEquals(new int[0], mSource.getCategories());
}
@@ -223,7 +221,7 @@ public void testDismissActionItemWithContextMenu()
// Dismiss the action item using the context menu.
invokeContextMenu(actionItemView, ContextMenuManager.ID_REMOVE);
- waitForViewToDetach(actionItemView);
+ RecyclerViewTestUtils.waitForViewToDetach(getRecyclerView(), actionItemView);
assertArrayEquals(new int[0], mSource.getCategories());
}
@@ -266,7 +264,7 @@ public void run() {
R.dimen.tab_strip_height));
}
});
- return waitForView(position);
+ return RecyclerViewTestUtils.waitForView(getRecyclerView(), position);
}
/**
@@ -284,7 +282,7 @@ public void run() {
getRecyclerView().dismissItemWithAnimation(viewHolder);
}
});
- waitForViewToDetach(viewHolder.itemView);
+ RecyclerViewTestUtils.waitForViewToDetach(getRecyclerView(), (viewHolder.itemView));
}
private void setSuggestionsAndWaitForUpdate(final int suggestionsCount) {
@@ -297,7 +295,7 @@ public void run() {
source.setSuggestionsForCategory(TEST_CATEGORY, buildSuggestions(suggestionsCount));
}
});
- waitForStableRecyclerView();
+ RecyclerViewTestUtils.waitForStableRecyclerView(getRecyclerView());
}
private List<SnippetArticle> buildSuggestions(int suggestionsCount) {
@@ -316,81 +314,6 @@ private void invokeContextMenu(View view, int contextMenuItemId) {
getInstrumentation().invokeContextMenuAction(getActivity(), contextMenuItemId, 0));
}
- private ViewHolder waitForView(final int position) {
- final NewTabPageRecyclerView recyclerView = getRecyclerView();
-
- CriteriaHelper.pollUiThread(new Criteria() {
- @Override
- public boolean isSatisfied() {
- ViewHolder viewHolder = recyclerView.findViewHolderForAdapterPosition(position);
-
- if (viewHolder == null) {
- updateFailureReason("Cannot find view holder for position " + position + ".");
- return false;
- }
-
- if (viewHolder.itemView.getParent() == null) {
- updateFailureReason("The view is not attached for position " + position + ".");
- return false;
- }
-
- return true;
- }
- });
-
- waitForStableRecyclerView();
-
- return recyclerView.findViewHolderForAdapterPosition(position);
- }
-
- private void waitForViewToDetach(final View view)
- throws InterruptedException, TimeoutException {
- final RecyclerView recyclerView = getRecyclerView();
- final CallbackHelper callback = new CallbackHelper();
-
- recyclerView.addOnChildAttachStateChangeListener(
- new RecyclerView.OnChildAttachStateChangeListener() {
- @Override
- public void onChildViewAttachedToWindow(View view) {}
-
- @Override
- public void onChildViewDetachedFromWindow(View detachedView) {
- if (detachedView == view) {
- recyclerView.removeOnChildAttachStateChangeListener(this);
- callback.notifyCalled();
- }
- }
- });
- callback.waitForCallback("The view did not detach.", 0);
-
- waitForStableRecyclerView();
- }
-
- private void waitForStableRecyclerView() {
- final RecyclerView recyclerView = getRecyclerView();
-
- CriteriaHelper.pollUiThread(new Criteria() {
- @Override
- public boolean isSatisfied() {
- if (recyclerView.isComputingLayout()) {
- updateFailureReason("The recycler view is computing layout.");
- return false;
- }
-
- if (recyclerView.isLayoutFrozen()) {
- updateFailureReason("The recycler view layout is frozen.");
- return false;
- }
-
- if (recyclerView.isAnimating()) {
- updateFailureReason("The recycler view is animating.");
- return false;
- }
-
- return true;
- }
- });
- }
private static void assertArrayEquals(int[] expected, int[] actual) {
assertEquals(Arrays.toString(expected), Arrays.toString(actual));

Powered by Google App Engine
This is Rietveld 408576698