Commit 7f3bb5b5 authored by Mia Glaese's avatar Mia Glaese Committed by Commit Bot

[Start Surface] Hide Tab Carousel when there are no tabs.

Bug: 982018
Change-Id: I3feac4d011e96a9e9ece24ff50d20b5958e3f0e3
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1895795
Commit-Queue: Mia Glaese <glamia@chromium.org>
Reviewed-by: default avatarYusuf Ozuysal <yusufo@chromium.org>
Reviewed-by: default avatarGanggui Tang <gogerald@chromium.org>
Cr-Commit-Position: refs/heads/master@{#713920}
parent 961e7821
...@@ -6,6 +6,7 @@ package org.chromium.chrome.features.start_surface; ...@@ -6,6 +6,7 @@ package org.chromium.chrome.features.start_surface;
import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.IS_FAKE_SEARCH_BOX_VISIBLE; 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;
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.IS_VOICE_RECOGNITION_BUTTON_VISIBLE;
import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.MORE_TABS_CLICK_LISTENER; import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.MORE_TABS_CLICK_LISTENER;
import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.MV_TILES_VISIBLE; import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.MV_TILES_VISIBLE;
...@@ -32,6 +33,8 @@ import org.chromium.chrome.browser.feed.FeedSurfaceCoordinator; ...@@ -32,6 +33,8 @@ import org.chromium.chrome.browser.feed.FeedSurfaceCoordinator;
import org.chromium.chrome.browser.night_mode.NightModeStateProvider; import org.chromium.chrome.browser.night_mode.NightModeStateProvider;
import org.chromium.chrome.browser.ntp.FakeboxDelegate; import org.chromium.chrome.browser.ntp.FakeboxDelegate;
import org.chromium.chrome.browser.omnibox.UrlFocusChangeListener; import org.chromium.chrome.browser.omnibox.UrlFocusChangeListener;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tabmodel.EmptyTabModelObserver;
import org.chromium.chrome.browser.tabmodel.EmptyTabModelSelectorObserver; import org.chromium.chrome.browser.tabmodel.EmptyTabModelSelectorObserver;
import org.chromium.chrome.browser.tabmodel.TabModel; import org.chromium.chrome.browser.tabmodel.TabModel;
import org.chromium.chrome.browser.tabmodel.TabModelSelector; import org.chromium.chrome.browser.tabmodel.TabModelSelector;
...@@ -67,6 +70,7 @@ class StartSurfaceMediator ...@@ -67,6 +70,7 @@ class StartSurfaceMediator
private final ObserverList<StartSurface.OverviewModeObserver> mObservers = new ObserverList<>(); private final ObserverList<StartSurface.OverviewModeObserver> mObservers = new ObserverList<>();
private final TabSwitcher.Controller mController; private final TabSwitcher.Controller mController;
private final TabModelSelector mTabModelSelector;
@Nullable @Nullable
private final PropertyModel mPropertyModel; private final PropertyModel mPropertyModel;
@Nullable @Nullable
...@@ -95,6 +99,7 @@ class StartSurfaceMediator ...@@ -95,6 +99,7 @@ class StartSurfaceMediator
@SurfaceMode int surfaceMode, @Nullable FakeboxDelegate fakeboxDelegate, @SurfaceMode int surfaceMode, @Nullable FakeboxDelegate fakeboxDelegate,
NightModeStateProvider nightModeStateProvider) { NightModeStateProvider nightModeStateProvider) {
mController = controller; mController = controller;
mTabModelSelector = tabModelSelector;
mPropertyModel = propertyModel; mPropertyModel = propertyModel;
mFeedSurfaceCreator = feedSurfaceCreator; mFeedSurfaceCreator = feedSurfaceCreator;
mSecondaryTasksSurfaceInitializer = secondaryTasksSurfaceInitializer; mSecondaryTasksSurfaceInitializer = secondaryTasksSurfaceInitializer;
...@@ -107,8 +112,9 @@ class StartSurfaceMediator ...@@ -107,8 +112,9 @@ class StartSurfaceMediator
|| mSurfaceMode == SurfaceMode.TASKS_ONLY; || mSurfaceMode == SurfaceMode.TASKS_ONLY;
assert mFakeboxDelegate != null; assert mFakeboxDelegate != null;
mIsIncognito = tabModelSelector.isIncognitoSelected(); mIsIncognito = mTabModelSelector.isIncognitoSelected();
tabModelSelector.addObserver(new EmptyTabModelSelectorObserver() {
mTabModelSelector.addObserver(new EmptyTabModelSelectorObserver() {
@Override @Override
public void onTabModelSelected(TabModel newModel, TabModel oldModel) { public void onTabModelSelected(TabModel newModel, TabModel oldModel) {
// TODO(crbug.com/982018): Optimize to not listen for selected Tab model change // TODO(crbug.com/982018): Optimize to not listen for selected Tab model change
...@@ -148,6 +154,25 @@ class StartSurfaceMediator ...@@ -148,6 +154,25 @@ class StartSurfaceMediator
if (mSurfaceMode == SurfaceMode.SINGLE_PANE) { if (mSurfaceMode == SurfaceMode.SINGLE_PANE) {
mPropertyModel.set(MORE_TABS_CLICK_LISTENER, this); mPropertyModel.set(MORE_TABS_CLICK_LISTENER, this);
// Hide tab carousel, which does not exist in incognito mode, when closing all
// normal tabs.
TabModel normalTabModel = mTabModelSelector.getModel(false);
normalTabModel.addObserver(new EmptyTabModelObserver() {
@Override
public void willCloseTab(Tab tab, boolean animate) {
if (normalTabModel.getCount() <= 1
|| mPropertyModel.get(IS_SHOWING_OVERVIEW)) {
setTabCarouselVisibility(false);
}
}
@Override
public void tabClosureUndone(Tab tab) {
if (mPropertyModel.get(IS_SHOWING_OVERVIEW)) {
setTabCarouselVisibility(true);
}
}
});
} }
// Set the initial state. // Set the initial state.
...@@ -241,6 +266,7 @@ class StartSurfaceMediator ...@@ -241,6 +266,7 @@ class StartSurfaceMediator
setSecondaryTasksSurfaceVisibility(true); setSecondaryTasksSurfaceVisibility(true);
} else { } else {
setExploreSurfaceVisibility(true); setExploreSurfaceVisibility(true);
setTabCarouselVisibility(mTabModelSelector.getModel(false).getCount() > 0);
} }
} else if (mSurfaceMode == SurfaceMode.TWO_PANES) { } else if (mSurfaceMode == SurfaceMode.TWO_PANES) {
RecordUserAction.record("StartSurface.TwoPanes"); RecordUserAction.record("StartSurface.TwoPanes");
...@@ -467,4 +493,19 @@ class StartSurfaceMediator ...@@ -467,4 +493,19 @@ class StartSurfaceMediator
// Do not show Tab switcher toolbar when focusing the Omnibox. // Do not show Tab switcher toolbar when focusing the Omnibox.
return mPropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE); return mPropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE);
} }
private void setTabCarouselVisibility(boolean isVisible) {
assert !mIsIncognito;
if (isVisible == mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE)) return;
// Hide the more Tabs view when the last Tab is closed.
if (!isVisible && mSecondaryTasksSurfaceController != null
&& mSecondaryTasksSurfaceController.overviewVisible()) {
setSecondaryTasksSurfaceVisibility(false);
setExploreSurfaceVisibility(true);
}
mPropertyModel.set(IS_TAB_CAROUSEL_VISIBLE, isVisible);
}
} }
...@@ -8,11 +8,13 @@ import static org.hamcrest.CoreMatchers.equalTo; ...@@ -8,11 +8,13 @@ import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.MatcherAssert.assertThat;
import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never; import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.IS_FAKE_SEARCH_BOX_VISIBLE; 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;
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.IS_VOICE_RECOGNITION_BUTTON_VISIBLE;
import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.MV_TILES_VISIBLE; import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.MV_TILES_VISIBLE;
import static org.chromium.chrome.features.start_surface.StartSurfaceProperties.IS_EXPLORE_SURFACE_VISIBLE; import static org.chromium.chrome.features.start_surface.StartSurfaceProperties.IS_EXPLORE_SURFACE_VISIBLE;
...@@ -34,7 +36,10 @@ import org.chromium.chrome.browser.night_mode.NightModeStateProvider; ...@@ -34,7 +36,10 @@ import org.chromium.chrome.browser.night_mode.NightModeStateProvider;
import org.chromium.chrome.browser.ntp.FakeboxDelegate; import org.chromium.chrome.browser.ntp.FakeboxDelegate;
import org.chromium.chrome.browser.omnibox.LocationBarVoiceRecognitionHandler; import org.chromium.chrome.browser.omnibox.LocationBarVoiceRecognitionHandler;
import org.chromium.chrome.browser.omnibox.UrlFocusChangeListener; import org.chromium.chrome.browser.omnibox.UrlFocusChangeListener;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tabmodel.EmptyTabModelObserver;
import org.chromium.chrome.browser.tabmodel.EmptyTabModelSelectorObserver; import org.chromium.chrome.browser.tabmodel.EmptyTabModelSelectorObserver;
import org.chromium.chrome.browser.tabmodel.TabModel;
import org.chromium.chrome.browser.tabmodel.TabModelSelector; import org.chromium.chrome.browser.tabmodel.TabModelSelector;
import org.chromium.chrome.browser.tasks.TasksSurfaceProperties; 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;
...@@ -57,14 +62,20 @@ public class StartSurfaceMediatorUnitTest { ...@@ -57,14 +62,20 @@ public class StartSurfaceMediatorUnitTest {
@Mock @Mock
private TabModelSelector mTabModelSelector; private TabModelSelector mTabModelSelector;
@Mock @Mock
private TabModel mNormalTabModel;
@Mock
private FakeboxDelegate mFakeBoxDelegate; private FakeboxDelegate mFakeBoxDelegate;
@Mock @Mock
private ExploreSurfaceCoordinator.FeedSurfaceCreator mFeedSurfaceCreator;
@Mock
private NightModeStateProvider mNightModeStateProvider; private NightModeStateProvider mNightModeStateProvider;
@Mock @Mock
private LocationBarVoiceRecognitionHandler mLocationBarVoiceRecognitionHandler; private LocationBarVoiceRecognitionHandler mLocationBarVoiceRecognitionHandler;
@Captor @Captor
private ArgumentCaptor<EmptyTabModelSelectorObserver> mTabModelSelectorObserverCaptor; private ArgumentCaptor<EmptyTabModelSelectorObserver> mTabModelSelectorObserverCaptor;
@Captor @Captor
private ArgumentCaptor<EmptyTabModelObserver> mTabModelObserverCaptor;
@Captor
private ArgumentCaptor<OverviewModeObserver> mOverviewModeObserverCaptor; private ArgumentCaptor<OverviewModeObserver> mOverviewModeObserverCaptor;
@Captor @Captor
private ArgumentCaptor<UrlFocusChangeListener> mUrlFocusChangeListenerCaptor; private ArgumentCaptor<UrlFocusChangeListener> mUrlFocusChangeListenerCaptor;
...@@ -78,6 +89,7 @@ public class StartSurfaceMediatorUnitTest { ...@@ -78,6 +89,7 @@ public class StartSurfaceMediatorUnitTest {
new ArrayList<>(Arrays.asList(TasksSurfaceProperties.ALL_KEYS)); new ArrayList<>(Arrays.asList(TasksSurfaceProperties.ALL_KEYS));
allProperties.addAll(Arrays.asList(StartSurfaceProperties.ALL_KEYS)); allProperties.addAll(Arrays.asList(StartSurfaceProperties.ALL_KEYS));
mPropertyModel = new PropertyModel(allProperties); mPropertyModel = new PropertyModel(allProperties);
doReturn(mNormalTabModel).when(mTabModelSelector).getModel(false);
} }
@After @After
...@@ -154,10 +166,71 @@ public class StartSurfaceMediatorUnitTest { ...@@ -154,10 +166,71 @@ public class StartSurfaceMediatorUnitTest {
} }
// TODO(crbug.com/1020223): Test SurfaceMode.SINGLE_PANE and SurfaceMode.TWO_PANES modes. // TODO(crbug.com/1020223): Test SurfaceMode.SINGLE_PANE and SurfaceMode.TWO_PANES modes.
@Test
public void hideTabCarouselWithNoTabs() {
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
doReturn(mLocationBarVoiceRecognitionHandler)
.when(mFakeBoxDelegate)
.getLocationBarVoiceRecognitionHandler();
doReturn(true).when(mLocationBarVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.SINGLE_PANE);
verify(mNormalTabModel).addObserver(mTabModelObserverCaptor.capture());
doReturn(0).when(mNormalTabModel).getCount();
mediator.showOverview(false);
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(mLocationBarVoiceRecognitionHandler)
.when(mFakeBoxDelegate)
.getLocationBarVoiceRecognitionHandler();
doReturn(true).when(mLocationBarVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.SINGLE_PANE);
verify(mNormalTabModel).addObserver(mTabModelObserverCaptor.capture());
doReturn(1).when(mNormalTabModel).getCount();
mediator.showOverview(false);
assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(true));
doReturn(0).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(mLocationBarVoiceRecognitionHandler)
.when(mFakeBoxDelegate)
.getLocationBarVoiceRecognitionHandler();
doReturn(true).when(mLocationBarVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.SINGLE_PANE);
verify(mNormalTabModel).addObserver(mTabModelObserverCaptor.capture());
doReturn(1).when(mNormalTabModel).getCount();
mediator.showOverview(false);
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));
}
private StartSurfaceMediator createStartSurfaceMediator(@SurfaceMode int mode) { private StartSurfaceMediator createStartSurfaceMediator(@SurfaceMode int mode) {
return new StartSurfaceMediator(mMainTabGridController, mTabModelSelector, return new StartSurfaceMediator(mMainTabGridController, mTabModelSelector,
mode == SurfaceMode.NO_START_SURFACE ? null : mPropertyModel, null, null, mode, mode == SurfaceMode.NO_START_SURFACE ? null : mPropertyModel,
mode == SurfaceMode.SINGLE_PANE ? mFeedSurfaceCreator : null, null, mode,
mFakeBoxDelegate, mNightModeStateProvider); mFakeBoxDelegate, mNightModeStateProvider);
} }
} }
...@@ -7,7 +7,7 @@ package org.chromium.chrome.browser.tasks; ...@@ -7,7 +7,7 @@ package org.chromium.chrome.browser.tasks;
import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.FAKE_SEARCH_BOX_CLICK_LISTENER; import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.FAKE_SEARCH_BOX_CLICK_LISTENER;
import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.FAKE_SEARCH_BOX_TEXT_WATCHER; import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.FAKE_SEARCH_BOX_TEXT_WATCHER;
import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.IS_FAKE_SEARCH_BOX_VISIBLE; import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.IS_FAKE_SEARCH_BOX_VISIBLE;
import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.IS_TAB_CAROUSEL; 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.IS_VOICE_RECOGNITION_BUTTON_VISIBLE;
import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.VOICE_SEARCH_BUTTON_CLICK_LISTENER; import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.VOICE_SEARCH_BUTTON_CLICK_LISTENER;
...@@ -36,7 +36,7 @@ class TasksSurfaceMediator { ...@@ -36,7 +36,7 @@ class TasksSurfaceMediator {
assert mFakeboxDelegate != null; assert mFakeboxDelegate != null;
mModel = model; mModel = model;
mModel.set(IS_TAB_CAROUSEL, isTabCarousel); mModel.set(IS_TAB_CAROUSEL_VISIBLE, isTabCarousel);
mModel.set(FAKE_SEARCH_BOX_CLICK_LISTENER, new View.OnClickListener() { mModel.set(FAKE_SEARCH_BOX_CLICK_LISTENER, new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
......
...@@ -20,7 +20,7 @@ public class TasksSurfaceProperties { ...@@ -20,7 +20,7 @@ public class TasksSurfaceProperties {
new PropertyModel.WritableBooleanPropertyKey(); new PropertyModel.WritableBooleanPropertyKey();
public static final PropertyModel.WritableBooleanPropertyKey IS_INCOGNITO = public static final PropertyModel.WritableBooleanPropertyKey IS_INCOGNITO =
new PropertyModel.WritableBooleanPropertyKey(); new PropertyModel.WritableBooleanPropertyKey();
public static final PropertyModel.WritableBooleanPropertyKey IS_TAB_CAROUSEL = public static final PropertyModel.WritableBooleanPropertyKey IS_TAB_CAROUSEL_VISIBLE =
new PropertyModel.WritableBooleanPropertyKey(); new PropertyModel.WritableBooleanPropertyKey();
public static final PropertyModel public static final PropertyModel
.WritableBooleanPropertyKey IS_VOICE_RECOGNITION_BUTTON_VISIBLE = .WritableBooleanPropertyKey IS_VOICE_RECOGNITION_BUTTON_VISIBLE =
...@@ -39,7 +39,7 @@ public class TasksSurfaceProperties { ...@@ -39,7 +39,7 @@ public class TasksSurfaceProperties {
.WritableObjectPropertyKey<View.OnClickListener> VOICE_SEARCH_BUTTON_CLICK_LISTENER = .WritableObjectPropertyKey<View.OnClickListener> VOICE_SEARCH_BUTTON_CLICK_LISTENER =
new PropertyModel.WritableObjectPropertyKey<View.OnClickListener>(); new PropertyModel.WritableObjectPropertyKey<View.OnClickListener>();
public static final PropertyKey[] ALL_KEYS = new PropertyKey[] {IS_FAKE_SEARCH_BOX_VISIBLE, public static final PropertyKey[] ALL_KEYS = new PropertyKey[] {IS_FAKE_SEARCH_BOX_VISIBLE,
IS_INCOGNITO, IS_TAB_CAROUSEL, IS_VOICE_RECOGNITION_BUTTON_VISIBLE, IS_INCOGNITO, IS_TAB_CAROUSEL_VISIBLE, IS_VOICE_RECOGNITION_BUTTON_VISIBLE,
FAKE_SEARCH_BOX_CLICK_LISTENER, FAKE_SEARCH_BOX_TEXT_WATCHER, MORE_TABS_CLICK_LISTENER, FAKE_SEARCH_BOX_CLICK_LISTENER, FAKE_SEARCH_BOX_TEXT_WATCHER, MORE_TABS_CLICK_LISTENER,
MV_TILES_VISIBLE, VOICE_SEARCH_BUTTON_CLICK_LISTENER}; MV_TILES_VISIBLE, VOICE_SEARCH_BUTTON_CLICK_LISTENER};
} }
...@@ -59,15 +59,12 @@ class TasksView extends CoordinatorLayoutForPointer { ...@@ -59,15 +59,12 @@ class TasksView extends CoordinatorLayoutForPointer {
} }
/** /**
* Sets whether the tasks view should behave in Carousel mode. * Set the visibility of the tab carousel.
* @param isTabCarousel whether the tab switcher is in .CAROUSEL mode * @param isVisible Whether it's visible.
*/ */
void setIsTabCarousel(boolean isTabCarousel) { void setTabCarouselVisibility(boolean isVisible) {
if (isTabCarousel) { mCarouselTabSwitcherContainer.setVisibility(isVisible ? View.VISIBLE : View.GONE);
// TODO(crbug.com/982018): Change view according to incognito and dark mode. findViewById(R.id.tab_switcher_title).setVisibility(isVisible ? View.VISIBLE : View.GONE);
findViewById(R.id.tab_switcher_title).setVisibility(View.VISIBLE);
mCarouselTabSwitcherContainer.setVisibility(View.VISIBLE);
}
} }
/** /**
......
...@@ -8,7 +8,7 @@ import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.FAKE_SEAR ...@@ -8,7 +8,7 @@ import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.FAKE_SEAR
import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.FAKE_SEARCH_BOX_TEXT_WATCHER; import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.FAKE_SEARCH_BOX_TEXT_WATCHER;
import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.IS_FAKE_SEARCH_BOX_VISIBLE; 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;
import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.IS_TAB_CAROUSEL; 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.IS_VOICE_RECOGNITION_BUTTON_VISIBLE;
import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.MORE_TABS_CLICK_LISTENER; import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.MORE_TABS_CLICK_LISTENER;
import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.MV_TILES_VISIBLE; import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.MV_TILES_VISIBLE;
...@@ -30,8 +30,8 @@ class TasksViewBinder { ...@@ -30,8 +30,8 @@ class TasksViewBinder {
view.setFakeSearchBoxVisibility(model.get(IS_FAKE_SEARCH_BOX_VISIBLE)); view.setFakeSearchBoxVisibility(model.get(IS_FAKE_SEARCH_BOX_VISIBLE));
} else if (propertyKey == IS_INCOGNITO) { } else if (propertyKey == IS_INCOGNITO) {
view.setIncognitoMode(model.get(IS_INCOGNITO)); view.setIncognitoMode(model.get(IS_INCOGNITO));
} else if (propertyKey == IS_TAB_CAROUSEL) { } else if (propertyKey == IS_TAB_CAROUSEL_VISIBLE) {
view.setIsTabCarousel(model.get(IS_TAB_CAROUSEL)); view.setTabCarouselVisibility(model.get(IS_TAB_CAROUSEL_VISIBLE));
} else if (propertyKey == IS_VOICE_RECOGNITION_BUTTON_VISIBLE) { } else if (propertyKey == IS_VOICE_RECOGNITION_BUTTON_VISIBLE) {
view.setVoiceRecognitionButtonVisibility( view.setVoiceRecognitionButtonVisibility(
model.get(IS_VOICE_RECOGNITION_BUTTON_VISIBLE)); model.get(IS_VOICE_RECOGNITION_BUTTON_VISIBLE));
......
...@@ -15,7 +15,7 @@ import static org.mockito.Mockito.verify; ...@@ -15,7 +15,7 @@ import static org.mockito.Mockito.verify;
import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.FAKE_SEARCH_BOX_CLICK_LISTENER; import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.FAKE_SEARCH_BOX_CLICK_LISTENER;
import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.FAKE_SEARCH_BOX_TEXT_WATCHER; import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.FAKE_SEARCH_BOX_TEXT_WATCHER;
import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.IS_FAKE_SEARCH_BOX_VISIBLE; import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.IS_FAKE_SEARCH_BOX_VISIBLE;
import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.IS_TAB_CAROUSEL; 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.IS_VOICE_RECOGNITION_BUTTON_VISIBLE;
import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.VOICE_SEARCH_BUTTON_CLICK_LISTENER; import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.VOICE_SEARCH_BUTTON_CLICK_LISTENER;
...@@ -75,7 +75,7 @@ public class TasksSurfaceMediatorUnitTest { ...@@ -75,7 +75,7 @@ public class TasksSurfaceMediatorUnitTest {
@Test @Test
public void initialization() { public void initialization() {
verify(mPropertyModel).set(eq(IS_TAB_CAROUSEL), eq(true)); verify(mPropertyModel).set(eq(IS_TAB_CAROUSEL_VISIBLE), eq(true));
verify(mPropertyModel) verify(mPropertyModel)
.set(eq(FAKE_SEARCH_BOX_CLICK_LISTENER), mFakeboxClickListenerCaptor.capture()); .set(eq(FAKE_SEARCH_BOX_CLICK_LISTENER), mFakeboxClickListenerCaptor.capture());
verify(mPropertyModel) verify(mPropertyModel)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment