Commit 79921def authored by Yue Zhang's avatar Yue Zhang Committed by Commit Bot

Select the undo closure tab for conditional tab strip

Bug: 1078169
Change-Id: I62bd049309a19ef41bb503fcaff8e1c7ed998847
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2225533Reviewed-by: default avatarWei-Yin Chen (陳威尹) <wychen@chromium.org>
Commit-Queue: Yue Zhang <yuezhanggg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#774378}
parent b73ec9f3
...@@ -471,6 +471,12 @@ class TabListMediator { ...@@ -471,6 +471,12 @@ class TabListMediator {
@Override @Override
public void tabClosureUndone(Tab tab) { public void tabClosureUndone(Tab tab) {
onTabAdded(tab, !mActionsOnAllRelatedTabs); onTabAdded(tab, !mActionsOnAllRelatedTabs);
if (TabUiFeatureUtilities.isConditionalTabStripEnabled()) {
mTabModelSelector.getCurrentModel().setIndex(
TabModelUtils.getTabIndexById(
mTabModelSelector.getCurrentModel(), tab.getId()),
TabSelectionType.FROM_USER);
}
if (sTabClosedFromMapTabClosedFromMap.containsKey(tab.getId())) { if (sTabClosedFromMapTabClosedFromMap.containsKey(tab.getId())) {
@TabClosedFrom @TabClosedFrom
int from = sTabClosedFromMapTabClosedFromMap.get(tab.getId()); int from = sTabClosedFromMapTabClosedFromMap.get(tab.getId());
......
...@@ -323,17 +323,18 @@ public class ConditionalTabStripTest { ...@@ -323,17 +323,18 @@ public class ConditionalTabStripTest {
verifyShowingStrip(cta, false, 2); verifyShowingStrip(cta, false, 2);
verifyStripSelectedPosition(cta, 1); verifyStripSelectedPosition(cta, 1);
// Click the selected item to close the second-to-last tab, and the strip should be hidden // Click the selected item to close the last tab, and the strip should be hidden
// after closure. // after closure.
clickNthItemInStrip(1); clickNthItemInStrip(1);
verifyHidingStrip(); verifyHidingStrip();
verifyTabModelTabCount(cta, 1, 0); verifyTabModelTabCount(cta, 1, 0);
// Click undo to bring back the second-to-last tab, and should bring back the tab strip as // Click undo to bring back the last tab, and should bring back the tab strip as
// well. // well. Also, the tab whose closure is undone should be selected.
CriteriaHelper.pollInstrumentationThread(TabUiTestHelper::verifyUndoBarShowingAndClickUndo); CriteriaHelper.pollInstrumentationThread(TabUiTestHelper::verifyUndoBarShowingAndClickUndo);
verifyShowingStrip(cta, false, 2); verifyShowingStrip(cta, false, 2);
verifyTabModelTabCount(cta, 2, 0); verifyTabModelTabCount(cta, 2, 0);
verifyStripSelectedPosition(cta, 1);
// Disable undo snackbar and test continuous closures. // Disable undo snackbar and test continuous closures.
cta.getSnackbarManager().disableForTesting(); cta.getSnackbarManager().disableForTesting();
......
...@@ -29,6 +29,8 @@ import static org.mockito.Mockito.times; ...@@ -29,6 +29,8 @@ import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import static org.chromium.chrome.browser.flags.ChromeFeatureList.CONDITIONAL_TAB_STRIP_ANDROID;
import static org.chromium.chrome.browser.flags.ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID;
import static org.chromium.chrome.browser.flags.ChromeFeatureList.TAB_GROUPS_ANDROID; import static org.chromium.chrome.browser.flags.ChromeFeatureList.TAB_GROUPS_ANDROID;
import static org.chromium.chrome.browser.flags.ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID; import static org.chromium.chrome.browser.flags.ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID;
import static org.chromium.chrome.browser.tasks.tab_management.MessageCardViewProperties.MESSAGE_TYPE; import static org.chromium.chrome.browser.tasks.tab_management.MessageCardViewProperties.MESSAGE_TYPE;
...@@ -90,6 +92,7 @@ import org.chromium.chrome.browser.tab.TabCreationState; ...@@ -90,6 +92,7 @@ import org.chromium.chrome.browser.tab.TabCreationState;
import org.chromium.chrome.browser.tab.TabImpl; import org.chromium.chrome.browser.tab.TabImpl;
import org.chromium.chrome.browser.tab.TabLaunchType; import org.chromium.chrome.browser.tab.TabLaunchType;
import org.chromium.chrome.browser.tab.TabObserver; import org.chromium.chrome.browser.tab.TabObserver;
import org.chromium.chrome.browser.tab.TabSelectionType;
import org.chromium.chrome.browser.tabmodel.EmptyTabModelFilter; import org.chromium.chrome.browser.tabmodel.EmptyTabModelFilter;
import org.chromium.chrome.browser.tabmodel.TabModel; import org.chromium.chrome.browser.tabmodel.TabModel;
import org.chromium.chrome.browser.tabmodel.TabModelFilter; import org.chromium.chrome.browser.tabmodel.TabModelFilter;
...@@ -825,6 +828,27 @@ public class TabListMediatorUnitTest { ...@@ -825,6 +828,27 @@ public class TabListMediatorUnitTest {
assertThat(mModel.get(2).model.get(TabProperties.TITLE), equalTo(TAB3_TITLE)); assertThat(mModel.get(2).model.get(TabProperties.TITLE), equalTo(TAB3_TITLE));
} }
@Test
@Features.EnableFeatures({CONDITIONAL_TAB_STRIP_ANDROID})
@Features.DisableFeatures({TAB_GRID_LAYOUT_ANDROID, TAB_GROUPS_ANDROID})
public void tabClosureUndone_CTS() {
initAndAssertAllProperties();
TabImpl newTab = prepareTab(TAB3_ID, TAB3_TITLE, TAB3_URL);
doReturn(3).when(mTabModel).getCount();
doReturn(newTab).when(mTabModel).getTabAt(2);
doReturn(Arrays.asList(mTab1, mTab2, newTab))
.when(mTabModelFilter)
.getRelatedTabList(eq(TAB1_ID));
mTabModelObserverCaptor.getValue().tabClosureUndone(newTab);
assertThat(mModel.size(), equalTo(3));
assertThat(mModel.get(2).model.get(TabProperties.TAB_ID), equalTo(TAB3_ID));
assertThat(mModel.get(2).model.get(TabProperties.TITLE), equalTo(TAB3_TITLE));
verify(mTabModel).setIndex(eq(2), eq(TabSelectionType.FROM_USER));
}
@Test @Test
public void tabMergeIntoGroup() { public void tabMergeIntoGroup() {
setUpForTabGroupOperation(TabListMediatorType.TAB_SWITCHER); setUpForTabGroupOperation(TabListMediatorType.TAB_SWITCHER);
......
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