Commit 0f3533f7 authored by Charlene Yan's avatar Charlene Yan Committed by Commit Bot

[Tab Groups] Add interactive browser tests for the tab editor bubble.

Bug: 1033962
Change-Id: Idbc5d1108a43d6de1637f40caddadfa42be005fd
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1990334Reviewed-by: default avatarCharlene Yan <cyan@chromium.org>
Reviewed-by: default avatarConnie Wan <connily@chromium.org>
Commit-Queue: Charlene Yan <cyan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#729479}
parent a36be171
......@@ -38,14 +38,6 @@
#include "ui/views/layout/layout_types.h"
#include "ui/views/view_class_properties.h"
namespace {
constexpr int TAB_GROUP_HEADER_CXMENU_NEW_TAB_IN_GROUP = 13;
constexpr int TAB_GROUP_HEADER_CXMENU_UNGROUP = 14;
constexpr int TAB_GROUP_HEADER_CXMENU_CLOSE_GROUP = 15;
constexpr int TAB_GROUP_HEADER_CXMENU_FEEDBACK = 16;
} // namespace
// static
views::Widget* TabGroupEditorBubbleView::Show(
TabGroupHeader* anchor_view,
......
......@@ -29,6 +29,11 @@ class TabGroupHeader;
// A dialog for changing a tab group's visual parameters.
class TabGroupEditorBubbleView : public views::BubbleDialogDelegateView {
public:
static constexpr int TAB_GROUP_HEADER_CXMENU_NEW_TAB_IN_GROUP = 13;
static constexpr int TAB_GROUP_HEADER_CXMENU_UNGROUP = 14;
static constexpr int TAB_GROUP_HEADER_CXMENU_CLOSE_GROUP = 15;
static constexpr int TAB_GROUP_HEADER_CXMENU_FEEDBACK = 16;
// Shows the editor for |group|. Returns an *unowned* pointer to the
// bubble's widget.
static views::Widget* Show(TabGroupHeader* anchor_view,
......
......@@ -5,6 +5,8 @@
#include "chrome/browser/ui/views/tabs/tab_group_editor_bubble_view.h"
#include "base/time/time.h"
#include "chrome/browser/ui/tabs/tab_group.h"
#include "chrome/browser/ui/tabs/tab_group_model.h"
#include "chrome/browser/ui/test/test_browser_dialog.h"
#include "chrome/browser/ui/views/frame/browser_view.h"
#include "chrome/browser/ui/views/tabs/tab_group_header.h"
......@@ -13,6 +15,7 @@
#include "components/tab_groups/tab_group_id.h"
#include "ui/events/event.h"
#include "ui/gfx/geometry/point_f.h"
#include "ui/views/test/button_test_api.h"
class TabGroupEditorBubbleViewDialogBrowserTest : public DialogBrowserTest {
protected:
......@@ -21,17 +24,27 @@ class TabGroupEditorBubbleViewDialogBrowserTest : public DialogBrowserTest {
browser()->tab_strip_model()->AddToNewGroup({0});
BrowserView* browser_view = static_cast<BrowserView*>(browser()->window());
TabGroupHeader* header =
browser_view->tabstrip()->group_views_[group]->header();
TabGroupHeader* header = browser_view->tabstrip()->group_header(group);
ASSERT_NE(nullptr, header);
ASSERT_FALSE(header->editor_bubble_tracker_.is_open());
ui::MouseEvent pressed_event(ui::ET_MOUSE_PRESSED, gfx::PointF(),
gfx::PointF(), base::TimeTicks(), 0, 0);
header->OnMousePressed(pressed_event);
ASSERT_FALSE(header->editor_bubble_tracker_.is_open());
ui::MouseEvent released_event(ui::ET_MOUSE_RELEASED, gfx::PointF(),
gfx::PointF(), base::TimeTicks(), 0, 0);
header->OnMouseReleased(released_event);
ASSERT_TRUE(header->editor_bubble_tracker_.is_open());
}
static views::Widget* GetEditorBubbleWidget(const TabGroupHeader* header) {
return header->editor_bubble_tracker_.is_open()
? header->editor_bubble_tracker_.widget()
: nullptr;
}
};
......@@ -39,3 +52,90 @@ IN_PROC_BROWSER_TEST_F(TabGroupEditorBubbleViewDialogBrowserTest,
InvokeUi_default) {
ShowAndVerifyUi();
}
IN_PROC_BROWSER_TEST_F(TabGroupEditorBubbleViewDialogBrowserTest,
NewTabInGroup) {
ShowUi("SetUp");
TabGroupModel* group_model = browser()->tab_strip_model()->group_model();
std::vector<tab_groups::TabGroupId> group_list = group_model->ListTabGroups();
ASSERT_EQ(1u, group_list.size());
ASSERT_EQ(1u, group_model->GetTabGroup(group_list[0])->ListTabs().size());
BrowserView* browser_view = static_cast<BrowserView*>(browser()->window());
TabGroupHeader* header =
browser_view->tabstrip()->group_header(group_list[0]);
views::Widget* editor_bubble = GetEditorBubbleWidget(header);
ASSERT_NE(nullptr, editor_bubble);
views::Button* const new_tab_button =
views::Button::AsButton(editor_bubble->GetContentsView()->GetViewByID(
TabGroupEditorBubbleView::TAB_GROUP_HEADER_CXMENU_NEW_TAB_IN_GROUP));
EXPECT_NE(nullptr, new_tab_button);
ui::MouseEvent released_event(ui::ET_MOUSE_RELEASED, gfx::PointF(),
gfx::PointF(), base::TimeTicks(), 0, 0);
views::test::ButtonTestApi(new_tab_button).NotifyClick(released_event);
EXPECT_EQ(2u, group_model->GetTabGroup(group_list[0])->ListTabs().size());
}
IN_PROC_BROWSER_TEST_F(TabGroupEditorBubbleViewDialogBrowserTest, Ungroup) {
ShowUi("SetUp");
TabStripModel* tsm = browser()->tab_strip_model();
ASSERT_EQ(1, tsm->count());
TabGroupModel* group_model = tsm->group_model();
std::vector<tab_groups::TabGroupId> group_list = group_model->ListTabGroups();
ASSERT_EQ(1u, group_list.size());
ASSERT_EQ(1u, group_model->GetTabGroup(group_list[0])->ListTabs().size());
BrowserView* browser_view = static_cast<BrowserView*>(browser()->window());
TabGroupHeader* header =
browser_view->tabstrip()->group_header(group_list[0]);
views::Widget* editor_bubble = GetEditorBubbleWidget(header);
ASSERT_NE(nullptr, editor_bubble);
views::Button* const ungroup_button =
views::Button::AsButton(editor_bubble->GetContentsView()->GetViewByID(
TabGroupEditorBubbleView::TAB_GROUP_HEADER_CXMENU_UNGROUP));
EXPECT_NE(nullptr, ungroup_button);
ui::MouseEvent released_event(ui::ET_MOUSE_RELEASED, gfx::PointF(),
gfx::PointF(), base::TimeTicks(), 0, 0);
views::test::ButtonTestApi(ungroup_button).NotifyClick(released_event);
EXPECT_EQ(0u, group_model->ListTabGroups().size());
EXPECT_FALSE(group_model->ContainsTabGroup(group_list[0]));
EXPECT_EQ(1, tsm->count());
}
IN_PROC_BROWSER_TEST_F(TabGroupEditorBubbleViewDialogBrowserTest,
CloseGroupClosesBrowser) {
ShowUi("SetUp");
TabGroupModel* group_model = browser()->tab_strip_model()->group_model();
std::vector<tab_groups::TabGroupId> group_list = group_model->ListTabGroups();
ASSERT_EQ(1u, group_list.size());
ASSERT_EQ(1u, group_model->GetTabGroup(group_list[0])->ListTabs().size());
BrowserView* browser_view = static_cast<BrowserView*>(browser()->window());
TabGroupHeader* header =
browser_view->tabstrip()->group_header(group_list[0]);
views::Widget* editor_bubble = GetEditorBubbleWidget(header);
ASSERT_NE(nullptr, editor_bubble);
views::Button* const close_group_button =
views::Button::AsButton(editor_bubble->GetContentsView()->GetViewByID(
TabGroupEditorBubbleView::TAB_GROUP_HEADER_CXMENU_CLOSE_GROUP));
EXPECT_NE(nullptr, close_group_button);
ui::MouseEvent released_event(ui::ET_MOUSE_RELEASED, gfx::PointF(),
gfx::PointF(), base::TimeTicks(), 0, 0);
views::test::ButtonTestApi(close_group_button).NotifyClick(released_event);
EXPECT_EQ(0u, group_model->ListTabGroups().size());
EXPECT_FALSE(group_model->ContainsTabGroup(group_list[0]));
EXPECT_EQ(0, browser()->tab_strip_model()->count());
EXPECT_TRUE(browser()->IsAttemptingToCloseBrowser());
}
......@@ -43,6 +43,8 @@ class TabGroupHeader : public TabSlotView {
void RemoveObserverFromWidget(views::Widget* widget);
private:
friend class TabGroupEditorBubbleViewDialogBrowserTest;
// Calculate the width for this View.
int CalculateWidth() const;
......@@ -60,6 +62,7 @@ class TabGroupHeader : public TabSlotView {
void Opened(views::Widget* bubble_widget);
bool is_open() const { return is_open_; }
views::Widget* widget() const { return widget_; }
// views::WidgetObserver:
void OnWidgetDestroyed(views::Widget* widget) override;
......
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