| 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 fd42baed887b1cba60af5fce0946a8734e1d6bf0..05144ff7ccfdc98174521c7bd46ec4fcc5ad5ecb 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
|
| @@ -10,6 +10,7 @@ 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.EmptyTabModelObserver;
|
| import org.chromium.chrome.browser.tabmodel.TabModel.TabSelectionType;
|
| import org.chromium.chrome.browser.widget.FadingBackgroundView;
|
| import org.chromium.chrome.browser.widget.bottomsheet.BottomSheet;
|
| @@ -25,7 +26,8 @@ import java.util.concurrent.TimeoutException;
|
| */
|
| public class ChromeHomeNewTabPageTest extends BottomSheetTestCaseBase {
|
| private FadingBackgroundView mFadingBackgroundView;
|
| - private StateChangeBottomSheetObserver mObserver;
|
| + private StateChangeBottomSheetObserver mBottomSheetObserver;
|
| + private TestTabModelObserver mTabModelObserver;
|
| private int mStateChangeCurrentCalls;
|
|
|
| /** On observer used to record state change events on the bottom sheet. */
|
| @@ -39,17 +41,31 @@ public class ChromeHomeNewTabPageTest extends BottomSheetTestCaseBase {
|
| }
|
| }
|
|
|
| + /** An observer used to detect changes in the tab model. */
|
| + private static class TestTabModelObserver extends EmptyTabModelObserver {
|
| + private final CallbackHelper mDidCloseTabCallbackHelper = new CallbackHelper();
|
| +
|
| + @Override
|
| + public void didCloseTab(int tabId, boolean incognito) {
|
| + mDidCloseTabCallbackHelper.notifyCalled();
|
| + }
|
| + }
|
| +
|
| @Override
|
| public void setUp() throws Exception {
|
| super.setUp();
|
|
|
| - mObserver = new StateChangeBottomSheetObserver();
|
| - mBottomSheet.addObserver(mObserver);
|
| + mBottomSheetObserver = new StateChangeBottomSheetObserver();
|
| + mBottomSheet.addObserver(mBottomSheetObserver);
|
| +
|
| + mTabModelObserver = new TestTabModelObserver();
|
| + getActivity().getTabModelSelector().getModel(false).addObserver(mTabModelObserver);
|
| + getActivity().getTabModelSelector().getModel(true).addObserver(mTabModelObserver);
|
|
|
| mFadingBackgroundView = getActivity().getFadingBackgroundView();
|
|
|
| // Once setup is done, get the initial call count for onStateChanged().
|
| - mStateChangeCurrentCalls = mObserver.mStateChangedCallbackHelper.getCallCount();
|
| + mStateChangeCurrentCalls = mBottomSheetObserver.mStateChangedCallbackHelper.getCallCount();
|
| }
|
|
|
| @SmallTest
|
| @@ -65,7 +81,7 @@ public class ChromeHomeNewTabPageTest extends BottomSheetTestCaseBase {
|
| // Close the new tab.
|
| closeNewTab();
|
| assertEquals(0, getActivity().getTabModelSelector().getTotalTabCount());
|
| - assertFalse("Overview mode should not be showing",
|
| + assertTrue("Overview mode should be showing",
|
| getActivity().getLayoutManager().overviewVisible());
|
| }
|
|
|
| @@ -73,7 +89,7 @@ public class ChromeHomeNewTabPageTest extends BottomSheetTestCaseBase {
|
| public void testCloseNTP_TwoTabs()
|
| throws IllegalArgumentException, InterruptedException, TimeoutException {
|
| // Create a new tab.
|
| - createNewTab();
|
| + createNewTab(false);
|
|
|
| // Close the new tab.
|
| closeNewTab();
|
| @@ -94,7 +110,7 @@ public class ChromeHomeNewTabPageTest extends BottomSheetTestCaseBase {
|
| });
|
|
|
| // Create a new tab.
|
| - createNewTab();
|
| + createNewTab(false);
|
|
|
| // Close the new tab.
|
| closeNewTab();
|
| @@ -104,10 +120,23 @@ public class ChromeHomeNewTabPageTest extends BottomSheetTestCaseBase {
|
| }
|
|
|
| @SmallTest
|
| + public void testCloseNTP_Incognito()
|
| + throws IllegalArgumentException, InterruptedException, TimeoutException {
|
| + // Create new incognito NTP.
|
| + createNewTab(true);
|
| +
|
| + // Close the new tab.
|
| + closeNewTab();
|
| + assertEquals(1, getActivity().getTabModelSelector().getTotalTabCount());
|
| + assertFalse("Overview mode should not be showing",
|
| + getActivity().getLayoutManager().overviewVisible());
|
| + }
|
| +
|
| + @SmallTest
|
| public void testToggleSelectedTab()
|
| throws IllegalArgumentException, InterruptedException, TimeoutException {
|
| // Create a new tab.
|
| - createNewTab();
|
| + createNewTab(false);
|
|
|
| // Select the original tab.
|
| ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| @@ -133,22 +162,27 @@ public class ChromeHomeNewTabPageTest extends BottomSheetTestCaseBase {
|
| validateState(true, true);
|
| }
|
|
|
| - private void createNewTab() throws InterruptedException, TimeoutException {
|
| + private void createNewTab(boolean incognito) throws InterruptedException, TimeoutException {
|
| ChromeTabUtils.fullyLoadUrlInNewTab(
|
| - getInstrumentation(), getActivity(), UrlConstants.NTP_URL, false);
|
| + getInstrumentation(), getActivity(), UrlConstants.NTP_URL, incognito);
|
| validateState(true, true);
|
| }
|
|
|
| private void closeNewTab() throws InterruptedException, TimeoutException {
|
| + int currentCallCount = mTabModelObserver.mDidCloseTabCallbackHelper.getCallCount();
|
| Tab tab = getActivity().getActivityTab();
|
| - final ChromeHomeNewTabPage mNewTabPage = (ChromeHomeNewTabPage) tab.getNativePage();
|
| + final ChromeHomeNewTabPageBase mNewTabPage = (ChromeHomeNewTabPageBase) tab.getNativePage();
|
| +
|
| ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| @Override
|
| public void run() {
|
| mNewTabPage.getCloseButtonForTests().callOnClick();
|
| + getActivity().getLayoutManager().getActiveLayout().finishAnimationsForTests();
|
| }
|
| });
|
|
|
| + mTabModelObserver.mDidCloseTabCallbackHelper.waitForCallback(currentCallCount, 1);
|
| +
|
| validateState(false, true);
|
| }
|
|
|
| @@ -156,7 +190,7 @@ public class ChromeHomeNewTabPageTest extends BottomSheetTestCaseBase {
|
| 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(
|
| + mBottomSheetObserver.mStateChangedCallbackHelper.waitForCallback(
|
| mStateChangeCurrentCalls, animatesToState ? 2 : 1);
|
|
|
| if (newTabPageSelected) {
|
| @@ -171,6 +205,6 @@ public class ChromeHomeNewTabPageTest extends BottomSheetTestCaseBase {
|
| }
|
|
|
| // Once the state is validated, update the call count.
|
| - mStateChangeCurrentCalls = mObserver.mStateChangedCallbackHelper.getCallCount();
|
| + mStateChangeCurrentCalls = mBottomSheetObserver.mStateChangedCallbackHelper.getCallCount();
|
| }
|
| }
|
|
|