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

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

Issue 2759823002: 🏠 Separate bottom sheet current from target state (Closed)
Patch Set: fix tests Created 3 years, 9 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
« no previous file with comments | « chrome/android/java/src/org/chromium/chrome/browser/widget/bottomsheet/BottomSheet.java ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/android/javatests/src/org/chromium/chrome/browser/ntp/ChromeHomeNewTabPageTest.java
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/ChromeHomeNewTabPageTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/ChromeHomeNewTabPageTest.java
index 03e56a042a8dbf3646ea0be31842498b2e77fdfb..fd42baed887b1cba60af5fce0946a8734e1d6bf0 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/ChromeHomeNewTabPageTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/ChromeHomeNewTabPageTest.java
@@ -7,36 +7,60 @@ package org.chromium.chrome.browser.ntp;
import android.support.test.filters.SmallTest;
import org.chromium.base.ThreadUtils;
+import org.chromium.base.test.util.CallbackHelper;
import org.chromium.chrome.browser.UrlConstants;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tabmodel.TabModel.TabSelectionType;
import org.chromium.chrome.browser.widget.FadingBackgroundView;
import org.chromium.chrome.browser.widget.bottomsheet.BottomSheet;
+import org.chromium.chrome.browser.widget.bottomsheet.EmptyBottomSheetObserver;
import org.chromium.chrome.test.BottomSheetTestCaseBase;
import org.chromium.chrome.test.util.ChromeTabUtils;
import org.chromium.chrome.test.util.NewTabPageTestUtils;
+import java.util.concurrent.TimeoutException;
+
/**
* Tests for the {@link ChromeHomeNewTabPage}.
*/
public class ChromeHomeNewTabPageTest extends BottomSheetTestCaseBase {
private FadingBackgroundView mFadingBackgroundView;
+ private StateChangeBottomSheetObserver mObserver;
+ private int mStateChangeCurrentCalls;
+
+ /** On observer used to record state change events on the bottom sheet. */
+ private static class StateChangeBottomSheetObserver extends EmptyBottomSheetObserver {
+ /** A {@link CallbackHelper} that waits for the bottom sheet state to change. */
+ private final CallbackHelper mStateChangedCallbackHelper = new CallbackHelper();
+
+ @Override
+ public void onSheetStateChanged(int state) {
+ mStateChangedCallbackHelper.notifyCalled();
+ }
+ }
@Override
public void setUp() throws Exception {
super.setUp();
+ mObserver = new StateChangeBottomSheetObserver();
+ mBottomSheet.addObserver(mObserver);
+
mFadingBackgroundView = getActivity().getFadingBackgroundView();
+
+ // Once setup is done, get the initial call count for onStateChanged().
+ mStateChangeCurrentCalls = mObserver.mStateChangedCallbackHelper.getCallCount();
}
@SmallTest
- public void testCloseNTP_OneTab() throws IllegalArgumentException, InterruptedException {
+ public void testCloseNTP_OneTab()
+ throws IllegalArgumentException, InterruptedException, TimeoutException {
// Load the NTP.
Tab tab = getActivity().getActivityTab();
loadUrl(UrlConstants.NTP_URL);
NewTabPageTestUtils.waitForNtpLoaded(tab);
- validateState(true);
+ validateState(true, true);
// Close the new tab.
closeNewTab();
@@ -46,7 +70,8 @@ public class ChromeHomeNewTabPageTest extends BottomSheetTestCaseBase {
}
@SmallTest
- public void testCloseNTP_TwoTabs() throws IllegalArgumentException, InterruptedException {
+ public void testCloseNTP_TwoTabs()
+ throws IllegalArgumentException, InterruptedException, TimeoutException {
// Create a new tab.
createNewTab();
@@ -59,7 +84,7 @@ public class ChromeHomeNewTabPageTest extends BottomSheetTestCaseBase {
@SmallTest
public void testCloseNTP_TwoTabs_OverviewMode()
- throws IllegalArgumentException, InterruptedException {
+ throws IllegalArgumentException, InterruptedException, TimeoutException {
// Switch to overview mode.
ThreadUtils.runOnUiThreadBlocking(new Runnable() {
@Override
@@ -79,7 +104,8 @@ public class ChromeHomeNewTabPageTest extends BottomSheetTestCaseBase {
}
@SmallTest
- public void testToggleSelectedTab() throws IllegalArgumentException, InterruptedException {
+ public void testToggleSelectedTab()
+ throws IllegalArgumentException, InterruptedException, TimeoutException {
// Create a new tab.
createNewTab();
@@ -94,7 +120,7 @@ public class ChromeHomeNewTabPageTest extends BottomSheetTestCaseBase {
}
});
- validateState(false);
+ validateState(false, false);
// Select the NTP.
ThreadUtils.runOnUiThreadBlocking(new Runnable() {
@@ -104,16 +130,16 @@ public class ChromeHomeNewTabPageTest extends BottomSheetTestCaseBase {
}
});
- validateState(true);
+ validateState(true, true);
}
- private void createNewTab() throws InterruptedException {
+ private void createNewTab() throws InterruptedException, TimeoutException {
ChromeTabUtils.fullyLoadUrlInNewTab(
getInstrumentation(), getActivity(), UrlConstants.NTP_URL, false);
- validateState(true);
+ validateState(true, true);
}
- private void closeNewTab() {
+ private void closeNewTab() throws InterruptedException, TimeoutException {
Tab tab = getActivity().getActivityTab();
final ChromeHomeNewTabPage mNewTabPage = (ChromeHomeNewTabPage) tab.getNativePage();
ThreadUtils.runOnUiThreadBlocking(new Runnable() {
@@ -123,10 +149,16 @@ public class ChromeHomeNewTabPageTest extends BottomSheetTestCaseBase {
}
});
- validateState(false);
+ validateState(false, true);
}
- private void validateState(boolean newTabPageSelected) {
+ private void validateState(boolean newTabPageSelected, boolean animatesToState)
+ throws InterruptedException, TimeoutException {
+ // Wait for two calls if animating; one is to SHEET_STATE_SCROLLING and the other is to the
+ // final state.
+ mObserver.mStateChangedCallbackHelper.waitForCallback(
+ mStateChangeCurrentCalls, animatesToState ? 2 : 1);
+
if (newTabPageSelected) {
assertEquals("Sheet should be at half height", BottomSheet.SHEET_STATE_HALF,
mBottomSheet.getSheetState());
@@ -137,5 +169,8 @@ public class ChromeHomeNewTabPageTest extends BottomSheetTestCaseBase {
mBottomSheet.getSheetState());
assertTrue(mFadingBackgroundView.isEnabled());
}
+
+ // Once the state is validated, update the call count.
+ mStateChangeCurrentCalls = mObserver.mStateChangedCallbackHelper.getCallCount();
}
}
« no previous file with comments | « chrome/android/java/src/org/chromium/chrome/browser/widget/bottomsheet/BottomSheet.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698