blob: 521cf30f0b35a570226f09385ae2dc1bff81a704 [file] [log] [blame]
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.chrome.features.start_surface;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.inOrder;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.IS_FAKE_SEARCH_BOX_VISIBLE;
import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.IS_INCOGNITO;
import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.IS_INCOGNITO_DESCRIPTION_INITIALIZED;
import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.IS_INCOGNITO_DESCRIPTION_VISIBLE;
import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.IS_SURFACE_BODY_VISIBLE;
import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.IS_TAB_CAROUSEL_VISIBLE;
import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.IS_VOICE_RECOGNITION_BUTTON_VISIBLE;
import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.MV_TILES_CONTAINER_TOP_MARGIN;
import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.MV_TILES_VISIBLE;
import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.TAB_SWITCHER_TITLE_TOP_MARGIN;
import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.TASKS_SURFACE_BODY_TOP_MARGIN;
import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.TRENDY_TERMS_VISIBLE;
import static org.chromium.chrome.features.start_surface.StartSurfaceProperties.BOTTOM_BAR_CLICKLISTENER;
import static org.chromium.chrome.features.start_surface.StartSurfaceProperties.BOTTOM_BAR_HEIGHT;
import static org.chromium.chrome.features.start_surface.StartSurfaceProperties.BOTTOM_BAR_SELECTED_TAB_POSITION;
import static org.chromium.chrome.features.start_surface.StartSurfaceProperties.FEED_SURFACE_COORDINATOR;
import static org.chromium.chrome.features.start_surface.StartSurfaceProperties.IS_BOTTOM_BAR_VISIBLE;
import static org.chromium.chrome.features.start_surface.StartSurfaceProperties.IS_EXPLORE_SURFACE_VISIBLE;
import static org.chromium.chrome.features.start_surface.StartSurfaceProperties.IS_SECONDARY_SURFACE_VISIBLE;
import static org.chromium.chrome.features.start_surface.StartSurfaceProperties.IS_SHOWING_OVERVIEW;
import static org.chromium.chrome.features.start_surface.StartSurfaceProperties.IS_SHOWING_STACK_TAB_SWITCHER;
import static org.chromium.chrome.features.start_surface.StartSurfaceProperties.TOP_BAR_HEIGHT;
import android.content.res.Resources;
import android.view.View;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.ArgumentMatchers;
import org.mockito.Captor;
import org.mockito.InOrder;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.annotation.Config;
import org.chromium.base.ContextUtils;
import org.chromium.base.test.BaseRobolectricTestRunner;
import org.chromium.chrome.browser.browser_controls.BrowserControlsStateProvider;
import org.chromium.chrome.browser.compositor.layouts.OverviewModeState;
import org.chromium.chrome.browser.night_mode.NightModeStateProvider;
import org.chromium.chrome.browser.ntp.FakeboxDelegate;
import org.chromium.chrome.browser.omnibox.UrlFocusChangeListener;
import org.chromium.chrome.browser.omnibox.voice.VoiceRecognitionHandler;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tabmodel.EmptyTabModelSelectorObserver;
import org.chromium.chrome.browser.tabmodel.TabModel;
import org.chromium.chrome.browser.tabmodel.TabModelObserver;
import org.chromium.chrome.browser.tabmodel.TabModelSelector;
import org.chromium.chrome.browser.tasks.TasksSurfaceProperties;
import org.chromium.chrome.browser.tasks.tab_management.TabSwitcher;
import org.chromium.chrome.browser.tasks.tab_management.TabSwitcher.OverviewModeObserver;
import org.chromium.chrome.features.start_surface.StartSurfaceMediator.SecondaryTasksSurfaceInitializer;
import org.chromium.chrome.features.start_surface.StartSurfaceMediator.SurfaceMode;
import org.chromium.chrome.start_surface.R;
import org.chromium.components.prefs.PrefService;
import org.chromium.ui.modelutil.PropertyKey;
import org.chromium.ui.modelutil.PropertyModel;
import java.util.ArrayList;
import java.util.Arrays;
/** Tests for {@link StartSurfaceMediator}. */
@RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE)
public class StartSurfaceMediatorUnitTest {
private PropertyModel mPropertyModel;
private PropertyModel mSecondaryTasksSurfacePropertyModel;
@Mock
private TabSwitcher.Controller mMainTabGridController;
@Mock
private TabModelSelector mTabModelSelector;
@Mock
private TabModel mNormalTabModel;
@Mock
private TabModel mIncognitoTabModel;
@Mock
private FakeboxDelegate mFakeBoxDelegate;
@Mock
private ExploreSurfaceCoordinator.FeedSurfaceCreator mFeedSurfaceCreator;
@Mock
private NightModeStateProvider mNightModeStateProvider;
@Mock
private BrowserControlsStateProvider mBrowserControlsStateProvider;
@Mock
private StartSurfaceMediator.ActivityStateChecker mActivityStateChecker;
@Mock
private VoiceRecognitionHandler mVoiceRecognitionHandler;
@Mock
private SecondaryTasksSurfaceInitializer mSecondaryTasksSurfaceInitializer;
@Mock
private TabSwitcher.Controller mSecondaryTasksSurfaceController;
@Mock
private PrefService mPrefService;
@Captor
private ArgumentCaptor<EmptyTabModelSelectorObserver> mTabModelSelectorObserverCaptor;
@Captor
private ArgumentCaptor<TabModelObserver> mTabModelObserverCaptor;
@Captor
private ArgumentCaptor<OverviewModeObserver> mOverviewModeObserverCaptor;
@Captor
private ArgumentCaptor<UrlFocusChangeListener> mUrlFocusChangeListenerCaptor;
@Captor
private ArgumentCaptor<BrowserControlsStateProvider.Observer>
mBrowserControlsStateProviderCaptor;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
ArrayList<PropertyKey> allProperties =
new ArrayList<>(Arrays.asList(TasksSurfaceProperties.ALL_KEYS));
allProperties.addAll(Arrays.asList(StartSurfaceProperties.ALL_KEYS));
mPropertyModel = new PropertyModel(allProperties);
mSecondaryTasksSurfacePropertyModel = new PropertyModel(allProperties);
doReturn(mNormalTabModel).when(mTabModelSelector).getModel(false);
doReturn(mIncognitoTabModel).when(mTabModelSelector).getModel(true);
doReturn(false).when(mNormalTabModel).isIncognito();
doReturn(true).when(mIncognitoTabModel).isIncognito();
doReturn(mSecondaryTasksSurfaceController)
.when(mSecondaryTasksSurfaceInitializer)
.initialize();
doReturn(false).when(mActivityStateChecker).isFinishingOrDestroyed();
}
@After
public void tearDown() {
mPropertyModel = null;
}
@Test
public void showAndHideNoStartSurface() {
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
StartSurfaceMediator mediator =
createStartSurfaceMediator(SurfaceMode.NO_START_SURFACE, true);
verify(mTabModelSelector, never()).addObserver(mTabModelSelectorObserverCaptor.capture());
verify(mMainTabGridController)
.addOverviewModeObserver(mOverviewModeObserverCaptor.capture());
mediator.showOverview(false);
verify(mMainTabGridController).showOverview(eq(false));
mOverviewModeObserverCaptor.getValue().startedShowing();
mOverviewModeObserverCaptor.getValue().finishedShowing();
mediator.hideOverview(true);
verify(mMainTabGridController).hideOverview(eq(true));
mOverviewModeObserverCaptor.getValue().startedHiding();
mOverviewModeObserverCaptor.getValue().finishedHiding();
// TODO(crbug.com/1020223): Test the other SurfaceMode.NO_START_SURFACE operations.
}
@Test
public void showAndHideTasksOnlySurface() {
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
doReturn(mVoiceRecognitionHandler).when(mFakeBoxDelegate).getVoiceRecognitionHandler();
doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.TASKS_ONLY, false);
verify(mMainTabGridController)
.addOverviewModeObserver(mOverviewModeObserverCaptor.capture());
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.NOT_SHOWN));
mediator.showOverview(false);
verify(mMainTabGridController).showOverview(eq(false));
verify(mFakeBoxDelegate).addUrlFocusChangeListener(mUrlFocusChangeListenerCaptor.capture());
assertThat(mediator.getOverviewState(),
equalTo(OverviewModeState.SHOWN_TABSWITCHER_TASKS_ONLY));
assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(false));
assertThat(mPropertyModel.get(IS_VOICE_RECOGNITION_BUTTON_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(MV_TILES_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
assertThat(mPropertyModel.get(TRENDY_TERMS_VISIBLE), equalTo(false));
mOverviewModeObserverCaptor.getValue().startedShowing();
mOverviewModeObserverCaptor.getValue().finishedShowing();
mUrlFocusChangeListenerCaptor.getValue().onUrlFocusChange(true);
assertThat(mPropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE), equalTo(false));
mUrlFocusChangeListenerCaptor.getValue().onUrlFocusChange(false);
assertThat(mPropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(IS_VOICE_RECOGNITION_BUTTON_VISIBLE), equalTo(true));
mediator.hideOverview(true);
verify(mMainTabGridController).hideOverview(eq(true));
mOverviewModeObserverCaptor.getValue().startedHiding();
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(false));
verify(mFakeBoxDelegate)
.removeUrlFocusChangeListener(mUrlFocusChangeListenerCaptor.getValue());
mOverviewModeObserverCaptor.getValue().finishedHiding();
// TODO(crbug.com/1020223): Test the other SurfaceMode.TASKS_ONLY operations.
}
@Test
public void showAndHideOmniboxOnlySurface() {
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
doReturn(mVoiceRecognitionHandler).when(mFakeBoxDelegate).getVoiceRecognitionHandler();
doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.OMNIBOX_ONLY, true);
verify(mMainTabGridController)
.addOverviewModeObserver(mOverviewModeObserverCaptor.capture());
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.NOT_SHOWN));
mediator.showOverview(false);
verify(mMainTabGridController).showOverview(eq(false));
verify(mFakeBoxDelegate).addUrlFocusChangeListener(mUrlFocusChangeListenerCaptor.capture());
assertThat(mediator.getOverviewState(),
equalTo(OverviewModeState.SHOWN_TABSWITCHER_OMNIBOX_ONLY));
assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(false));
assertThat(mPropertyModel.get(IS_VOICE_RECOGNITION_BUTTON_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(MV_TILES_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
assertThat(mPropertyModel.get(TRENDY_TERMS_VISIBLE), equalTo(false));
mOverviewModeObserverCaptor.getValue().startedShowing();
mOverviewModeObserverCaptor.getValue().finishedShowing();
mUrlFocusChangeListenerCaptor.getValue().onUrlFocusChange(true);
assertThat(mPropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE), equalTo(false));
mUrlFocusChangeListenerCaptor.getValue().onUrlFocusChange(false);
assertThat(mPropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(IS_VOICE_RECOGNITION_BUTTON_VISIBLE), equalTo(true));
mediator.hideOverview(true);
verify(mMainTabGridController).hideOverview(eq(true));
mOverviewModeObserverCaptor.getValue().startedHiding();
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(false));
verify(mFakeBoxDelegate)
.removeUrlFocusChangeListener(mUrlFocusChangeListenerCaptor.getValue());
mOverviewModeObserverCaptor.getValue().finishedHiding();
// TODO(crbug.com/1020223): Test the other SurfaceMode.OMNIBOX_ONLY operations.
}
@Test
public void showAndHideTrendyTermsSurface() {
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
doReturn(mVoiceRecognitionHandler).when(mFakeBoxDelegate).getVoiceRecognitionHandler();
doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.TRENDY_TERMS, true);
verify(mMainTabGridController)
.addOverviewModeObserver(mOverviewModeObserverCaptor.capture());
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.NOT_SHOWN));
mediator.showOverview(false);
verify(mMainTabGridController).showOverview(eq(false));
verify(mFakeBoxDelegate).addUrlFocusChangeListener(mUrlFocusChangeListenerCaptor.capture());
assertThat(mediator.getOverviewState(),
equalTo(OverviewModeState.SHOWN_TABSWITCHER_TRENDY_TERMS));
assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(false));
assertThat(mPropertyModel.get(IS_VOICE_RECOGNITION_BUTTON_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(MV_TILES_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
assertThat(mPropertyModel.get(TRENDY_TERMS_VISIBLE), equalTo(true));
mOverviewModeObserverCaptor.getValue().startedShowing();
mOverviewModeObserverCaptor.getValue().finishedShowing();
mUrlFocusChangeListenerCaptor.getValue().onUrlFocusChange(true);
assertThat(mPropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE), equalTo(false));
mUrlFocusChangeListenerCaptor.getValue().onUrlFocusChange(false);
assertThat(mPropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(IS_VOICE_RECOGNITION_BUTTON_VISIBLE), equalTo(true));
mediator.hideOverview(true);
verify(mMainTabGridController).hideOverview(eq(true));
mOverviewModeObserverCaptor.getValue().startedHiding();
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(false));
verify(mFakeBoxDelegate)
.removeUrlFocusChangeListener(mUrlFocusChangeListenerCaptor.getValue());
mOverviewModeObserverCaptor.getValue().finishedHiding();
}
@Test
public void showAndHideSingleSurface() {
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
doReturn(mVoiceRecognitionHandler).when(mFakeBoxDelegate).getVoiceRecognitionHandler();
doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.SINGLE_PANE, false);
verify(mMainTabGridController)
.addOverviewModeObserver(mOverviewModeObserverCaptor.capture());
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.NOT_SHOWN));
mediator.showOverview(false);
verify(mMainTabGridController).showOverview(eq(false));
verify(mFakeBoxDelegate).addUrlFocusChangeListener(mUrlFocusChangeListenerCaptor.capture());
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.SHOWN_HOMEPAGE));
assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(false));
assertThat(mPropertyModel.get(IS_VOICE_RECOGNITION_BUTTON_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(MV_TILES_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
assertThat(mPropertyModel.get(TRENDY_TERMS_VISIBLE), equalTo(false));
mOverviewModeObserverCaptor.getValue().startedShowing();
mOverviewModeObserverCaptor.getValue().finishedShowing();
mUrlFocusChangeListenerCaptor.getValue().onUrlFocusChange(true);
assertThat(mPropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE), equalTo(false));
mUrlFocusChangeListenerCaptor.getValue().onUrlFocusChange(false);
assertThat(mPropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(IS_VOICE_RECOGNITION_BUTTON_VISIBLE), equalTo(true));
mediator.hideOverview(true);
verify(mMainTabGridController).hideOverview(eq(true));
mOverviewModeObserverCaptor.getValue().startedHiding();
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(false));
verify(mFakeBoxDelegate)
.removeUrlFocusChangeListener(mUrlFocusChangeListenerCaptor.getValue());
mOverviewModeObserverCaptor.getValue().finishedHiding();
// TODO(crbug.com/1020223): Test the other SurfaceMode.SINGLE_PANE operations.
}
@Test
public void showAndHideSingleSurfaceWithoutMVTiles() {
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
doReturn(mVoiceRecognitionHandler).when(mFakeBoxDelegate).getVoiceRecognitionHandler();
doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.SINGLE_PANE, true);
verify(mMainTabGridController)
.addOverviewModeObserver(mOverviewModeObserverCaptor.capture());
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.NOT_SHOWN));
mediator.showOverview(false);
verify(mMainTabGridController).showOverview(eq(false));
verify(mFakeBoxDelegate).addUrlFocusChangeListener(mUrlFocusChangeListenerCaptor.capture());
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.SHOWN_HOMEPAGE));
assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(false));
assertThat(mPropertyModel.get(IS_VOICE_RECOGNITION_BUTTON_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(MV_TILES_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
assertThat(mPropertyModel.get(TRENDY_TERMS_VISIBLE), equalTo(false));
mOverviewModeObserverCaptor.getValue().startedShowing();
mOverviewModeObserverCaptor.getValue().finishedShowing();
mUrlFocusChangeListenerCaptor.getValue().onUrlFocusChange(true);
assertThat(mPropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE), equalTo(false));
mUrlFocusChangeListenerCaptor.getValue().onUrlFocusChange(false);
assertThat(mPropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(IS_VOICE_RECOGNITION_BUTTON_VISIBLE), equalTo(true));
mediator.hideOverview(true);
verify(mMainTabGridController).hideOverview(eq(true));
mOverviewModeObserverCaptor.getValue().startedHiding();
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(false));
verify(mFakeBoxDelegate)
.removeUrlFocusChangeListener(mUrlFocusChangeListenerCaptor.getValue());
mOverviewModeObserverCaptor.getValue().finishedHiding();
// TODO(crbug.com/1020223): Test the other SurfaceMode.SINGLE_PANE operations.
}
@Test
public void showAndHideSingleSurfaceWithStackTabSwitcher() {
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
doReturn(mVoiceRecognitionHandler).when(mFakeBoxDelegate).getVoiceRecognitionHandler();
doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator =
createStartSurfaceMediator(SurfaceMode.SINGLE_PANE, true, false);
verify(mMainTabGridController)
.addOverviewModeObserver(mOverviewModeObserverCaptor.capture());
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.NOT_SHOWN));
mediator.showOverview(false);
verify(mMainTabGridController).showOverview(eq(false));
verify(mFakeBoxDelegate).addUrlFocusChangeListener(mUrlFocusChangeListenerCaptor.capture());
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.SHOWN_HOMEPAGE));
assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(false));
assertThat(mPropertyModel.get(IS_VOICE_RECOGNITION_BUTTON_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(MV_TILES_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
assertThat(mPropertyModel.get(IS_SHOWING_STACK_TAB_SWITCHER), equalTo(false));
assertThat(mPropertyModel.get(TRENDY_TERMS_VISIBLE), equalTo(false));
mOverviewModeObserverCaptor.getValue().startedShowing();
mOverviewModeObserverCaptor.getValue().finishedShowing();
mUrlFocusChangeListenerCaptor.getValue().onUrlFocusChange(true);
assertThat(mPropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE), equalTo(false));
mUrlFocusChangeListenerCaptor.getValue().onUrlFocusChange(false);
assertThat(mPropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(IS_VOICE_RECOGNITION_BUTTON_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(IS_SHOWING_STACK_TAB_SWITCHER), equalTo(false));
mediator.hideOverview(true);
verify(mMainTabGridController).hideOverview(eq(true));
mOverviewModeObserverCaptor.getValue().startedHiding();
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(false));
verify(mFakeBoxDelegate)
.removeUrlFocusChangeListener(mUrlFocusChangeListenerCaptor.getValue());
mOverviewModeObserverCaptor.getValue().finishedHiding();
// TODO(crbug.com/1020223): Test the other SurfaceMode.SINGLE_PANE operations.
}
@Test
public void showAndHideTwoPanesSurface() {
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
doReturn(mVoiceRecognitionHandler).when(mFakeBoxDelegate).getVoiceRecognitionHandler();
doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.TWO_PANES, false);
verify(mMainTabGridController)
.addOverviewModeObserver(mOverviewModeObserverCaptor.capture());
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.NOT_SHOWN));
assertTrue(mPropertyModel.get(BOTTOM_BAR_CLICKLISTENER) != null);
mediator.showOverview(false);
verify(mMainTabGridController).showOverview(eq(false));
verify(mFakeBoxDelegate).addUrlFocusChangeListener(mUrlFocusChangeListenerCaptor.capture());
assertThat(mediator.getOverviewState(),
equalTo(OverviewModeState.SHOWN_TABSWITCHER_TWO_PANES));
assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(false));
assertThat(mPropertyModel.get(IS_VOICE_RECOGNITION_BUTTON_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(IS_BOTTOM_BAR_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(MV_TILES_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
assertThat(mPropertyModel.get(TRENDY_TERMS_VISIBLE), equalTo(false));
mOverviewModeObserverCaptor.getValue().startedShowing();
mOverviewModeObserverCaptor.getValue().finishedShowing();
mUrlFocusChangeListenerCaptor.getValue().onUrlFocusChange(true);
assertThat(mPropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE), equalTo(false));
mUrlFocusChangeListenerCaptor.getValue().onUrlFocusChange(false);
assertThat(mPropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(IS_VOICE_RECOGNITION_BUTTON_VISIBLE), equalTo(true));
mediator.hideOverview(true);
verify(mMainTabGridController).hideOverview(eq(true));
mOverviewModeObserverCaptor.getValue().startedHiding();
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(false));
verify(mFakeBoxDelegate)
.removeUrlFocusChangeListener(mUrlFocusChangeListenerCaptor.getValue());
mOverviewModeObserverCaptor.getValue().finishedHiding();
}
@Test
public void switchBetweenHomeAndExplorePane() {
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
doReturn(mVoiceRecognitionHandler).when(mFakeBoxDelegate).getVoiceRecognitionHandler();
doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.TWO_PANES, false);
verify(mMainTabGridController)
.addOverviewModeObserver(mOverviewModeObserverCaptor.capture());
mediator.showOverview(false);
mOverviewModeObserverCaptor.getValue().startedShowing();
mOverviewModeObserverCaptor.getValue().finishedShowing();
assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(BOTTOM_BAR_SELECTED_TAB_POSITION), equalTo(0));
mPropertyModel.get(BOTTOM_BAR_CLICKLISTENER).onExploreButtonClicked();
assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(BOTTOM_BAR_SELECTED_TAB_POSITION), equalTo(1));
assertThat(ReturnToStartSurfaceUtil.shouldShowExploreSurface(), equalTo(true));
mPropertyModel.get(BOTTOM_BAR_CLICKLISTENER).onHomeButtonClicked();
assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(BOTTOM_BAR_SELECTED_TAB_POSITION), equalTo(0));
assertThat(ReturnToStartSurfaceUtil.shouldShowExploreSurface(), equalTo(false));
}
@Test
public void showExplorePaneByDefault() {
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
doReturn(mVoiceRecognitionHandler).when(mFakeBoxDelegate).getVoiceRecognitionHandler();
doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.TWO_PANES, false);
verify(mMainTabGridController)
.addOverviewModeObserver(mOverviewModeObserverCaptor.capture());
mPropertyModel.set(BOTTOM_BAR_SELECTED_TAB_POSITION, 1);
ReturnToStartSurfaceUtil.setExploreSurfaceVisibleLast(true);
mediator.showOverview(false);
mOverviewModeObserverCaptor.getValue().startedShowing();
mOverviewModeObserverCaptor.getValue().finishedShowing();
assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
}
@Test
public void incognitoTwoPanesSurface() {
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
doReturn(mVoiceRecognitionHandler).when(mFakeBoxDelegate).getVoiceRecognitionHandler();
doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.TWO_PANES, false);
verify(mMainTabGridController)
.addOverviewModeObserver(mOverviewModeObserverCaptor.capture());
mediator.showOverview(false);
mOverviewModeObserverCaptor.getValue().startedShowing();
mOverviewModeObserverCaptor.getValue().finishedShowing();
verify(mTabModelSelector).addObserver(mTabModelSelectorObserverCaptor.capture());
assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(false));
assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(MV_TILES_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(IS_BOTTOM_BAR_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
doReturn(true).when(mTabModelSelector).isIncognitoSelected();
mTabModelSelector.selectModel(true);
mTabModelSelectorObserverCaptor.getValue().onTabModelSelected(
mIncognitoTabModel, mNormalTabModel);
assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(true));
assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(MV_TILES_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(IS_BOTTOM_BAR_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
}
// TODO(crbug.com/1020223): Test SurfaceMode.SINGLE_PANE and SurfaceMode.TWO_PANES modes.
@Test
public void hideTabCarouselWithNoTabs() {
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
doReturn(mVoiceRecognitionHandler).when(mFakeBoxDelegate).getVoiceRecognitionHandler();
doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.SINGLE_PANE, false);
doReturn(0).when(mNormalTabModel).getCount();
mediator.setOverviewState(OverviewModeState.SHOWN_HOMEPAGE);
mediator.showOverview(false);
mediator.setOverviewState(OverviewModeState.SHOWN_HOMEPAGE);
verify(mNormalTabModel).addObserver(mTabModelObserverCaptor.capture());
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(false));
}
@Test
public void hideTabCarouselWhenClosingLastTab() {
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
doReturn(mVoiceRecognitionHandler).when(mFakeBoxDelegate).getVoiceRecognitionHandler();
doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.SINGLE_PANE, false);
doReturn(2).when(mNormalTabModel).getCount();
mediator.setOverviewState(OverviewModeState.SHOWING_HOMEPAGE);
mediator.showOverview(false);
mediator.setOverviewState(OverviewModeState.SHOWN_HOMEPAGE);
verify(mNormalTabModel).addObserver(mTabModelObserverCaptor.capture());
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(true));
mTabModelObserverCaptor.getValue().willCloseTab(mock(Tab.class), false);
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(true));
doReturn(1).when(mNormalTabModel).getCount();
mTabModelObserverCaptor.getValue().willCloseTab(mock(Tab.class), false);
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(false));
}
@Test
public void reshowTabCarouselWhenTabClosureUndone() {
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
doReturn(mVoiceRecognitionHandler).when(mFakeBoxDelegate).getVoiceRecognitionHandler();
doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.SINGLE_PANE, false);
doReturn(1).when(mNormalTabModel).getCount();
mediator.setSecondaryTasksSurfacePropertyModel(mSecondaryTasksSurfacePropertyModel);
mediator.setOverviewState(OverviewModeState.SHOWING_HOMEPAGE);
mediator.showOverview(false);
verify(mNormalTabModel).addObserver(mTabModelObserverCaptor.capture());
mediator.setOverviewState(OverviewModeState.SHOWN_HOMEPAGE);
mTabModelObserverCaptor.getValue().willCloseTab(mock(Tab.class), false);
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(false));
mTabModelObserverCaptor.getValue().tabClosureUndone(mock(Tab.class));
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(true));
doReturn(2).when(mNormalTabModel).getCount();
mediator.setOverviewState(OverviewModeState.SHOWN_TABSWITCHER);
mTabModelObserverCaptor.getValue().willCloseTab(mock(Tab.class), false);
mTabModelObserverCaptor.getValue().tabClosureUndone(mock(Tab.class));
doReturn(0).when(mNormalTabModel).getCount();
mTabModelObserverCaptor.getValue().willCloseTab(mock(Tab.class), false);
assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE), equalTo(true));
}
@Test
public void addAndRemoveTabModelObserverWithOverview() {
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
doReturn(mVoiceRecognitionHandler).when(mFakeBoxDelegate).getVoiceRecognitionHandler();
doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.SINGLE_PANE, false);
verify(mNormalTabModel, never()).addObserver(mTabModelObserverCaptor.capture());
mediator.setOverviewState(OverviewModeState.SHOWING_HOMEPAGE);
mediator.showOverview(false);
verify(mNormalTabModel).addObserver(mTabModelObserverCaptor.capture());
mediator.startedHiding();
verify(mNormalTabModel).removeObserver(mTabModelObserverCaptor.capture());
}
@Test
public void addAndRemoveTabModelSelectorObserverWithOverview() {
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
doReturn(mVoiceRecognitionHandler).when(mFakeBoxDelegate).getVoiceRecognitionHandler();
doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.SINGLE_PANE, false);
verify(mTabModelSelector, never()).addObserver(mTabModelSelectorObserverCaptor.capture());
mediator.setOverviewState(OverviewModeState.SHOWN_HOMEPAGE);
mediator.showOverview(false);
verify(mTabModelSelector).addObserver(mTabModelSelectorObserverCaptor.capture());
mediator.startedHiding();
verify(mTabModelSelector).removeObserver(mTabModelSelectorObserverCaptor.capture());
}
@Test
public void overviewModeStatesNormalModeSinglePane() {
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
doReturn(mVoiceRecognitionHandler).when(mFakeBoxDelegate).getVoiceRecognitionHandler();
doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.SINGLE_PANE, false);
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.NOT_SHOWN));
doReturn(2).when(mNormalTabModel).getCount();
mediator.setOverviewState(OverviewModeState.SHOWING_HOMEPAGE);
mediator.showOverview(false);
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.SHOWN_HOMEPAGE));
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(false));
assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(MV_TILES_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE), equalTo(false));
mediator.setSecondaryTasksSurfacePropertyModel(mSecondaryTasksSurfacePropertyModel);
mediator.onClick(mock(View.class));
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.SHOWN_TABSWITCHER));
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(false));
assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(MV_TILES_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE), equalTo(true));
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE),
equalTo(false));
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_INCOGNITO), equalTo(false));
mediator.onBackPressed();
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.SHOWN_HOMEPAGE));
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(false));
assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(MV_TILES_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE), equalTo(false));
mediator.startedHiding();
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.NOT_SHOWN));
assertThat(mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE), equalTo(false));
}
@Test
public void overviewModeStatesNormalModeSinglePaneStackTabSwitcher() {
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
doReturn(mVoiceRecognitionHandler).when(mFakeBoxDelegate).getVoiceRecognitionHandler();
doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator =
createStartSurfaceMediator(SurfaceMode.SINGLE_PANE, true, true);
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.NOT_SHOWN));
doReturn(2).when(mNormalTabModel).getCount();
mediator.setOverviewState(OverviewModeState.SHOWING_HOMEPAGE);
mediator.showOverview(false);
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.SHOWN_HOMEPAGE));
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(false));
assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(MV_TILES_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(IS_SHOWING_STACK_TAB_SWITCHER), equalTo(false));
mediator.setSecondaryTasksSurfacePropertyModel(mSecondaryTasksSurfacePropertyModel);
mediator.onClick(mock(View.class));
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.SHOWN_TABSWITCHER));
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(false));
assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(MV_TILES_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(IS_SHOWING_STACK_TAB_SWITCHER), equalTo(true));
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE),
equalTo(false));
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_INCOGNITO), equalTo(false));
mediator.onBackPressed();
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.SHOWN_HOMEPAGE));
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(false));
assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(MV_TILES_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(IS_SHOWING_STACK_TAB_SWITCHER), equalTo(false));
mediator.startedHiding();
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.NOT_SHOWN));
assertThat(mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE), equalTo(false));
}
@Test
public void overviewModeIncognitoModeSinglePane() {
doReturn(true).when(mTabModelSelector).isIncognitoSelected();
doReturn(mVoiceRecognitionHandler).when(mFakeBoxDelegate).getVoiceRecognitionHandler();
doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.SINGLE_PANE, false);
mediator.setSecondaryTasksSurfacePropertyModel(mSecondaryTasksSurfacePropertyModel);
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.NOT_SHOWN));
doReturn(2).when(mNormalTabModel).getCount();
mediator.setOverviewState(OverviewModeState.SHOWING_HOMEPAGE);
mediator.showOverview(false);
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.SHOWN_HOMEPAGE));
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(true));
assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(MV_TILES_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE), equalTo(true));
assertThat(
mSecondaryTasksSurfacePropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE), equalTo(true));
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_VOICE_RECOGNITION_BUTTON_VISIBLE),
equalTo(false));
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_INCOGNITO), equalTo(true));
mediator.setOverviewState(OverviewModeState.SHOWN_TABSWITCHER);
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.SHOWN_TABSWITCHER));
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(true));
assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(MV_TILES_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE), equalTo(true));
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE),
equalTo(false));
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_INCOGNITO), equalTo(true));
mediator.setOverviewState(OverviewModeState.SHOWN_HOMEPAGE);
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.SHOWN_HOMEPAGE));
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(true));
assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(MV_TILES_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE), equalTo(true));
assertThat(
mSecondaryTasksSurfacePropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE), equalTo(true));
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_VOICE_RECOGNITION_BUTTON_VISIBLE),
equalTo(false));
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_INCOGNITO), equalTo(true));
mediator.hideOverview(false);
mediator.startedHiding();
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.NOT_SHOWN));
assertThat(mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE), equalTo(false));
}
@Test
public void overviewModeIncognitoModeTaskOnly() {
doReturn(true).when(mTabModelSelector).isIncognitoSelected();
doReturn(mVoiceRecognitionHandler).when(mFakeBoxDelegate).getVoiceRecognitionHandler();
doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.TASKS_ONLY, false);
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.NOT_SHOWN));
mediator.showOverview(false);
assertThat(mediator.getOverviewState(),
equalTo(OverviewModeState.SHOWN_TABSWITCHER_TASKS_ONLY));
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(true));
assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(MV_TILES_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE), equalTo(false));
}
@Test
public void overviewModeSwitchToIncognitoModeAndBackSinglePane() {
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
doReturn(mVoiceRecognitionHandler).when(mFakeBoxDelegate).getVoiceRecognitionHandler();
doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.SINGLE_PANE, false);
mediator.setSecondaryTasksSurfacePropertyModel(mSecondaryTasksSurfacePropertyModel);
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.NOT_SHOWN));
doReturn(2).when(mNormalTabModel).getCount();
mediator.setOverviewState(OverviewModeState.SHOWING_HOMEPAGE);
mediator.showOverview(false);
verify(mTabModelSelector).addObserver(mTabModelSelectorObserverCaptor.capture());
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.SHOWN_HOMEPAGE));
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(false));
assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(MV_TILES_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE), equalTo(false));
doReturn(true).when(mTabModelSelector).isIncognitoSelected();
mTabModelSelector.selectModel(true);
mTabModelSelectorObserverCaptor.getValue().onTabModelSelected(
mIncognitoTabModel, mNormalTabModel);
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.SHOWN_HOMEPAGE));
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(true));
assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(MV_TILES_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE), equalTo(true));
assertThat(
mSecondaryTasksSurfacePropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE), equalTo(true));
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_VOICE_RECOGNITION_BUTTON_VISIBLE),
equalTo(false));
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_INCOGNITO), equalTo(true));
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
mTabModelSelector.selectModel(false);
mTabModelSelectorObserverCaptor.getValue().onTabModelSelected(
mNormalTabModel, mIncognitoTabModel);
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.SHOWN_HOMEPAGE));
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(false));
assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(MV_TILES_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE), equalTo(false));
}
@Test
public void activityIsFinishingOrDestroyedSinglePane() {
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
doReturn(mVoiceRecognitionHandler).when(mFakeBoxDelegate).getVoiceRecognitionHandler();
doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.SINGLE_PANE, false);
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.NOT_SHOWN));
doReturn(2).when(mNormalTabModel).getCount();
doReturn(true).when(mActivityStateChecker).isFinishingOrDestroyed();
mediator.setOverviewState(OverviewModeState.SHOWING_HOMEPAGE);
mediator.showOverview(false);
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.SHOWN_HOMEPAGE));
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(false));
assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(MV_TILES_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(FEED_SURFACE_COORDINATOR), equalTo(null));
mediator.setSecondaryTasksSurfacePropertyModel(mSecondaryTasksSurfacePropertyModel);
mediator.onClick(mock(View.class));
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.SHOWN_TABSWITCHER));
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(false));
assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(MV_TILES_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE), equalTo(true));
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE),
equalTo(false));
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_INCOGNITO), equalTo(false));
assertThat(mPropertyModel.get(FEED_SURFACE_COORDINATOR), equalTo(null));
mediator.onBackPressed();
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.SHOWN_HOMEPAGE));
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(false));
assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(MV_TILES_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(FEED_SURFACE_COORDINATOR), equalTo(null));
mediator.startedHiding();
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.NOT_SHOWN));
assertThat(mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE), equalTo(false));
}
@Test
public void overviewModeSwitchToIncognitoModeAndBackTasksOnly() {
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
doReturn(mVoiceRecognitionHandler).when(mFakeBoxDelegate).getVoiceRecognitionHandler();
doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.TASKS_ONLY, false);
mediator.setSecondaryTasksSurfacePropertyModel(mSecondaryTasksSurfacePropertyModel);
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.NOT_SHOWN));
doReturn(2).when(mNormalTabModel).getCount();
mediator.showOverview(false);
verify(mTabModelSelector).addObserver(mTabModelSelectorObserverCaptor.capture());
assertThat(mediator.getOverviewState(),
equalTo(OverviewModeState.SHOWN_TABSWITCHER_TASKS_ONLY));
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(false));
assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(MV_TILES_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE), equalTo(false));
doReturn(true).when(mTabModelSelector).isIncognitoSelected();
mTabModelSelector.selectModel(true);
mTabModelSelectorObserverCaptor.getValue().onTabModelSelected(
mIncognitoTabModel, mNormalTabModel);
assertThat(mediator.getOverviewState(),
equalTo(OverviewModeState.SHOWN_TABSWITCHER_TASKS_ONLY));
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(true));
assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(MV_TILES_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE), equalTo(false));
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
mTabModelSelector.selectModel(false);
mTabModelSelectorObserverCaptor.getValue().onTabModelSelected(
mNormalTabModel, mIncognitoTabModel);
assertThat(mediator.getOverviewState(),
equalTo(OverviewModeState.SHOWN_TABSWITCHER_TASKS_ONLY));
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(false));
assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(MV_TILES_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE), equalTo(false));
}
@Test
public void overviewModeIncognitoTabswitcher() {
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
doReturn(mVoiceRecognitionHandler).when(mFakeBoxDelegate).getVoiceRecognitionHandler();
doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.SINGLE_PANE, false);
mediator.setSecondaryTasksSurfacePropertyModel(mSecondaryTasksSurfacePropertyModel);
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.NOT_SHOWN));
doReturn(2).when(mNormalTabModel).getCount();
mediator.setOverviewState(OverviewModeState.SHOWING_HOMEPAGE);
mediator.showOverview(false);
verify(mTabModelSelector).addObserver(mTabModelSelectorObserverCaptor.capture());
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.SHOWN_HOMEPAGE));
mediator.setOverviewState(OverviewModeState.SHOWN_TABSWITCHER);
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_INCOGNITO), equalTo(false));
doReturn(true).when(mTabModelSelector).isIncognitoSelected();
mTabModelSelector.selectModel(true);
mTabModelSelectorObserverCaptor.getValue().onTabModelSelected(
mIncognitoTabModel, mNormalTabModel);
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_INCOGNITO), equalTo(true));
mediator.setOverviewState(OverviewModeState.SHOWN_HOMEPAGE);
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_INCOGNITO), equalTo(true));
assertThat(
mSecondaryTasksSurfacePropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE), equalTo(true));
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_VOICE_RECOGNITION_BUTTON_VISIBLE),
equalTo(false));
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_INCOGNITO), equalTo(true));
}
@Test
public void paddingForBottomBarSinglePane() {
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
doReturn(mVoiceRecognitionHandler).when(mFakeBoxDelegate).getVoiceRecognitionHandler();
doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.SINGLE_PANE, false);
verify(mMainTabGridController)
.addOverviewModeObserver(mOverviewModeObserverCaptor.capture());
mediator.setSecondaryTasksSurfacePropertyModel(mSecondaryTasksSurfacePropertyModel);
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.NOT_SHOWN));
doReturn(30).when(mBrowserControlsStateProvider).getBottomControlsHeight();
doReturn(2).when(mNormalTabModel).getCount();
mediator.setOverviewState(OverviewModeState.SHOWING_HOMEPAGE);
mediator.showOverview(false);
verify(mBrowserControlsStateProvider)
.addObserver(mBrowserControlsStateProviderCaptor.capture());
assertThat(mPropertyModel.get(BOTTOM_BAR_HEIGHT), equalTo(30));
assertThat(mSecondaryTasksSurfacePropertyModel.get(BOTTOM_BAR_HEIGHT), equalTo(0));
mOverviewModeObserverCaptor.getValue().startedShowing();
mOverviewModeObserverCaptor.getValue().finishedShowing();
mBrowserControlsStateProviderCaptor.getValue().onBottomControlsHeightChanged(0, 0);
assertThat(mPropertyModel.get(BOTTOM_BAR_HEIGHT), equalTo(0));
assertThat(mSecondaryTasksSurfacePropertyModel.get(BOTTOM_BAR_HEIGHT), equalTo(0));
mBrowserControlsStateProviderCaptor.getValue().onBottomControlsHeightChanged(10, 10);
assertThat(mPropertyModel.get(BOTTOM_BAR_HEIGHT), equalTo(10));
assertThat(mSecondaryTasksSurfacePropertyModel.get(BOTTOM_BAR_HEIGHT), equalTo(0));
mediator.hideOverview(false);
mOverviewModeObserverCaptor.getValue().startedHiding();
verify(mBrowserControlsStateProvider)
.removeObserver(mBrowserControlsStateProviderCaptor.getValue());
}
@Test
public void doNotPaddingForBottomBarTasksOnly() {
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
doReturn(mVoiceRecognitionHandler).when(mFakeBoxDelegate).getVoiceRecognitionHandler();
doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.TASKS_ONLY, false);
mediator.setSecondaryTasksSurfacePropertyModel(mSecondaryTasksSurfacePropertyModel);
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.NOT_SHOWN));
doReturn(30).when(mBrowserControlsStateProvider).getBottomControlsHeight();
doReturn(2).when(mNormalTabModel).getCount();
mediator.showOverview(false);
verify(mBrowserControlsStateProvider)
.addObserver(mBrowserControlsStateProviderCaptor.capture());
assertThat(mPropertyModel.get(BOTTOM_BAR_HEIGHT), equalTo(0));
assertThat(mSecondaryTasksSurfacePropertyModel.get(BOTTOM_BAR_HEIGHT), equalTo(0));
// Even though the BrowserControlsStateProvider.Observer is added, changes to the
// bottom bar height should be ignored.
mBrowserControlsStateProviderCaptor.getValue().onBottomControlsHeightChanged(100, 0);
assertThat(mPropertyModel.get(BOTTOM_BAR_HEIGHT), equalTo(0));
assertThat(mSecondaryTasksSurfacePropertyModel.get(BOTTOM_BAR_HEIGHT), equalTo(0));
}
@Test
public void setIncognitoDescriptionShowTasksOnly() {
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
doReturn(mVoiceRecognitionHandler).when(mFakeBoxDelegate).getVoiceRecognitionHandler();
doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.TASKS_ONLY, false);
mediator.showOverview(false);
verify(mTabModelSelector).addObserver(mTabModelSelectorObserverCaptor.capture());
assertThat(mPropertyModel.get(IS_INCOGNITO_DESCRIPTION_INITIALIZED), equalTo(false));
assertThat(mPropertyModel.get(IS_INCOGNITO_DESCRIPTION_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(IS_SURFACE_BODY_VISIBLE), equalTo(false));
doReturn(0).when(mIncognitoTabModel).getCount();
mTabModelSelectorObserverCaptor.getValue().onTabModelSelected(
mIncognitoTabModel, mNormalTabModel);
assertThat(mPropertyModel.get(IS_INCOGNITO_DESCRIPTION_INITIALIZED), equalTo(true));
assertThat(mPropertyModel.get(IS_INCOGNITO_DESCRIPTION_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(IS_SURFACE_BODY_VISIBLE), equalTo(false));
mTabModelSelectorObserverCaptor.getValue().onTabModelSelected(
mNormalTabModel, mIncognitoTabModel);
assertThat(mPropertyModel.get(IS_INCOGNITO_DESCRIPTION_INITIALIZED), equalTo(true));
assertThat(mPropertyModel.get(IS_INCOGNITO_DESCRIPTION_VISIBLE), equalTo(false));
assertThat(mPropertyModel.get(IS_SURFACE_BODY_VISIBLE), equalTo(true));
mediator.hideOverview(true);
}
@Test
public void setIncognitoDescriptionHideTasksOnly() {
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
doReturn(mVoiceRecognitionHandler).when(mFakeBoxDelegate).getVoiceRecognitionHandler();
doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.TASKS_ONLY, false);
mediator.showOverview(false);
verify(mTabModelSelector).addObserver(mTabModelSelectorObserverCaptor.capture());
assertThat(mPropertyModel.get(IS_INCOGNITO_DESCRIPTION_INITIALIZED), equalTo(false));
assertThat(mPropertyModel.get(IS_INCOGNITO_DESCRIPTION_VISIBLE), equalTo(false));
doReturn(1).when(mIncognitoTabModel).getCount();
mTabModelSelectorObserverCaptor.getValue().onTabModelSelected(
mIncognitoTabModel, mNormalTabModel);
assertThat(mPropertyModel.get(IS_INCOGNITO_DESCRIPTION_INITIALIZED), equalTo(false));
assertThat(mPropertyModel.get(IS_INCOGNITO_DESCRIPTION_VISIBLE), equalTo(false));
mTabModelSelectorObserverCaptor.getValue().onTabModelSelected(
mNormalTabModel, mIncognitoTabModel);
assertThat(mPropertyModel.get(IS_INCOGNITO_DESCRIPTION_INITIALIZED), equalTo(false));
assertThat(mPropertyModel.get(IS_INCOGNITO_DESCRIPTION_VISIBLE), equalTo(false));
mediator.hideOverview(true);
}
@Test
public void setIncognitoDescriptionShowSinglePane() {
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
doReturn(mVoiceRecognitionHandler).when(mFakeBoxDelegate).getVoiceRecognitionHandler();
doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.SINGLE_PANE, false);
mediator.setOverviewState(OverviewModeState.SHOWING_HOMEPAGE);
mediator.showOverview(false);
verify(mTabModelSelector).addObserver(mTabModelSelectorObserverCaptor.capture());
assertThat(mPropertyModel.get(IS_INCOGNITO_DESCRIPTION_INITIALIZED), equalTo(false));
assertThat(mPropertyModel.get(IS_INCOGNITO_DESCRIPTION_VISIBLE), equalTo(false));
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_INCOGNITO_DESCRIPTION_INITIALIZED),
equalTo(false));
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_INCOGNITO_DESCRIPTION_VISIBLE),
equalTo(false));
mediator.setSecondaryTasksSurfacePropertyModel(mSecondaryTasksSurfacePropertyModel);
doReturn(0).when(mIncognitoTabModel).getCount();
mTabModelSelectorObserverCaptor.getValue().onTabModelSelected(
mIncognitoTabModel, mNormalTabModel);
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_INCOGNITO_DESCRIPTION_INITIALIZED),
equalTo(true));
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_INCOGNITO_DESCRIPTION_VISIBLE),
equalTo(true));
mTabModelSelectorObserverCaptor.getValue().onTabModelSelected(
mNormalTabModel, mIncognitoTabModel);
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_INCOGNITO_DESCRIPTION_INITIALIZED),
equalTo(true));
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_INCOGNITO_DESCRIPTION_VISIBLE),
equalTo(false));
mediator.hideOverview(true);
}
@Test
public void setIncognitoDescriptionHideSinglePane() {
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
doReturn(mVoiceRecognitionHandler).when(mFakeBoxDelegate).getVoiceRecognitionHandler();
doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.SINGLE_PANE, false);
mediator.setOverviewState(OverviewModeState.SHOWN_HOMEPAGE);
mediator.showOverview(false);
verify(mTabModelSelector).addObserver(mTabModelSelectorObserverCaptor.capture());
assertThat(mPropertyModel.get(IS_INCOGNITO_DESCRIPTION_INITIALIZED), equalTo(false));
assertThat(mPropertyModel.get(IS_INCOGNITO_DESCRIPTION_VISIBLE), equalTo(false));
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_INCOGNITO_DESCRIPTION_INITIALIZED),
equalTo(false));
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_INCOGNITO_DESCRIPTION_VISIBLE),
equalTo(false));
mediator.setSecondaryTasksSurfacePropertyModel(mSecondaryTasksSurfacePropertyModel);
doReturn(1).when(mIncognitoTabModel).getCount();
mTabModelSelectorObserverCaptor.getValue().onTabModelSelected(
mIncognitoTabModel, mNormalTabModel);
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_INCOGNITO_DESCRIPTION_INITIALIZED),
equalTo(false));
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_INCOGNITO_DESCRIPTION_VISIBLE),
equalTo(false));
mTabModelSelectorObserverCaptor.getValue().onTabModelSelected(
mNormalTabModel, mIncognitoTabModel);
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_INCOGNITO_DESCRIPTION_INITIALIZED),
equalTo(false));
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_INCOGNITO_DESCRIPTION_VISIBLE),
equalTo(false));
mediator.hideOverview(true);
}
@Test
public void setIncognitoDescriptionShowSinglePaneStackTabSwitcher() {
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
doReturn(mVoiceRecognitionHandler).when(mFakeBoxDelegate).getVoiceRecognitionHandler();
doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator =
createStartSurfaceMediator(SurfaceMode.SINGLE_PANE, true, true);
mediator.setOverviewState(OverviewModeState.SHOWING_HOMEPAGE);
mediator.showOverview(false);
verify(mTabModelSelector).addObserver(mTabModelSelectorObserverCaptor.capture());
assertThat(mPropertyModel.get(IS_INCOGNITO_DESCRIPTION_INITIALIZED), equalTo(false));
assertThat(mPropertyModel.get(IS_INCOGNITO_DESCRIPTION_VISIBLE), equalTo(false));
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_INCOGNITO_DESCRIPTION_INITIALIZED),
equalTo(false));
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_INCOGNITO_DESCRIPTION_VISIBLE),
equalTo(false));
mediator.setSecondaryTasksSurfacePropertyModel(mSecondaryTasksSurfacePropertyModel);
doReturn(1).when(mIncognitoTabModel).getCount();
mTabModelSelectorObserverCaptor.getValue().onTabModelSelected(
mIncognitoTabModel, mNormalTabModel);
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_INCOGNITO_DESCRIPTION_INITIALIZED),
equalTo(true));
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_INCOGNITO_DESCRIPTION_VISIBLE),
equalTo(true));
mTabModelSelectorObserverCaptor.getValue().onTabModelSelected(
mNormalTabModel, mIncognitoTabModel);
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_INCOGNITO_DESCRIPTION_INITIALIZED),
equalTo(true));
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_INCOGNITO_DESCRIPTION_VISIBLE),
equalTo(false));
doReturn(0).when(mIncognitoTabModel).getCount();
mTabModelSelectorObserverCaptor.getValue().onTabModelSelected(
mIncognitoTabModel, mNormalTabModel);
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_INCOGNITO_DESCRIPTION_INITIALIZED),
equalTo(true));
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_INCOGNITO_DESCRIPTION_VISIBLE),
equalTo(true));
mTabModelSelectorObserverCaptor.getValue().onTabModelSelected(
mNormalTabModel, mIncognitoTabModel);
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_INCOGNITO_DESCRIPTION_INITIALIZED),
equalTo(true));
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_INCOGNITO_DESCRIPTION_VISIBLE),
equalTo(false));
mediator.hideOverview(true);
}
@Test
public void showAndHideTabSwitcherToolbarHomePage() {
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
doReturn(mVoiceRecognitionHandler).when(mFakeBoxDelegate).getVoiceRecognitionHandler();
doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.SINGLE_PANE, false);
verify(mMainTabGridController)
.addOverviewModeObserver(mOverviewModeObserverCaptor.capture());
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.NOT_SHOWN));
mediator.setSecondaryTasksSurfacePropertyModel(mSecondaryTasksSurfacePropertyModel);
mediator.setOverviewState(OverviewModeState.SHOWN_HOMEPAGE);
mediator.showOverview(false);
verify(mTabModelSelector).addObserver(mTabModelSelectorObserverCaptor.capture());
verify(mMainTabGridController).showOverview(eq(false));
verify(mFakeBoxDelegate).addUrlFocusChangeListener(mUrlFocusChangeListenerCaptor.capture());
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.SHOWN_HOMEPAGE));
assertThat(mPropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE), equalTo(true));
assertThat(mediator.shouldShowTabSwitcherToolbar(), equalTo(true));
mUrlFocusChangeListenerCaptor.getValue().onUrlFocusChange(true);
assertThat(mPropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE), equalTo(false));
assertThat(mediator.shouldShowTabSwitcherToolbar(), equalTo(false));
mUrlFocusChangeListenerCaptor.getValue().onUrlFocusChange(false);
assertThat(mPropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(IS_VOICE_RECOGNITION_BUTTON_VISIBLE), equalTo(true));
assertThat(mediator.shouldShowTabSwitcherToolbar(), equalTo(true));
doReturn(true).when(mTabModelSelector).isIncognitoSelected();
mTabModelSelectorObserverCaptor.getValue().onTabModelSelected(
mIncognitoTabModel, mNormalTabModel);
assertThat(
mSecondaryTasksSurfacePropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE), equalTo(true));
assertThat(mediator.shouldShowTabSwitcherToolbar(), equalTo(true));
mUrlFocusChangeListenerCaptor.getValue().onUrlFocusChange(true);
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE),
equalTo(false));
assertThat(mediator.shouldShowTabSwitcherToolbar(), equalTo(false));
mUrlFocusChangeListenerCaptor.getValue().onUrlFocusChange(false);
assertThat(
mSecondaryTasksSurfacePropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE), equalTo(true));
assertThat(mediator.shouldShowTabSwitcherToolbar(), equalTo(true));
}
@Test
public void defaultStateSinglePane() {
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
doReturn(mVoiceRecognitionHandler).when(mFakeBoxDelegate).getVoiceRecognitionHandler();
doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.SINGLE_PANE, false);
verify(mMainTabGridController)
.addOverviewModeObserver(mOverviewModeObserverCaptor.capture());
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.NOT_SHOWN));
mediator.showOverview(false);
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.SHOWN_HOMEPAGE));
}
@Test
public void defaultStateTaskOnly() {
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
doReturn(mVoiceRecognitionHandler).when(mFakeBoxDelegate).getVoiceRecognitionHandler();
doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.TASKS_ONLY, false);
verify(mMainTabGridController)
.addOverviewModeObserver(mOverviewModeObserverCaptor.capture());
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.NOT_SHOWN));
mediator.showOverview(false);
assertThat(mediator.getOverviewState(),
equalTo(OverviewModeState.SHOWN_TABSWITCHER_TASKS_ONLY));
}
@Test
public void defaultStateTwoPanes() {
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
doReturn(mVoiceRecognitionHandler).when(mFakeBoxDelegate).getVoiceRecognitionHandler();
doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.TWO_PANES, false);
verify(mMainTabGridController)
.addOverviewModeObserver(mOverviewModeObserverCaptor.capture());
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.NOT_SHOWN));
mediator.showOverview(false);
assertThat(mediator.getOverviewState(),
equalTo(OverviewModeState.SHOWN_TABSWITCHER_TWO_PANES));
}
@Test
public void showAndHideTabSwitcherToolbarTabswitcher() {
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
doReturn(mVoiceRecognitionHandler).when(mFakeBoxDelegate).getVoiceRecognitionHandler();
doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.SINGLE_PANE, false);
verify(mMainTabGridController)
.addOverviewModeObserver(mOverviewModeObserverCaptor.capture());
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.NOT_SHOWN));
mediator.setSecondaryTasksSurfacePropertyModel(mSecondaryTasksSurfacePropertyModel);
mediator.setOverviewState(OverviewModeState.SHOWING_HOMEPAGE);
mediator.showOverview(false);
verify(mMainTabGridController).showOverview(eq(false));
verify(mFakeBoxDelegate).addUrlFocusChangeListener(mUrlFocusChangeListenerCaptor.capture());
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.SHOWN_HOMEPAGE));
assertThat(mPropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE), equalTo(true));
assertThat(mediator.shouldShowTabSwitcherToolbar(), equalTo(true));
mUrlFocusChangeListenerCaptor.getValue().onUrlFocusChange(true);
assertThat(mPropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE), equalTo(false));
assertThat(mediator.shouldShowTabSwitcherToolbar(), equalTo(false));
mUrlFocusChangeListenerCaptor.getValue().onUrlFocusChange(false);
assertThat(mPropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE), equalTo(true));
assertThat(mPropertyModel.get(IS_VOICE_RECOGNITION_BUTTON_VISIBLE), equalTo(true));
assertThat(mediator.shouldShowTabSwitcherToolbar(), equalTo(true));
mediator.setOverviewState(OverviewModeState.SHOWN_TABSWITCHER);
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE),
equalTo(false));
assertThat(mediator.shouldShowTabSwitcherToolbar(), equalTo(true));
}
@Test
public void singleShowingPrevious() {
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
doReturn(mVoiceRecognitionHandler).when(mFakeBoxDelegate).getVoiceRecognitionHandler();
doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.SINGLE_PANE, false);
InOrder mainTabGridController = inOrder(mMainTabGridController);
mainTabGridController.verify(mMainTabGridController)
.addOverviewModeObserver(mOverviewModeObserverCaptor.capture());
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.NOT_SHOWN));
mediator.setSecondaryTasksSurfacePropertyModel(mSecondaryTasksSurfacePropertyModel);
mediator.setOverviewState(OverviewModeState.SHOWING_PREVIOUS);
mediator.showOverview(false);
mainTabGridController.verify(mMainTabGridController).showOverview(eq(false));
InOrder fakeboxDelegate = inOrder(mFakeBoxDelegate);
fakeboxDelegate.verify(mFakeBoxDelegate)
.addUrlFocusChangeListener(mUrlFocusChangeListenerCaptor.capture());
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.SHOWN_HOMEPAGE));
assertThat(mPropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE), equalTo(true));
assertThat(mediator.shouldShowTabSwitcherToolbar(), equalTo(true));
mediator.hideOverview(true);
mOverviewModeObserverCaptor.getValue().startedHiding();
mOverviewModeObserverCaptor.getValue().finishedHiding();
mediator.setOverviewState(OverviewModeState.SHOWING_PREVIOUS);
mediator.showOverview(false);
mainTabGridController.verify(mMainTabGridController).showOverview(eq(false));
fakeboxDelegate.verify(mFakeBoxDelegate)
.addUrlFocusChangeListener(mUrlFocusChangeListenerCaptor.capture());
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.SHOWN_HOMEPAGE));
assertThat(mPropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE), equalTo(true));
assertThat(mediator.shouldShowTabSwitcherToolbar(), equalTo(true));
mediator.setOverviewState(OverviewModeState.SHOWN_TABSWITCHER);
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE),
equalTo(false));
assertThat(mediator.shouldShowTabSwitcherToolbar(), equalTo(true));
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.SHOWN_TABSWITCHER));
mediator.hideOverview(true);
mOverviewModeObserverCaptor.getValue().startedHiding();
mOverviewModeObserverCaptor.getValue().finishedHiding();
mediator.setOverviewState(OverviewModeState.SHOWING_PREVIOUS);
mediator.showOverview(false);
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE),
equalTo(false));
assertThat(mediator.shouldShowTabSwitcherToolbar(), equalTo(true));
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.SHOWN_TABSWITCHER));
}
@Test
public void changeTopControlsHeight() {
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
doReturn(mVoiceRecognitionHandler).when(mFakeBoxDelegate).getVoiceRecognitionHandler();
doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
doNothing()
.when(mBrowserControlsStateProvider)
.addObserver(mBrowserControlsStateProviderCaptor.capture());
StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.SINGLE_PANE, false);
mediator.showOverview(false);
verify(mBrowserControlsStateProvider).addObserver(ArgumentMatchers.any());
mBrowserControlsStateProviderCaptor.getValue().onTopControlsHeightChanged(100, 20);
assertEquals("Wrong top bar height.", 100, mPropertyModel.get(TOP_BAR_HEIGHT));
mBrowserControlsStateProviderCaptor.getValue().onTopControlsHeightChanged(50, 20);
assertEquals("Wrong top bar height.", 50, mPropertyModel.get(TOP_BAR_HEIGHT));
}
@Test
public void exploreSurfaceInitializedAfterNativeInSinglePane() {
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
doReturn(mVoiceRecognitionHandler).when(mFakeBoxDelegate).getVoiceRecognitionHandler();
doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator =
createStartSurfaceMediatorWithoutInit(SurfaceMode.SINGLE_PANE, false, false);
verify(mMainTabGridController)
.addOverviewModeObserver(mOverviewModeObserverCaptor.capture());
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.NOT_SHOWN));
mediator.showOverview(false);
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.SHOWN_HOMEPAGE));
assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(false));
verify(mMainTabGridController).showOverview(eq(false));
when(mMainTabGridController.overviewVisible()).thenReturn(true);
mediator.initWithNative(mFakeBoxDelegate, mFeedSurfaceCreator, mPrefService);
assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(true));
}
@Test
public void initializeStartSurfaceTopMargins() {
Resources resources = ContextUtils.getApplicationContext().getResources();
int tasksSurfaceBodyTopMargin =
resources.getDimensionPixelSize(R.dimen.tasks_surface_body_top_margin);
int mvTilesContainerTopMargin =
resources.getDimensionPixelSize(R.dimen.mv_tiles_container_top_margin);
int tabSwitcherTitleTopMargin =
resources.getDimensionPixelSize(R.dimen.tab_switcher_title_top_margin);
createStartSurfaceMediatorWithoutInit(SurfaceMode.OMNIBOX_ONLY, false, false);
assertThat(mPropertyModel.get(TASKS_SURFACE_BODY_TOP_MARGIN), equalTo(0));
assertThat(mPropertyModel.get(MV_TILES_CONTAINER_TOP_MARGIN), equalTo(0));
assertThat(mPropertyModel.get(TAB_SWITCHER_TITLE_TOP_MARGIN), equalTo(0));
createStartSurfaceMediatorWithoutInit(SurfaceMode.SINGLE_PANE, false, false);
assertThat(mPropertyModel.get(TASKS_SURFACE_BODY_TOP_MARGIN),
equalTo(tasksSurfaceBodyTopMargin));
assertThat(mPropertyModel.get(MV_TILES_CONTAINER_TOP_MARGIN),
equalTo(mvTilesContainerTopMargin));
assertThat(mPropertyModel.get(TAB_SWITCHER_TITLE_TOP_MARGIN),
equalTo(tabSwitcherTitleTopMargin));
}
private StartSurfaceMediator createStartSurfaceMediator(
@SurfaceMode int mode, boolean excludeMVTiles) {
return createStartSurfaceMediator(mode, excludeMVTiles, false);
}
private StartSurfaceMediator createStartSurfaceMediator(
@SurfaceMode int mode, boolean excludeMVTiles, boolean showStackTabSwitcher) {
StartSurfaceMediator mediator =
createStartSurfaceMediatorWithoutInit(mode, excludeMVTiles, showStackTabSwitcher);
mediator.initWithNative(mFakeBoxDelegate,
(mode == SurfaceMode.SINGLE_PANE || mode == SurfaceMode.TWO_PANES)
? mFeedSurfaceCreator
: null,
mPrefService);
return mediator;
}
private StartSurfaceMediator createStartSurfaceMediatorWithoutInit(
@SurfaceMode int mode, boolean excludeMVTiles, boolean showStackTabSwitcher) {
StartSurfaceMediator mediator = new StartSurfaceMediator(mMainTabGridController,
mTabModelSelector, mode == SurfaceMode.NO_START_SURFACE ? null : mPropertyModel,
mode == SurfaceMode.SINGLE_PANE ? mSecondaryTasksSurfaceInitializer : null, mode,
mNightModeStateProvider, mBrowserControlsStateProvider, mActivityStateChecker,
excludeMVTiles, showStackTabSwitcher);
return mediator;
}
}