Commit 2d74c601 authored by Yue Zhang's avatar Yue Zhang Committed by Commit Bot

Cancel dialog animation when immediate tab model selection happens

When user clicks on top tool bar toggle to switch between incognito/
normal mode right after the dialog animation starts, the animation
continues and the dialog shows up while the tab model has already
changed which causes dialog malfunction. This CL fixes this issue.

Bug: 987227
Change-Id: I0e47119ed19627f4227e183454276dbdc5c2db06
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1717325Reviewed-by: default avatarYusuf Ozuysal <yusufo@chromium.org>
Reviewed-by: default avatarWei-Yin Chen (陳威尹) <wychen@chromium.org>
Commit-Queue: Yue Zhang <yuezhanggg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#681330}
parent 0b22acf2
...@@ -174,6 +174,7 @@ class GridTabSwitcherMediator implements GridTabSwitcher.GridController, ...@@ -174,6 +174,7 @@ class GridTabSwitcherMediator implements GridTabSwitcher.GridController,
mTabModelSelector.getTabModelFilterProvider().getCurrentTabModelFilter(); mTabModelSelector.getTabModelFilterProvider().getCurrentTabModelFilter();
mResetHandler.resetWithTabList(currentTabModelFilter, false); mResetHandler.resetWithTabList(currentTabModelFilter, false);
mContainerViewModel.set(IS_INCOGNITO, currentTabModelFilter.isIncognito()); mContainerViewModel.set(IS_INCOGNITO, currentTabModelFilter.isIncognito());
mTabGridDialogResetHandler.hideDialog(false);
} }
}; };
mTabModelSelector.addObserver(mTabModelSelectorObserver); mTabModelSelector.addObserver(mTabModelSelectorObserver);
......
...@@ -113,6 +113,8 @@ public class GridTabSwitcherMediatorUnitTest { ...@@ -113,6 +113,8 @@ public class GridTabSwitcherMediatorUnitTest {
CompositorViewHolder mCompositorViewHolder; CompositorViewHolder mCompositorViewHolder;
@Mock @Mock
Layout mLayout; Layout mLayout;
@Mock
TabGridDialogMediator.ResetHandler mTabGridDialogResetHandler;
@Captor @Captor
ArgumentCaptor<TabModelObserver> mTabModelObserverCaptor; ArgumentCaptor<TabModelObserver> mTabModelObserverCaptor;
...@@ -180,6 +182,7 @@ public class GridTabSwitcherMediatorUnitTest { ...@@ -180,6 +182,7 @@ public class GridTabSwitcherMediatorUnitTest {
mFullscreenManager, mCompositorViewHolder, null); mFullscreenManager, mCompositorViewHolder, null);
mMediator.addOverviewModeObserver(mOverviewModeObserver); mMediator.addOverviewModeObserver(mOverviewModeObserver);
mMediator.setOnTabSelectingListener(mLayout::onTabSelecting); mMediator.setOnTabSelectingListener(mLayout::onTabSelecting);
mMediator.setTabGridDialogResetHandler(mTabGridDialogResetHandler);
} }
@After @After
...@@ -273,6 +276,7 @@ public class GridTabSwitcherMediatorUnitTest { ...@@ -273,6 +276,7 @@ public class GridTabSwitcherMediatorUnitTest {
mModel.get(TabListContainerProperties.ANIMATE_VISIBILITY_CHANGES), equalTo(true)); mModel.get(TabListContainerProperties.ANIMATE_VISIBILITY_CHANGES), equalTo(true));
assertThat(mModel.get(TabListContainerProperties.IS_VISIBLE), equalTo(false)); assertThat(mModel.get(TabListContainerProperties.IS_VISIBLE), equalTo(false));
assertThat(mMediator.overviewVisible(), equalTo(false)); assertThat(mMediator.overviewVisible(), equalTo(false));
verify(mTabGridDialogResetHandler).hideDialog(eq(false));
} }
@Test @Test
...@@ -298,6 +302,7 @@ public class GridTabSwitcherMediatorUnitTest { ...@@ -298,6 +302,7 @@ public class GridTabSwitcherMediatorUnitTest {
mModel.get(TabListContainerProperties.ANIMATE_VISIBILITY_CHANGES), equalTo(true)); mModel.get(TabListContainerProperties.ANIMATE_VISIBILITY_CHANGES), equalTo(true));
assertThat(mModel.get(TabListContainerProperties.IS_VISIBLE), equalTo(false)); assertThat(mModel.get(TabListContainerProperties.IS_VISIBLE), equalTo(false));
assertThat(mMediator.overviewVisible(), equalTo(false)); assertThat(mMediator.overviewVisible(), equalTo(false));
verify(mTabGridDialogResetHandler).hideDialog(eq(false));
} }
@Test @Test
...@@ -345,6 +350,7 @@ public class GridTabSwitcherMediatorUnitTest { ...@@ -345,6 +350,7 @@ public class GridTabSwitcherMediatorUnitTest {
doReturn(true).when(mTabModelFilter).isIncognito(); doReturn(true).when(mTabModelFilter).isIncognito();
mTabModelSelectorObserverCaptor.getValue().onTabModelSelected(mTabModel, null); mTabModelSelectorObserverCaptor.getValue().onTabModelSelected(mTabModel, null);
verify(mResetHandler).resetWithTabList(eq(mTabModelFilter), eq(false)); verify(mResetHandler).resetWithTabList(eq(mTabModelFilter), eq(false));
verify(mTabGridDialogResetHandler).hideDialog(eq(false));
assertThat(mModel.get(TabListContainerProperties.IS_INCOGNITO), equalTo(true)); assertThat(mModel.get(TabListContainerProperties.IS_INCOGNITO), equalTo(true));
// Switching TabModels by itself shouldn't cause visibility changes. // Switching TabModels by itself shouldn't cause visibility changes.
......
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