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

Exit tab group title editing when entering TabGridDialog selection mode

Bug: 1019101
Change-Id: Ie59028544a1953282a683f8740efc5fcc41e6d84
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1895161Reviewed-by: default avatarWei-Yin Chen (陳威尹) <wychen@chromium.org>
Commit-Queue: Yue Zhang <yuezhanggg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#713499}
parent f0fb5c1f
...@@ -102,6 +102,7 @@ public class TabGridDialogMediator { ...@@ -102,6 +102,7 @@ public class TabGridDialogMediator {
private int mCurrentTabId = Tab.INVALID_TAB_ID; private int mCurrentTabId = Tab.INVALID_TAB_ID;
private boolean mIsUpdatingTitle; private boolean mIsUpdatingTitle;
private String mCurrentGroupModifiedTitle; private String mCurrentGroupModifiedTitle;
private Callback<Integer> mToolbarMenuCallback;
TabGridDialogMediator(Context context, DialogController dialogController, PropertyModel model, TabGridDialogMediator(Context context, DialogController dialogController, PropertyModel model,
TabModelSelector tabModelSelector, TabCreatorManager tabCreatorManager, TabModelSelector tabModelSelector, TabCreatorManager tabCreatorManager,
...@@ -198,6 +199,14 @@ public class TabGridDialogMediator { ...@@ -198,6 +199,14 @@ public class TabGridDialogMediator {
assert mTabModelSelector.getTabModelFilterProvider().getCurrentTabModelFilter() assert mTabModelSelector.getTabModelFilterProvider().getCurrentTabModelFilter()
instanceof TabGroupModelFilter; instanceof TabGroupModelFilter;
mToolbarMenuCallback = result -> {
if (result == R.id.ungroup_tab) {
mModel.set(TabGridPanelProperties.IS_POPUP_WINDOW_FOCUSABLE, false);
List<Tab> tabs = getRelatedTabs(mCurrentTabId);
mTabSelectionEditorController.show(tabs);
}
};
// Setup toolbar button click listeners. // Setup toolbar button click listeners.
setupToolbarClickHandlers(); setupToolbarClickHandlers();
...@@ -411,13 +420,8 @@ public class TabGridDialogMediator { ...@@ -411,13 +420,8 @@ public class TabGridDialogMediator {
private View.OnClickListener getMenuButtonClickListener() { private View.OnClickListener getMenuButtonClickListener() {
assert mTabSelectionEditorController != null; assert mTabSelectionEditorController != null;
Callback<Integer> callback = result -> { return TabGridDialogMenuCoordinator.getTabGridDialogMenuOnClickListener(
if (result == R.id.ungroup_tab) { mToolbarMenuCallback);
List<Tab> tabs = getRelatedTabs(mCurrentTabId);
mTabSelectionEditorController.show(tabs);
}
};
return TabGridDialogMenuCoordinator.getTabGridDialogMenuOnClickListener(callback);
} }
private List<Tab> getRelatedTabs(int tabId) { private List<Tab> getRelatedTabs(int tabId) {
...@@ -502,4 +506,9 @@ public class TabGridDialogMediator { ...@@ -502,4 +506,9 @@ public class TabGridDialogMediator {
String getCurrentGroupModifiedTitleForTesting() { String getCurrentGroupModifiedTitleForTesting() {
return mCurrentGroupModifiedTitle; return mCurrentGroupModifiedTitle;
} }
@VisibleForTesting
Callback<Integer> getToolbarMenuCallbackForTesting() {
return mToolbarMenuCallback;
}
} }
...@@ -6,6 +6,7 @@ package org.chromium.chrome.browser.tasks.tab_management; ...@@ -6,6 +6,7 @@ package org.chromium.chrome.browser.tasks.tab_management;
import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.instanceOf; import static org.hamcrest.CoreMatchers.instanceOf;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull; import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThat; import static org.junit.Assert.assertThat;
import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.any;
...@@ -42,6 +43,7 @@ import org.mockito.Mock; ...@@ -42,6 +43,7 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import org.chromium.base.Callback;
import org.chromium.base.metrics.RecordHistogram; import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.metrics.RecordUserAction; import org.chromium.base.metrics.RecordUserAction;
import org.chromium.chrome.browser.ChromeFeatureList; import org.chromium.chrome.browser.ChromeFeatureList;
...@@ -918,6 +920,23 @@ public class TabGridDialogMediatorUnitTest { ...@@ -918,6 +920,23 @@ public class TabGridDialogMediatorUnitTest {
mModel.get(TabGridPanelProperties.HEADER_TITLE), equalTo(CUSTOMIZED_DIALOG_TITLE)); mModel.get(TabGridPanelProperties.HEADER_TITLE), equalTo(CUSTOMIZED_DIALOG_TITLE));
} }
@Test
@Features.EnableFeatures(ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID)
public void testDialogToolbarMenu_SelectionMode() {
Callback<Integer> callback = mMediator.getToolbarMenuCallbackForTesting();
// Mock that currently the popup window is focusable, and the current tab is tab1 which is
// in a group of {tab1, tab2}.
mModel.set(TabGridPanelProperties.IS_POPUP_WINDOW_FOCUSABLE, true);
mMediator.setCurrentTabIdForTest(TAB1_ID);
List<Tab> tabgroup = new ArrayList<>(Arrays.asList(mTab1, mTab2));
createTabGroup(tabgroup, TAB1_ID);
callback.onResult(R.id.ungroup_tab);
assertFalse(mModel.get(TabGridPanelProperties.IS_POPUP_WINDOW_FOCUSABLE));
verify(mTabSelectionEditorController).show(eq(tabgroup));
}
@Test @Test
public void destroy() { public void destroy() {
mMediator.destroy(); mMediator.destroy();
......
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