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 {
@Override
public void tabClosureUndone(Tab tab) {
onTabAdded(tab, !mActionsOnAllRelatedTabs);
if (TabUiFeatureUtilities.isConditionalTabStripEnabled()) {
mTabModelSelector.getCurrentModel().setIndex(
TabModelUtils.getTabIndexById(
mTabModelSelector.getCurrentModel(), tab.getId()),
TabSelectionType.FROM_USER);
}
if (sTabClosedFromMapTabClosedFromMap.containsKey(tab.getId())) {
@TabClosedFrom
int from = sTabClosedFromMapTabClosedFromMap.get(tab.getId());
......
......@@ -323,17 +323,18 @@ public class ConditionalTabStripTest {
verifyShowingStrip(cta, false, 2);
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.
clickNthItemInStrip(1);
verifyHidingStrip();
verifyTabModelTabCount(cta, 1, 0);
// Click undo to bring back the second-to-last tab, and should bring back the tab strip as
// well.
// Click undo to bring back the last tab, and should bring back the tab strip as
// well. Also, the tab whose closure is undone should be selected.
CriteriaHelper.pollInstrumentationThread(TabUiTestHelper::verifyUndoBarShowingAndClickUndo);
verifyShowingStrip(cta, false, 2);
verifyTabModelTabCount(cta, 2, 0);
verifyStripSelectedPosition(cta, 1);
// Disable undo snackbar and test continuous closures.
cta.getSnackbarManager().disableForTesting();
......
......@@ -29,6 +29,8 @@ import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
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_CONTINUATION_ANDROID;
import static org.chromium.chrome.browser.tasks.tab_management.MessageCardViewProperties.MESSAGE_TYPE;
......@@ -90,6 +92,7 @@ import org.chromium.chrome.browser.tab.TabCreationState;
import org.chromium.chrome.browser.tab.TabImpl;
import org.chromium.chrome.browser.tab.TabLaunchType;
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.TabModel;
import org.chromium.chrome.browser.tabmodel.TabModelFilter;
......@@ -825,6 +828,27 @@ public class TabListMediatorUnitTest {
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
public void tabMergeIntoGroup() {
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