Commit 9ca7a88f authored by gogerald's avatar gogerald Committed by Commit Bot

[StartSurface] Padding single pane home page for the bottom toolbar

Screenshot:
https://drive.google.com/a/google.com/file/d/1OATymD07R7hE_8RDMACLCzlUHRSZjW1o/view?usp=sharing

Bug: 1032780
Change-Id: I7c3e859d6b49074e0d2998ae8d2565342d6e411c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1960968Reviewed-by: default avatarYusuf Ozuysal <yusufo@chromium.org>
Commit-Queue: Ganggui Tang <gogerald@chromium.org>
Cr-Commit-Position: refs/heads/master@{#723644}
parent b68f0623
...@@ -96,7 +96,7 @@ public class StartSurfaceCoordinator implements StartSurface { ...@@ -96,7 +96,7 @@ public class StartSurfaceCoordinator implements StartSurface {
mSurfaceMode != SurfaceMode.NO_START_SURFACE mSurfaceMode != SurfaceMode.NO_START_SURFACE
? mActivity.getToolbarManager().getFakeboxDelegate() ? mActivity.getToolbarManager().getFakeboxDelegate()
: null, : null,
mActivity.getNightModeStateProvider()); mActivity.getNightModeStateProvider(), mActivity.getFullscreenManager());
} }
// Implements StartSurface. // Implements StartSurface.
......
...@@ -32,6 +32,7 @@ import org.chromium.base.ThreadUtils; ...@@ -32,6 +32,7 @@ import org.chromium.base.ThreadUtils;
import org.chromium.base.metrics.RecordUserAction; import org.chromium.base.metrics.RecordUserAction;
import org.chromium.chrome.browser.compositor.layouts.OverviewModeState; import org.chromium.chrome.browser.compositor.layouts.OverviewModeState;
import org.chromium.chrome.browser.feed.FeedSurfaceCoordinator; import org.chromium.chrome.browser.feed.FeedSurfaceCoordinator;
import org.chromium.chrome.browser.fullscreen.FullscreenManager;
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;
...@@ -104,13 +105,14 @@ class StartSurfaceMediator ...@@ -104,13 +105,14 @@ class StartSurfaceMediator
private TabModelObserver mNormalTabModelObserver; private TabModelObserver mNormalTabModelObserver;
@Nullable @Nullable
private TabModelSelectorObserver mTabModelSelectorObserver; private TabModelSelectorObserver mTabModelSelectorObserver;
private FullscreenManager mFullScreenManager;
StartSurfaceMediator(TabSwitcher.Controller controller, TabModelSelector tabModelSelector, StartSurfaceMediator(TabSwitcher.Controller controller, TabModelSelector tabModelSelector,
@Nullable PropertyModel propertyModel, @Nullable PropertyModel propertyModel,
@Nullable ExploreSurfaceCoordinator.FeedSurfaceCreator feedSurfaceCreator, @Nullable ExploreSurfaceCoordinator.FeedSurfaceCreator feedSurfaceCreator,
@Nullable SecondaryTasksSurfaceInitializer secondaryTasksSurfaceInitializer, @Nullable SecondaryTasksSurfaceInitializer secondaryTasksSurfaceInitializer,
@SurfaceMode int surfaceMode, @Nullable FakeboxDelegate fakeboxDelegate, @SurfaceMode int surfaceMode, @Nullable FakeboxDelegate fakeboxDelegate,
NightModeStateProvider nightModeStateProvider) { NightModeStateProvider nightModeStateProvider, FullscreenManager fullscreenManager) {
mController = controller; mController = controller;
mTabModelSelector = tabModelSelector; mTabModelSelector = tabModelSelector;
mPropertyModel = propertyModel; mPropertyModel = propertyModel;
...@@ -119,6 +121,7 @@ class StartSurfaceMediator ...@@ -119,6 +121,7 @@ class StartSurfaceMediator
mSurfaceMode = surfaceMode; mSurfaceMode = surfaceMode;
mFakeboxDelegate = fakeboxDelegate; mFakeboxDelegate = fakeboxDelegate;
mNightModeStateProvider = nightModeStateProvider; mNightModeStateProvider = nightModeStateProvider;
mFullScreenManager = fullscreenManager;
if (mPropertyModel != null) { if (mPropertyModel != null) {
assert mSurfaceMode == SurfaceMode.SINGLE_PANE || mSurfaceMode == SurfaceMode.TWO_PANES assert mSurfaceMode == SurfaceMode.SINGLE_PANE || mSurfaceMode == SurfaceMode.TWO_PANES
...@@ -249,6 +252,10 @@ class StartSurfaceMediator ...@@ -249,6 +252,10 @@ class StartSurfaceMediator
mTabModelSelector.getModel(false).getCount() > 0 && !mIsIncognito); mTabModelSelector.getModel(false).getCount() > 0 && !mIsIncognito);
setMVTilesVisibility(!mIsIncognito); setMVTilesVisibility(!mIsIncognito);
setSecondaryTasksSurfaceVisibility(mIsIncognito); setSecondaryTasksSurfaceVisibility(mIsIncognito);
// Only pad single pane home page since tabs grid has already been padding for the
// bottom bar.
mPropertyModel.set(BOTTOM_BAR_HEIGHT, mFullScreenManager.getBottomControlsHeight());
mNormalTabModel.addObserver(mNormalTabModelObserver); mNormalTabModel.addObserver(mNormalTabModelObserver);
} else if (mOverviewModeState == OverviewModeState.SHOWN_TABSWITCHER) { } else if (mOverviewModeState == OverviewModeState.SHOWN_TABSWITCHER) {
......
...@@ -17,6 +17,7 @@ import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.IS_INCOGN ...@@ -17,6 +17,7 @@ import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.IS_INCOGN
import static org.chromium.chrome.browser.tasks.TasksSurfaceProperties.IS_TAB_CAROUSEL_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.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.BOTTOM_BAR_HEIGHT;
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;
import static org.chromium.chrome.features.start_surface.StartSurfaceProperties.IS_SECONDARY_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_OVERVIEW;
...@@ -36,6 +37,7 @@ import org.robolectric.annotation.Config; ...@@ -36,6 +37,7 @@ import org.robolectric.annotation.Config;
import org.chromium.base.metrics.RecordUserAction; import org.chromium.base.metrics.RecordUserAction;
import org.chromium.base.test.BaseRobolectricTestRunner; import org.chromium.base.test.BaseRobolectricTestRunner;
import org.chromium.chrome.browser.compositor.layouts.OverviewModeState; import org.chromium.chrome.browser.compositor.layouts.OverviewModeState;
import org.chromium.chrome.browser.fullscreen.ChromeFullscreenManager;
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.LocationBarVoiceRecognitionHandler; import org.chromium.chrome.browser.omnibox.LocationBarVoiceRecognitionHandler;
...@@ -77,6 +79,8 @@ public class StartSurfaceMediatorUnitTest { ...@@ -77,6 +79,8 @@ public class StartSurfaceMediatorUnitTest {
@Mock @Mock
private NightModeStateProvider mNightModeStateProvider; private NightModeStateProvider mNightModeStateProvider;
@Mock @Mock
private ChromeFullscreenManager mChromeFullscreenManager;
@Mock
private LocationBarVoiceRecognitionHandler mLocationBarVoiceRecognitionHandler; private LocationBarVoiceRecognitionHandler mLocationBarVoiceRecognitionHandler;
@Mock @Mock
private StartSurfaceMediator.SecondaryTasksSurfaceInitializer mSecondaryTasksSurfaceInitializer; private StartSurfaceMediator.SecondaryTasksSurfaceInitializer mSecondaryTasksSurfaceInitializer;
...@@ -551,11 +555,49 @@ public class StartSurfaceMediatorUnitTest { ...@@ -551,11 +555,49 @@ public class StartSurfaceMediatorUnitTest {
assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_INCOGNITO), equalTo(true)); assertThat(mSecondaryTasksSurfacePropertyModel.get(IS_INCOGNITO), equalTo(true));
} }
@Test
public void paddingForBottomBarSinglePane() {
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
doReturn(mLocationBarVoiceRecognitionHandler)
.when(mFakeBoxDelegate)
.getLocationBarVoiceRecognitionHandler();
doReturn(true).when(mLocationBarVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.SINGLE_PANE);
mediator.setSecondaryTasksSurfacePropertyModel(mSecondaryTasksSurfacePropertyModel);
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.NOT_SHOWN));
doReturn(30).when(mChromeFullscreenManager).getBottomControlsHeight();
doReturn(2).when(mNormalTabModel).getCount();
mediator.showOverview(false);
assertThat(mPropertyModel.get(BOTTOM_BAR_HEIGHT), equalTo(30));
assertThat(mSecondaryTasksSurfacePropertyModel.get(BOTTOM_BAR_HEIGHT), equalTo(0));
}
@Test
public void doNotPaddingForBottomBarTasksOnly() {
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
doReturn(mLocationBarVoiceRecognitionHandler)
.when(mFakeBoxDelegate)
.getLocationBarVoiceRecognitionHandler();
doReturn(true).when(mLocationBarVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.TASKS_ONLY);
mediator.setSecondaryTasksSurfacePropertyModel(mSecondaryTasksSurfacePropertyModel);
assertThat(mediator.getOverviewState(), equalTo(OverviewModeState.NOT_SHOWN));
doReturn(30).when(mChromeFullscreenManager).getBottomControlsHeight();
doReturn(2).when(mNormalTabModel).getCount();
mediator.showOverview(false);
assertThat(mPropertyModel.get(BOTTOM_BAR_HEIGHT), equalTo(0));
assertThat(mSecondaryTasksSurfacePropertyModel.get(BOTTOM_BAR_HEIGHT), equalTo(0));
}
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, mode == SurfaceMode.NO_START_SURFACE ? null : mPropertyModel,
mode == SurfaceMode.SINGLE_PANE ? mFeedSurfaceCreator : null, mode == SurfaceMode.SINGLE_PANE ? mFeedSurfaceCreator : null,
mode == SurfaceMode.SINGLE_PANE ? mSecondaryTasksSurfaceInitializer : null, mode, mode == SurfaceMode.SINGLE_PANE ? mSecondaryTasksSurfaceInitializer : null, mode,
mFakeBoxDelegate, mNightModeStateProvider); mFakeBoxDelegate, mNightModeStateProvider, mChromeFullscreenManager);
} }
} }
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