| Index: chrome/browser/ui/views/toolbar/toolbar_actions_bar_bubble_views_unittest.cc
|
| diff --git a/chrome/browser/ui/views/toolbar/toolbar_actions_bar_bubble_views_unittest.cc b/chrome/browser/ui/views/toolbar/toolbar_actions_bar_bubble_views_unittest.cc
|
| index 16f59b24fa91fd7cef37b231a289b8257c4b186a..39754c7aa3c29898ee78746db3494c000a25c3dd 100644
|
| --- a/chrome/browser/ui/views/toolbar/toolbar_actions_bar_bubble_views_unittest.cc
|
| +++ b/chrome/browser/ui/views/toolbar/toolbar_actions_bar_bubble_views_unittest.cc
|
| @@ -11,6 +11,7 @@
|
| #include "ui/events/test/event_generator.h"
|
| #include "ui/views/bubble/bubble_delegate.h"
|
| #include "ui/views/controls/button/label_button.h"
|
| +#include "ui/views/controls/link.h"
|
| #include "ui/views/test/test_widget_observer.h"
|
| #include "ui/views/test/views_test_base.h"
|
| #include "ui/views/widget/widget.h"
|
| @@ -27,6 +28,14 @@ gfx::Point GetCenterInScreenCoordinates(const views::View* view) {
|
|
|
| class ToolbarActionsBarBubbleViewsTest : public views::ViewsTestBase {
|
| protected:
|
| + ToolbarActionsBarBubbleViewsTest() {}
|
| + ~ToolbarActionsBarBubbleViewsTest() override {}
|
| +
|
| + void TearDown() override {
|
| + anchor_widget_.reset();
|
| + views::ViewsTestBase::TearDown();
|
| + }
|
| +
|
| std::unique_ptr<views::Widget> CreateAnchorWidget() {
|
| std::unique_ptr<views::Widget> anchor_widget(new views::Widget());
|
| views::Widget::InitParams params =
|
| @@ -36,55 +45,136 @@ class ToolbarActionsBarBubbleViewsTest : public views::ViewsTestBase {
|
| return anchor_widget;
|
| }
|
|
|
| + void ShowBubble(TestToolbarActionsBarBubbleDelegate* delegate) {
|
| + ASSERT_TRUE(delegate);
|
| + ASSERT_FALSE(bubble_widget_);
|
| + ASSERT_FALSE(bubble_);
|
| + anchor_widget_ = CreateAnchorWidget();
|
| + bubble_ = new ToolbarActionsBarBubbleViews(
|
| + anchor_widget_->GetContentsView(), delegate->GetDelegate());
|
| + bubble_widget_ =
|
| + views::BubbleDelegateView::CreateBubble(bubble_);
|
| + bubble_->Show();
|
| + }
|
| +
|
| + void CloseBubble() {
|
| + ASSERT_TRUE(bubble_);
|
| + bubble_->GetWidget()->Close();
|
| + base::RunLoop().RunUntilIdle();
|
| + bubble_ = nullptr;
|
| + bubble_widget_ = nullptr;
|
| + }
|
| +
|
| + void ClickView(const views::View* view) {
|
| + ASSERT_TRUE(view);
|
| + ui::test::EventGenerator generator(GetContext(),
|
| + anchor_widget_->GetNativeWindow());
|
| + generator.MoveMouseTo(GetCenterInScreenCoordinates(view));
|
| + generator.ClickLeftButton();
|
| + base::RunLoop().RunUntilIdle();
|
| + }
|
| +
|
| base::string16 HeadingString() { return base::ASCIIToUTF16("Heading"); }
|
| base::string16 BodyString() { return base::ASCIIToUTF16("Body"); }
|
| base::string16 ActionString() { return base::ASCIIToUTF16("Action"); }
|
| base::string16 DismissString() { return base::ASCIIToUTF16("Dismiss"); }
|
| + base::string16 LearnMoreString() { return base::ASCIIToUTF16("Learn"); }
|
| + base::string16 ItemListString() {
|
| + return base::ASCIIToUTF16("Item 1\nItem2");
|
| + }
|
| +
|
| + views::Widget* anchor_widget() { return anchor_widget_.get(); }
|
| + views::Widget* bubble_widget() { return bubble_widget_; }
|
| + ToolbarActionsBarBubbleViews* bubble() { return bubble_; }
|
| +
|
| + private:
|
| + std::unique_ptr<views::Widget> anchor_widget_;
|
| + views::Widget* bubble_widget_ = nullptr;
|
| + ToolbarActionsBarBubbleViews* bubble_ = nullptr;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(ToolbarActionsBarBubbleViewsTest);
|
| };
|
|
|
| TEST_F(ToolbarActionsBarBubbleViewsTest, TestBubbleLayoutActionButton) {
|
| - std::unique_ptr<views::Widget> anchor_widget = CreateAnchorWidget();
|
| TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(),
|
| ActionString());
|
| - ToolbarActionsBarBubbleViews* bubble = new ToolbarActionsBarBubbleViews(
|
| - anchor_widget->GetContentsView(), delegate.GetDelegate());
|
| - views::BubbleDelegateView::CreateBubble(bubble);
|
| - bubble->Show();
|
| + ShowBubble(&delegate);
|
|
|
| - EXPECT_TRUE(bubble->heading_label());
|
| - EXPECT_EQ(HeadingString(), bubble->heading_label()->text());
|
| - EXPECT_TRUE(bubble->content_label());
|
| - EXPECT_EQ(BodyString(), bubble->content_label()->text());
|
| - EXPECT_TRUE(bubble->action_button());
|
| - EXPECT_EQ(ActionString(), bubble->action_button()->GetText());
|
| - EXPECT_FALSE(bubble->dismiss_button());
|
| + EXPECT_TRUE(bubble()->heading_label());
|
| + EXPECT_EQ(HeadingString(), bubble()->heading_label()->text());
|
| + EXPECT_TRUE(bubble()->content_label());
|
| + EXPECT_EQ(BodyString(), bubble()->content_label()->text());
|
| + EXPECT_TRUE(bubble()->action_button());
|
| + EXPECT_EQ(ActionString(), bubble()->action_button()->GetText());
|
| + EXPECT_FALSE(bubble()->dismiss_button());
|
| + EXPECT_FALSE(bubble()->learn_more_button());
|
| + EXPECT_FALSE(bubble()->item_list());
|
|
|
| - bubble->GetWidget()->Close();
|
| - base::RunLoop().RunUntilIdle();
|
| + CloseBubble();
|
| }
|
|
|
| TEST_F(ToolbarActionsBarBubbleViewsTest,
|
| TestBubbleLayoutActionAndDismissButton) {
|
| - std::unique_ptr<views::Widget> anchor_widget = CreateAnchorWidget();
|
| TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(),
|
| ActionString());
|
| delegate.set_dismiss_button_text(DismissString());
|
| - ToolbarActionsBarBubbleViews* bubble = new ToolbarActionsBarBubbleViews(
|
| - anchor_widget->GetContentsView(), delegate.GetDelegate());
|
| - views::BubbleDelegateView::CreateBubble(bubble);
|
| - bubble->Show();
|
| + ShowBubble(&delegate);
|
|
|
| - EXPECT_TRUE(bubble->heading_label());
|
| - EXPECT_EQ(HeadingString(), bubble->heading_label()->text());
|
| - EXPECT_TRUE(bubble->content_label());
|
| - EXPECT_EQ(BodyString(), bubble->content_label()->text());
|
| - EXPECT_TRUE(bubble->action_button());
|
| - EXPECT_EQ(ActionString(), bubble->action_button()->GetText());
|
| - EXPECT_TRUE(bubble->dismiss_button());
|
| - EXPECT_EQ(DismissString(), bubble->dismiss_button()->GetText());
|
| + EXPECT_TRUE(bubble()->heading_label());
|
| + EXPECT_EQ(HeadingString(), bubble()->heading_label()->text());
|
| + EXPECT_TRUE(bubble()->content_label());
|
| + EXPECT_EQ(BodyString(), bubble()->content_label()->text());
|
| + EXPECT_TRUE(bubble()->action_button());
|
| + EXPECT_EQ(ActionString(), bubble()->action_button()->GetText());
|
| + EXPECT_TRUE(bubble()->dismiss_button());
|
| + EXPECT_EQ(DismissString(), bubble()->dismiss_button()->GetText());
|
| + EXPECT_FALSE(bubble()->learn_more_button());
|
| + EXPECT_FALSE(bubble()->item_list());
|
|
|
| - bubble->GetWidget()->Close();
|
| - base::RunLoop().RunUntilIdle();
|
| + CloseBubble();
|
| +}
|
| +
|
| +TEST_F(ToolbarActionsBarBubbleViewsTest,
|
| + TestBubbleLayoutActionDismissAndLearnMoreButton) {
|
| + TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(),
|
| + ActionString());
|
| + delegate.set_dismiss_button_text(DismissString());
|
| + delegate.set_learn_more_button_text(LearnMoreString());
|
| + ShowBubble(&delegate);
|
| +
|
| + EXPECT_TRUE(bubble()->heading_label());
|
| + EXPECT_EQ(HeadingString(), bubble()->heading_label()->text());
|
| + EXPECT_TRUE(bubble()->content_label());
|
| + EXPECT_EQ(BodyString(), bubble()->content_label()->text());
|
| + EXPECT_TRUE(bubble()->action_button());
|
| + EXPECT_EQ(ActionString(), bubble()->action_button()->GetText());
|
| + EXPECT_TRUE(bubble()->dismiss_button());
|
| + EXPECT_EQ(DismissString(), bubble()->dismiss_button()->GetText());
|
| + EXPECT_TRUE(bubble()->learn_more_button());
|
| + EXPECT_EQ(LearnMoreString(), bubble()->learn_more_button()->text());
|
| + EXPECT_FALSE(bubble()->item_list());
|
| +
|
| + CloseBubble();
|
| +}
|
| +
|
| +TEST_F(ToolbarActionsBarBubbleViewsTest, TestBubbleLayoutListView) {
|
| + TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(),
|
| + ActionString());
|
| + delegate.set_item_list_text(ItemListString());
|
| + ShowBubble(&delegate);
|
| +
|
| + EXPECT_TRUE(bubble()->heading_label());
|
| + EXPECT_EQ(HeadingString(), bubble()->heading_label()->text());
|
| + EXPECT_TRUE(bubble()->content_label());
|
| + EXPECT_EQ(BodyString(), bubble()->content_label()->text());
|
| + EXPECT_TRUE(bubble()->action_button());
|
| + EXPECT_EQ(ActionString(), bubble()->action_button()->GetText());
|
| + EXPECT_FALSE(bubble()->dismiss_button());
|
| + EXPECT_FALSE(bubble()->learn_more_button());
|
| + EXPECT_TRUE(bubble()->item_list());
|
| + EXPECT_EQ(ItemListString(), bubble()->item_list()->text());
|
| +
|
| + CloseBubble();
|
| }
|
|
|
| TEST_F(ToolbarActionsBarBubbleViewsTest, TestShowAndCloseBubble) {
|
| @@ -113,45 +203,61 @@ TEST_F(ToolbarActionsBarBubbleViewsTest, TestShowAndCloseBubble) {
|
| }
|
|
|
| TEST_F(ToolbarActionsBarBubbleViewsTest, TestClickActionButton) {
|
| - std::unique_ptr<views::Widget> anchor_widget = CreateAnchorWidget();
|
| TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(),
|
| ActionString());
|
| delegate.set_dismiss_button_text(DismissString());
|
| - ToolbarActionsBarBubbleViews* bubble = new ToolbarActionsBarBubbleViews(
|
| - anchor_widget->GetContentsView(), delegate.GetDelegate());
|
| - views::Widget* bubble_widget =
|
| - views::BubbleDelegateView::CreateBubble(bubble);
|
| - views::test::TestWidgetObserver bubble_observer(bubble_widget);
|
| - bubble->Show();
|
| + delegate.set_learn_more_button_text(LearnMoreString());
|
| + ShowBubble(&delegate);
|
| + views::test::TestWidgetObserver bubble_observer(bubble_widget());
|
|
|
| EXPECT_FALSE(delegate.close_action());
|
| - ui::test::EventGenerator generator(GetContext(),
|
| - anchor_widget->GetNativeWindow());
|
| - generator.MoveMouseTo(GetCenterInScreenCoordinates(bubble->action_button()));
|
| - generator.ClickLeftButton();
|
| - base::RunLoop().RunUntilIdle();
|
| + ClickView(bubble()->action_button());
|
| ASSERT_TRUE(delegate.close_action());
|
| EXPECT_EQ(ToolbarActionsBarBubbleDelegate::CLOSE_EXECUTE,
|
| *delegate.close_action());
|
| EXPECT_TRUE(bubble_observer.widget_closed());
|
| }
|
|
|
| -TEST_F(ToolbarActionsBarBubbleViewsTest, TestCloseOnDeactivation) {
|
| - std::unique_ptr<views::Widget> anchor_widget = CreateAnchorWidget();
|
| +TEST_F(ToolbarActionsBarBubbleViewsTest, TestClickDismissButton) {
|
| TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(),
|
| ActionString());
|
| delegate.set_dismiss_button_text(DismissString());
|
| - ToolbarActionsBarBubbleViews* bubble = new ToolbarActionsBarBubbleViews(
|
| - anchor_widget->GetContentsView(), delegate.GetDelegate());
|
| - views::Widget* bubble_widget =
|
| - views::BubbleDelegateView::CreateBubble(bubble);
|
| - views::test::TestWidgetObserver bubble_observer(bubble_widget);
|
| - bubble->Show();
|
| + delegate.set_learn_more_button_text(LearnMoreString());
|
| + ShowBubble(&delegate);
|
| + views::test::TestWidgetObserver bubble_observer(bubble_widget());
|
| +
|
| + EXPECT_FALSE(delegate.close_action());
|
| + ClickView(bubble()->dismiss_button());
|
| + ASSERT_TRUE(delegate.close_action());
|
| + EXPECT_EQ(ToolbarActionsBarBubbleDelegate::CLOSE_DISMISS_USER_ACTION,
|
| + *delegate.close_action());
|
| +}
|
| +
|
| +TEST_F(ToolbarActionsBarBubbleViewsTest, TestClickLearnMoreLink) {
|
| + TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(),
|
| + ActionString());
|
| + delegate.set_dismiss_button_text(DismissString());
|
| + delegate.set_learn_more_button_text(LearnMoreString());
|
| + ShowBubble(&delegate);
|
| + views::test::TestWidgetObserver bubble_observer(bubble_widget());
|
| +
|
| + EXPECT_FALSE(delegate.close_action());
|
| + ClickView(bubble()->learn_more_button());
|
| + ASSERT_TRUE(delegate.close_action());
|
| + EXPECT_EQ(ToolbarActionsBarBubbleDelegate::CLOSE_LEARN_MORE,
|
| + *delegate.close_action());
|
| +}
|
| +
|
| +TEST_F(ToolbarActionsBarBubbleViewsTest, TestCloseOnDeactivation) {
|
| + TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(),
|
| + ActionString());
|
| + ShowBubble(&delegate);
|
| + views::test::TestWidgetObserver bubble_observer(bubble_widget());
|
|
|
| EXPECT_FALSE(delegate.close_action());
|
| // Close the bubble by activating another widget. The delegate should be
|
| // told it was dismissed.
|
| - anchor_widget->Activate();
|
| + anchor_widget()->Activate();
|
| base::RunLoop().RunUntilIdle();
|
| ASSERT_TRUE(delegate.close_action());
|
| EXPECT_EQ(ToolbarActionsBarBubbleDelegate::CLOSE_DISMISS_DEACTIVATION,
|
| @@ -160,23 +266,16 @@ TEST_F(ToolbarActionsBarBubbleViewsTest, TestCloseOnDeactivation) {
|
| }
|
|
|
| TEST_F(ToolbarActionsBarBubbleViewsTest, TestDontCloseOnDeactivation) {
|
| - scoped_ptr<views::Widget> anchor_widget = CreateAnchorWidget();
|
| TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(),
|
| ActionString());
|
| - delegate.set_dismiss_button_text(DismissString());
|
| delegate.set_close_on_deactivate(false);
|
| - ToolbarActionsBarBubbleViews* bubble = new ToolbarActionsBarBubbleViews(
|
| - anchor_widget->GetContentsView(), delegate.GetDelegate());
|
| - views::Widget* bubble_widget =
|
| - views::BubbleDelegateView::CreateBubble(bubble);
|
| - views::test::TestWidgetObserver bubble_observer(bubble_widget);
|
| - bubble->Show();
|
| + ShowBubble(&delegate);
|
| + views::test::TestWidgetObserver bubble_observer(bubble_widget());
|
|
|
| EXPECT_FALSE(delegate.close_action());
|
| // Activate another widget. The bubble shouldn't close.
|
| - anchor_widget->Activate();
|
| + anchor_widget()->Activate();
|
| base::RunLoop().RunUntilIdle();
|
| EXPECT_FALSE(delegate.close_action());
|
| - bubble_widget->Close();
|
| - base::RunLoop().RunUntilIdle();
|
| + CloseBubble();
|
| }
|
|
|