Commit 1c004931 authored by Mia Glaese's avatar Mia Glaese Committed by Commit Bot

[Start Surface] Add and remove TabmodelSelectorObserver with Overview.

Bug: 982018

Change-Id: If3abc60b1a7f911e76a655886979d572664c9abe
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1930142Reviewed-by: default avatarYusuf Ozuysal <yusufo@chromium.org>
Commit-Queue: Mia Glaese <glamia@chromium.org>
Cr-Commit-Position: refs/heads/master@{#719214}
parent e8c6d103
......@@ -39,6 +39,7 @@ 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.tabmodel.TabModelSelectorObserver;
import org.chromium.chrome.browser.tasks.tab_management.TabSwitcher;
import org.chromium.chrome.start_surface.R;
import org.chromium.ui.modelutil.PropertyModel;
......@@ -96,6 +97,8 @@ class StartSurfaceMediator
private TabModel mNormalTabModel;
@Nullable
private TabModelObserver mNormalTabModelObserver;
@Nullable
private TabModelSelectorObserver mTabModelSelectorObserver;
StartSurfaceMediator(TabSwitcher.Controller controller, TabModelSelector tabModelSelector,
@Nullable PropertyModel propertyModel,
......@@ -119,14 +122,14 @@ class StartSurfaceMediator
mIsIncognito = mTabModelSelector.isIncognitoSelected();
mTabModelSelector.addObserver(new EmptyTabModelSelectorObserver() {
mTabModelSelectorObserver = new EmptyTabModelSelectorObserver() {
@Override
public void onTabModelSelected(TabModel newModel, TabModel oldModel) {
// TODO(crbug.com/982018): Optimize to not listen for selected Tab model change
// when overview is not shown.
updateIncognitoMode(newModel.isIncognito());
}
});
};
mPropertyModel.set(IS_INCOGNITO, mIsIncognito);
if (mSurfaceMode == SurfaceMode.TWO_PANES) {
......@@ -293,6 +296,9 @@ class StartSurfaceMediator
mNightModeStateProvider.isInNightMode()));
}
updateIncognitoMode(mTabModelSelector.isIncognitoSelected());
mTabModelSelector.addObserver(mTabModelSelectorObserver);
mPropertyModel.set(IS_SHOWING_OVERVIEW, true);
mFakeboxDelegate.addUrlFocusChangeListener(mUrlFocusChangeListener);
}
......@@ -361,6 +367,9 @@ class StartSurfaceMediator
if (mNormalTabModelObserver != null) {
mNormalTabModel.removeObserver(mNormalTabModelObserver);
}
if (mTabModelSelectorObserver != null) {
mTabModelSelector.removeObserver(mTabModelSelectorObserver);
}
}
for (StartSurface.OverviewModeObserver observer : mObservers) {
observer.startedHiding();
......
......@@ -131,7 +131,6 @@ public class StartSurfaceMediatorUnitTest {
doReturn(true).when(mLocationBarVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.TASKS_ONLY);
verify(mTabModelSelector).addObserver(mTabModelSelectorObserverCaptor.capture());
verify(mMainTabGridController)
.addOverviewModeObserver(mOverviewModeObserverCaptor.capture());
assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(false));
......@@ -249,6 +248,24 @@ public class StartSurfaceMediatorUnitTest {
verify(mNormalTabModel).removeObserver(mTabModelObserverCaptor.capture());
}
@Test
public void addAndRemoveTabModelSelectorObserverWithOverview() {
doReturn(false).when(mTabModelSelector).isIncognitoSelected();
doReturn(mLocationBarVoiceRecognitionHandler)
.when(mFakeBoxDelegate)
.getLocationBarVoiceRecognitionHandler();
doReturn(true).when(mLocationBarVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.SINGLE_PANE);
verify(mTabModelSelector, never()).addObserver(mTabModelSelectorObserverCaptor.capture());
mediator.showOverview(false);
verify(mTabModelSelector).addObserver(mTabModelSelectorObserverCaptor.capture());
mediator.startedHiding();
verify(mTabModelSelector).removeObserver(mTabModelSelectorObserverCaptor.capture());
}
private StartSurfaceMediator createStartSurfaceMediator(@SurfaceMode int mode) {
return new StartSurfaceMediator(mMainTabGridController, mTabModelSelector,
mode == SurfaceMode.NO_START_SURFACE ? null : 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