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; ...@@ -39,6 +39,7 @@ 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.TabModelObserver; import org.chromium.chrome.browser.tabmodel.TabModelObserver;
import org.chromium.chrome.browser.tabmodel.TabModelSelector; 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.browser.tasks.tab_management.TabSwitcher;
import org.chromium.chrome.start_surface.R; import org.chromium.chrome.start_surface.R;
import org.chromium.ui.modelutil.PropertyModel; import org.chromium.ui.modelutil.PropertyModel;
...@@ -96,6 +97,8 @@ class StartSurfaceMediator ...@@ -96,6 +97,8 @@ class StartSurfaceMediator
private TabModel mNormalTabModel; private TabModel mNormalTabModel;
@Nullable @Nullable
private TabModelObserver mNormalTabModelObserver; private TabModelObserver mNormalTabModelObserver;
@Nullable
private TabModelSelectorObserver mTabModelSelectorObserver;
StartSurfaceMediator(TabSwitcher.Controller controller, TabModelSelector tabModelSelector, StartSurfaceMediator(TabSwitcher.Controller controller, TabModelSelector tabModelSelector,
@Nullable PropertyModel propertyModel, @Nullable PropertyModel propertyModel,
...@@ -119,14 +122,14 @@ class StartSurfaceMediator ...@@ -119,14 +122,14 @@ class StartSurfaceMediator
mIsIncognito = mTabModelSelector.isIncognitoSelected(); mIsIncognito = mTabModelSelector.isIncognitoSelected();
mTabModelSelector.addObserver(new EmptyTabModelSelectorObserver() { mTabModelSelectorObserver = 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
// when overview is not shown. // when overview is not shown.
updateIncognitoMode(newModel.isIncognito()); updateIncognitoMode(newModel.isIncognito());
} }
}); };
mPropertyModel.set(IS_INCOGNITO, mIsIncognito); mPropertyModel.set(IS_INCOGNITO, mIsIncognito);
if (mSurfaceMode == SurfaceMode.TWO_PANES) { if (mSurfaceMode == SurfaceMode.TWO_PANES) {
...@@ -293,6 +296,9 @@ class StartSurfaceMediator ...@@ -293,6 +296,9 @@ class StartSurfaceMediator
mNightModeStateProvider.isInNightMode())); mNightModeStateProvider.isInNightMode()));
} }
updateIncognitoMode(mTabModelSelector.isIncognitoSelected());
mTabModelSelector.addObserver(mTabModelSelectorObserver);
mPropertyModel.set(IS_SHOWING_OVERVIEW, true); mPropertyModel.set(IS_SHOWING_OVERVIEW, true);
mFakeboxDelegate.addUrlFocusChangeListener(mUrlFocusChangeListener); mFakeboxDelegate.addUrlFocusChangeListener(mUrlFocusChangeListener);
} }
...@@ -361,6 +367,9 @@ class StartSurfaceMediator ...@@ -361,6 +367,9 @@ class StartSurfaceMediator
if (mNormalTabModelObserver != null) { if (mNormalTabModelObserver != null) {
mNormalTabModel.removeObserver(mNormalTabModelObserver); mNormalTabModel.removeObserver(mNormalTabModelObserver);
} }
if (mTabModelSelectorObserver != null) {
mTabModelSelector.removeObserver(mTabModelSelectorObserver);
}
} }
for (StartSurface.OverviewModeObserver observer : mObservers) { for (StartSurface.OverviewModeObserver observer : mObservers) {
observer.startedHiding(); observer.startedHiding();
......
...@@ -131,7 +131,6 @@ public class StartSurfaceMediatorUnitTest { ...@@ -131,7 +131,6 @@ public class StartSurfaceMediatorUnitTest {
doReturn(true).when(mLocationBarVoiceRecognitionHandler).isVoiceSearchEnabled(); doReturn(true).when(mLocationBarVoiceRecognitionHandler).isVoiceSearchEnabled();
StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.TASKS_ONLY); StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.TASKS_ONLY);
verify(mTabModelSelector).addObserver(mTabModelSelectorObserverCaptor.capture());
verify(mMainTabGridController) verify(mMainTabGridController)
.addOverviewModeObserver(mOverviewModeObserverCaptor.capture()); .addOverviewModeObserver(mOverviewModeObserverCaptor.capture());
assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(false)); assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(false));
...@@ -249,6 +248,24 @@ public class StartSurfaceMediatorUnitTest { ...@@ -249,6 +248,24 @@ public class StartSurfaceMediatorUnitTest {
verify(mNormalTabModel).removeObserver(mTabModelObserverCaptor.capture()); 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) { 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,
......
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