Commit b131742e authored by Charlene Yan's avatar Charlene Yan Committed by Commit Bot

[Tab Groups] Fix revert header drag by setting the drag boolean.

Bug: 1041636
Change-Id: Ic36f25c04f117af7695b6c0b00cdca89478ee84b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2005390Reviewed-by: default avatarConnie Wan <connily@chromium.org>
Commit-Queue: Charlene Yan <cyan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#732729}
parent b25016b9
......@@ -1584,7 +1584,9 @@ void TabDragController::PerformDeferredAttach() {
void TabDragController::RevertDrag() {
std::vector<TabSlotView*> views;
for (size_t i = 0; i < drag_data_.size(); ++i) {
if (header_drag_)
views.push_back(drag_data_[0].attached_view);
for (size_t i = first_tab_index(); i < drag_data_.size(); ++i) {
if (drag_data_[i].contents) {
// Contents is NULL if a tab was destroyed while the drag was under way.
views.push_back(drag_data_[i].attached_view);
......
......@@ -2061,6 +2061,92 @@ IN_PROC_BROWSER_TEST_P(DetachToBrowserTabDragControllerTestWithTabGroupsEnabled,
EXPECT_EQ(tab_strip2->GetGroupColorId(groups2[0]), group_color);
}
// Drags a tab group by the header to a new position and presses escape to
// revert the drag.
IN_PROC_BROWSER_TEST_P(DetachToBrowserTabDragControllerTestWithTabGroupsEnabled,
PressEscapeDuringHeaderDrag) {
TabStrip* tab_strip = GetTabStripForBrowser(browser());
TabStripModel* model = browser()->tab_strip_model();
AddTabsAndResetBrowser(browser(), 1);
tab_groups::TabGroupId group = model->AddToNewGroup({0});
StopAnimating(tab_strip);
TabGroupHeader* group_header = tab_strip->group_header(group);
EXPECT_FALSE(group_header->dragging());
ASSERT_TRUE(PressInput(GetCenterInScreenCoordinates(group_header)));
ASSERT_TRUE(DragInputTo(GetCenterInScreenCoordinates(tab_strip->tab_at(1))));
ASSERT_TRUE(group_header->dragging());
ASSERT_TRUE(ui_test_utils::SendKeyPressToWindowSync(
browser()->window()->GetNativeWindow(), ui::VKEY_ESCAPE, false, false,
false, false));
EXPECT_EQ(1u, browser_list->size());
EXPECT_FALSE(group_header->dragging());
EXPECT_EQ("0 1", IDString(browser()->tab_strip_model()));
std::vector<tab_groups::TabGroupId> groups =
model->group_model()->ListTabGroups();
EXPECT_EQ(1u, groups.size());
EXPECT_THAT(model->group_model()->GetTabGroup(groups[0])->ListTabs(),
testing::ElementsAre(0));
}
namespace {
void PressEscapeWhileDetachedHeaderStep2(
DetachToBrowserTabDragControllerTest* test) {
// At this moment there should be a new browser window for the dragged tabs.
EXPECT_EQ(2u, test->browser_list->size());
Browser* new_browser = test->browser_list->get(1);
std::vector<tab_groups::TabGroupId> new_browser_groups =
new_browser->tab_strip_model()->group_model()->ListTabGroups();
EXPECT_EQ(1u, new_browser_groups.size());
EXPECT_EQ(0u, test->browser()
->tab_strip_model()
->group_model()
->ListTabGroups()
.size());
TabGroupHeader* new_group_header =
GetTabStripForBrowser(new_browser)->group_header(new_browser_groups[0]);
EXPECT_TRUE(new_group_header->dragging());
ASSERT_TRUE(ui_test_utils::SendKeyPressToWindowSync(
new_browser->window()->GetNativeWindow(), ui::VKEY_ESCAPE, false, false,
false, false));
}
} // namespace
// Drags a tab group by the header and while detached presses escape to revert
// the drag.
IN_PROC_BROWSER_TEST_P(DetachToBrowserTabDragControllerTestWithTabGroupsEnabled,
PressEscapeDuringHeaderDragWhileDetached) {
TabStrip* tab_strip = GetTabStripForBrowser(browser());
TabStripModel* model = browser()->tab_strip_model();
AddTabsAndResetBrowser(browser(), 1);
tab_groups::TabGroupId group = model->AddToNewGroup({0});
StopAnimating(tab_strip);
DragGroupAndNotify(tab_strip,
base::BindOnce(&PressEscapeWhileDetachedHeaderStep2, this),
group);
TabGroupHeader* group_header =
GetTabStripForBrowser(browser())->group_header(group);
EXPECT_FALSE(group_header->dragging());
ASSERT_FALSE(tab_strip->GetDragContext()->IsDragSessionActive());
ASSERT_FALSE(TabDragController::IsActive());
EXPECT_EQ(1u, browser_list->size());
EXPECT_EQ("0 1", IDString(browser()->tab_strip_model()));
std::vector<tab_groups::TabGroupId> groups =
model->group_model()->ListTabGroups();
EXPECT_EQ(1u, groups.size());
EXPECT_THAT(model->group_model()->GetTabGroup(groups[0])->ListTabs(),
testing::ElementsAre(0));
}
namespace {
// Invoked from the nested run loop.
......
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