| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/views/toolbar/toolbar_actions_bar_bubble_views.h" |
| 6 |
| 5 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
| 6 #include "base/run_loop.h" | 8 #include "base/run_loop.h" |
| 7 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
| 8 #include "chrome/browser/ui/toolbar/test_toolbar_actions_bar_bubble_delegate.h" | 10 #include "chrome/browser/ui/toolbar/test_toolbar_actions_bar_bubble_delegate.h" |
| 9 #include "chrome/browser/ui/views/toolbar/toolbar_actions_bar_bubble_views.h" | |
| 10 #include "ui/events/event_utils.h" | 11 #include "ui/events/event_utils.h" |
| 11 #include "ui/events/test/event_generator.h" | 12 #include "ui/events/test/event_generator.h" |
| 12 #include "ui/views/bubble/bubble_delegate.h" | |
| 13 #include "ui/views/controls/button/label_button.h" | 13 #include "ui/views/controls/button/label_button.h" |
| 14 #include "ui/views/controls/link.h" | 14 #include "ui/views/controls/link.h" |
| 15 #include "ui/views/test/test_widget_observer.h" | 15 #include "ui/views/test/test_widget_observer.h" |
| 16 #include "ui/views/test/views_test_base.h" | 16 #include "ui/views/test/views_test_base.h" |
| 17 #include "ui/views/widget/widget.h" | 17 #include "ui/views/widget/widget.h" |
| 18 | 18 #include "ui/views/window/dialog_client_view.h" |
| 19 namespace { | |
| 20 | |
| 21 gfx::Point GetCenterInScreenCoordinates(const views::View* view) { | |
| 22 gfx::Point center(view->width() / 2, view->height() / 2); | |
| 23 views::View::ConvertPointToScreen(view, ¢er); | |
| 24 return center; | |
| 25 } | |
| 26 | |
| 27 } // namespace | |
| 28 | 19 |
| 29 class ToolbarActionsBarBubbleViewsTest : public views::ViewsTestBase { | 20 class ToolbarActionsBarBubbleViewsTest : public views::ViewsTestBase { |
| 30 protected: | 21 protected: |
| 31 ToolbarActionsBarBubbleViewsTest() {} | 22 ToolbarActionsBarBubbleViewsTest() {} |
| 32 ~ToolbarActionsBarBubbleViewsTest() override {} | 23 ~ToolbarActionsBarBubbleViewsTest() override {} |
| 33 | 24 |
| 34 void TearDown() override { | 25 void TearDown() override { |
| 35 anchor_widget_.reset(); | 26 anchor_widget_.reset(); |
| 36 views::ViewsTestBase::TearDown(); | 27 views::ViewsTestBase::TearDown(); |
| 37 } | 28 } |
| 38 | 29 |
| 39 std::unique_ptr<views::Widget> CreateAnchorWidget() { | 30 std::unique_ptr<views::Widget> CreateAnchorWidget() { |
| 40 std::unique_ptr<views::Widget> anchor_widget(new views::Widget()); | 31 std::unique_ptr<views::Widget> anchor_widget(new views::Widget()); |
| 41 views::Widget::InitParams params = | 32 views::Widget::InitParams params = |
| 42 CreateParams(views::Widget::InitParams::TYPE_WINDOW); | 33 CreateParams(views::Widget::InitParams::TYPE_WINDOW); |
| 43 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; | 34 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; |
| 44 anchor_widget->Init(params); | 35 anchor_widget->Init(params); |
| 45 return anchor_widget; | 36 return anchor_widget; |
| 46 } | 37 } |
| 47 | 38 |
| 48 void ShowBubble(TestToolbarActionsBarBubbleDelegate* delegate) { | 39 void ShowBubble(TestToolbarActionsBarBubbleDelegate* delegate) { |
| 49 ASSERT_TRUE(delegate); | 40 ASSERT_TRUE(delegate); |
| 50 ASSERT_FALSE(bubble_widget_); | 41 ASSERT_FALSE(bubble_widget_); |
| 51 ASSERT_FALSE(bubble_); | 42 ASSERT_FALSE(bubble_); |
| 52 anchor_widget_ = CreateAnchorWidget(); | 43 anchor_widget_ = CreateAnchorWidget(); |
| 53 bubble_ = new ToolbarActionsBarBubbleViews( | 44 bubble_ = new ToolbarActionsBarBubbleViews( |
| 54 anchor_widget_->GetContentsView(), delegate->GetDelegate()); | 45 anchor_widget_->GetContentsView(), delegate->GetDelegate()); |
| 55 bubble_widget_ = | 46 bubble_widget_ = views::BubbleDialogDelegateView::CreateBubble(bubble_); |
| 56 views::BubbleDelegateView::CreateBubble(bubble_); | |
| 57 bubble_->Show(); | 47 bubble_->Show(); |
| 58 } | 48 } |
| 59 | 49 |
| 60 void CloseBubble() { | 50 void CloseBubble() { |
| 61 ASSERT_TRUE(bubble_); | 51 ASSERT_TRUE(bubble_); |
| 62 bubble_->GetWidget()->Close(); | 52 bubble_->GetWidget()->Close(); |
| 63 base::RunLoop().RunUntilIdle(); | 53 base::RunLoop().RunUntilIdle(); |
| 64 bubble_ = nullptr; | 54 bubble_ = nullptr; |
| 65 bubble_widget_ = nullptr; | 55 bubble_widget_ = nullptr; |
| 66 } | 56 } |
| 67 | 57 |
| 68 void ClickView(const views::View* view) { | 58 void ClickView(const views::View* view) { |
| 69 ASSERT_TRUE(view); | 59 ASSERT_TRUE(view); |
| 70 ui::test::EventGenerator generator(GetContext(), | 60 ui::test::EventGenerator generator(GetContext(), |
| 71 anchor_widget_->GetNativeWindow()); | 61 anchor_widget_->GetNativeWindow()); |
| 72 generator.MoveMouseTo(GetCenterInScreenCoordinates(view)); | 62 generator.MoveMouseTo(view->GetBoundsInScreen().CenterPoint()); |
| 73 generator.ClickLeftButton(); | 63 generator.ClickLeftButton(); |
| 74 base::RunLoop().RunUntilIdle(); | 64 base::RunLoop().RunUntilIdle(); |
| 75 } | 65 } |
| 76 | 66 |
| 77 base::string16 HeadingString() { return base::ASCIIToUTF16("Heading"); } | 67 base::string16 HeadingString() { return base::ASCIIToUTF16("Heading"); } |
| 78 base::string16 BodyString() { return base::ASCIIToUTF16("Body"); } | 68 base::string16 BodyString() { return base::ASCIIToUTF16("Body"); } |
| 79 base::string16 ActionString() { return base::ASCIIToUTF16("Action"); } | 69 base::string16 ActionString() { return base::ASCIIToUTF16("Action"); } |
| 80 base::string16 DismissString() { return base::ASCIIToUTF16("Dismiss"); } | 70 base::string16 DismissString() { return base::ASCIIToUTF16("Dismiss"); } |
| 81 base::string16 LearnMoreString() { return base::ASCIIToUTF16("Learn"); } | 71 base::string16 LearnMoreString() { return base::ASCIIToUTF16("Learn"); } |
| 82 base::string16 ItemListString() { | 72 base::string16 ItemListString() { |
| (...skipping 10 matching lines...) Expand all Loading... |
| 93 ToolbarActionsBarBubbleViews* bubble_ = nullptr; | 83 ToolbarActionsBarBubbleViews* bubble_ = nullptr; |
| 94 | 84 |
| 95 DISALLOW_COPY_AND_ASSIGN(ToolbarActionsBarBubbleViewsTest); | 85 DISALLOW_COPY_AND_ASSIGN(ToolbarActionsBarBubbleViewsTest); |
| 96 }; | 86 }; |
| 97 | 87 |
| 98 TEST_F(ToolbarActionsBarBubbleViewsTest, TestBubbleLayoutActionButton) { | 88 TEST_F(ToolbarActionsBarBubbleViewsTest, TestBubbleLayoutActionButton) { |
| 99 TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(), | 89 TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(), |
| 100 ActionString()); | 90 ActionString()); |
| 101 ShowBubble(&delegate); | 91 ShowBubble(&delegate); |
| 102 | 92 |
| 103 EXPECT_TRUE(bubble()->heading_label()); | 93 EXPECT_TRUE(bubble()->GetDialogClientView()->ok_button()); |
| 104 EXPECT_EQ(HeadingString(), bubble()->heading_label()->text()); | 94 EXPECT_EQ(ActionString(), |
| 105 EXPECT_TRUE(bubble()->content_label()); | 95 bubble()->GetDialogClientView()->ok_button()->GetText()); |
| 106 EXPECT_EQ(BodyString(), bubble()->content_label()->text()); | 96 EXPECT_FALSE(bubble()->GetDialogClientView()->cancel_button()); |
| 107 EXPECT_TRUE(bubble()->action_button()); | |
| 108 EXPECT_EQ(ActionString(), bubble()->action_button()->GetText()); | |
| 109 EXPECT_FALSE(bubble()->dismiss_button()); | |
| 110 EXPECT_FALSE(bubble()->learn_more_button()); | |
| 111 EXPECT_FALSE(bubble()->item_list()); | |
| 112 | 97 |
| 113 CloseBubble(); | 98 CloseBubble(); |
| 114 } | 99 } |
| 115 | 100 |
| 116 TEST_F(ToolbarActionsBarBubbleViewsTest, | 101 TEST_F(ToolbarActionsBarBubbleViewsTest, |
| 117 TestBubbleLayoutActionAndDismissButton) { | 102 TestBubbleLayoutActionAndDismissButton) { |
| 118 TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(), | 103 TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(), |
| 119 ActionString()); | 104 ActionString()); |
| 120 delegate.set_dismiss_button_text(DismissString()); | 105 delegate.set_dismiss_button_text(DismissString()); |
| 106 |
| 121 ShowBubble(&delegate); | 107 ShowBubble(&delegate); |
| 122 | 108 |
| 123 EXPECT_TRUE(bubble()->heading_label()); | 109 EXPECT_TRUE(bubble()->GetDialogClientView()->ok_button()); |
| 124 EXPECT_EQ(HeadingString(), bubble()->heading_label()->text()); | 110 EXPECT_EQ(ActionString(), |
| 125 EXPECT_TRUE(bubble()->content_label()); | 111 bubble()->GetDialogClientView()->ok_button()->GetText()); |
| 126 EXPECT_EQ(BodyString(), bubble()->content_label()->text()); | 112 EXPECT_TRUE(bubble()->GetDialogClientView()->cancel_button()); |
| 127 EXPECT_TRUE(bubble()->action_button()); | 113 EXPECT_EQ(DismissString(), |
| 128 EXPECT_EQ(ActionString(), bubble()->action_button()->GetText()); | 114 bubble()->GetDialogClientView()->cancel_button()->GetText()); |
| 129 EXPECT_TRUE(bubble()->dismiss_button()); | 115 |
| 130 EXPECT_EQ(DismissString(), bubble()->dismiss_button()->GetText()); | |
| 131 EXPECT_FALSE(bubble()->learn_more_button()); | 116 EXPECT_FALSE(bubble()->learn_more_button()); |
| 132 EXPECT_FALSE(bubble()->item_list()); | 117 EXPECT_FALSE(bubble()->item_list()); |
| 133 | 118 |
| 134 CloseBubble(); | 119 CloseBubble(); |
| 135 } | 120 } |
| 136 | 121 |
| 137 TEST_F(ToolbarActionsBarBubbleViewsTest, | 122 TEST_F(ToolbarActionsBarBubbleViewsTest, |
| 138 TestBubbleLayoutActionDismissAndLearnMoreButton) { | 123 TestBubbleLayoutActionDismissAndLearnMoreButton) { |
| 139 TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(), | 124 TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(), |
| 140 ActionString()); | 125 ActionString()); |
| 141 delegate.set_dismiss_button_text(DismissString()); | 126 delegate.set_dismiss_button_text(DismissString()); |
| 142 delegate.set_learn_more_button_text(LearnMoreString()); | 127 delegate.set_learn_more_button_text(LearnMoreString()); |
| 143 ShowBubble(&delegate); | 128 ShowBubble(&delegate); |
| 144 | 129 |
| 145 EXPECT_TRUE(bubble()->heading_label()); | 130 EXPECT_TRUE(bubble()->GetDialogClientView()->ok_button()); |
| 146 EXPECT_EQ(HeadingString(), bubble()->heading_label()->text()); | 131 EXPECT_EQ(ActionString(), |
| 147 EXPECT_TRUE(bubble()->content_label()); | 132 bubble()->GetDialogClientView()->ok_button()->GetText()); |
| 148 EXPECT_EQ(BodyString(), bubble()->content_label()->text()); | 133 EXPECT_TRUE(bubble()->GetDialogClientView()->cancel_button()); |
| 149 EXPECT_TRUE(bubble()->action_button()); | 134 EXPECT_EQ(DismissString(), |
| 150 EXPECT_EQ(ActionString(), bubble()->action_button()->GetText()); | 135 bubble()->GetDialogClientView()->cancel_button()->GetText()); |
| 151 EXPECT_TRUE(bubble()->dismiss_button()); | |
| 152 EXPECT_EQ(DismissString(), bubble()->dismiss_button()->GetText()); | |
| 153 EXPECT_TRUE(bubble()->learn_more_button()); | 136 EXPECT_TRUE(bubble()->learn_more_button()); |
| 154 EXPECT_EQ(LearnMoreString(), bubble()->learn_more_button()->text()); | 137 EXPECT_EQ(LearnMoreString(), bubble()->learn_more_button()->text()); |
| 155 EXPECT_FALSE(bubble()->item_list()); | 138 EXPECT_FALSE(bubble()->item_list()); |
| 156 | 139 |
| 157 CloseBubble(); | 140 CloseBubble(); |
| 158 } | 141 } |
| 159 | 142 |
| 160 TEST_F(ToolbarActionsBarBubbleViewsTest, TestBubbleLayoutListView) { | 143 TEST_F(ToolbarActionsBarBubbleViewsTest, TestBubbleLayoutListView) { |
| 161 TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(), | 144 TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(), |
| 162 ActionString()); | 145 ActionString()); |
| 163 delegate.set_item_list_text(ItemListString()); | 146 delegate.set_item_list_text(ItemListString()); |
| 164 ShowBubble(&delegate); | 147 ShowBubble(&delegate); |
| 165 | 148 |
| 166 EXPECT_TRUE(bubble()->heading_label()); | 149 EXPECT_TRUE(bubble()->GetDialogClientView()->ok_button()); |
| 167 EXPECT_EQ(HeadingString(), bubble()->heading_label()->text()); | 150 EXPECT_EQ(ActionString(), |
| 168 EXPECT_TRUE(bubble()->content_label()); | 151 bubble()->GetDialogClientView()->ok_button()->GetText()); |
| 169 EXPECT_EQ(BodyString(), bubble()->content_label()->text()); | 152 EXPECT_FALSE(bubble()->GetDialogClientView()->cancel_button()); |
| 170 EXPECT_TRUE(bubble()->action_button()); | |
| 171 EXPECT_EQ(ActionString(), bubble()->action_button()->GetText()); | |
| 172 EXPECT_FALSE(bubble()->dismiss_button()); | |
| 173 EXPECT_FALSE(bubble()->learn_more_button()); | 153 EXPECT_FALSE(bubble()->learn_more_button()); |
| 174 EXPECT_TRUE(bubble()->item_list()); | 154 EXPECT_TRUE(bubble()->item_list()); |
| 175 EXPECT_EQ(ItemListString(), bubble()->item_list()->text()); | 155 EXPECT_EQ(ItemListString(), bubble()->item_list()->text()); |
| 176 | 156 |
| 177 CloseBubble(); | 157 CloseBubble(); |
| 178 } | 158 } |
| 179 | 159 |
| 180 TEST_F(ToolbarActionsBarBubbleViewsTest, TestShowAndCloseBubble) { | 160 TEST_F(ToolbarActionsBarBubbleViewsTest, TestShowAndCloseBubble) { |
| 181 std::unique_ptr<views::Widget> anchor_widget = CreateAnchorWidget(); | 161 std::unique_ptr<views::Widget> anchor_widget = CreateAnchorWidget(); |
| 182 TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(), | 162 TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(), |
| 183 ActionString()); | 163 ActionString()); |
| 184 delegate.set_dismiss_button_text(DismissString()); | 164 delegate.set_dismiss_button_text(DismissString()); |
| 185 ToolbarActionsBarBubbleViews* bubble = new ToolbarActionsBarBubbleViews( | 165 ToolbarActionsBarBubbleViews* bubble = new ToolbarActionsBarBubbleViews( |
| 186 anchor_widget->GetContentsView(), delegate.GetDelegate()); | 166 anchor_widget->GetContentsView(), delegate.GetDelegate()); |
| 187 | 167 |
| 188 EXPECT_FALSE(delegate.shown()); | 168 EXPECT_FALSE(delegate.shown()); |
| 189 EXPECT_FALSE(delegate.close_action()); | 169 EXPECT_FALSE(delegate.close_action()); |
| 190 views::Widget* bubble_widget = | 170 views::Widget* bubble_widget = |
| 191 views::BubbleDelegateView::CreateBubble(bubble); | 171 views::BubbleDialogDelegateView::CreateBubble(bubble); |
| 192 views::test::TestWidgetObserver bubble_observer(bubble_widget); | 172 views::test::TestWidgetObserver bubble_observer(bubble_widget); |
| 193 bubble->Show(); | 173 bubble->Show(); |
| 194 EXPECT_TRUE(delegate.shown()); | 174 EXPECT_TRUE(delegate.shown()); |
| 195 EXPECT_FALSE(delegate.close_action()); | 175 EXPECT_FALSE(delegate.close_action()); |
| 196 | 176 |
| 197 bubble_widget->Close(); | 177 bubble->GetDialogClientView()->CancelWindow(); |
| 198 base::RunLoop().RunUntilIdle(); | 178 base::RunLoop().RunUntilIdle(); |
| 199 ASSERT_TRUE(delegate.close_action()); | 179 ASSERT_TRUE(delegate.close_action()); |
| 200 EXPECT_EQ(ToolbarActionsBarBubbleDelegate::CLOSE_DISMISS_USER_ACTION, | 180 EXPECT_EQ(ToolbarActionsBarBubbleDelegate::CLOSE_DISMISS_USER_ACTION, |
| 201 *delegate.close_action()); | 181 *delegate.close_action()); |
| 202 EXPECT_TRUE(bubble_observer.widget_closed()); | 182 EXPECT_TRUE(bubble_observer.widget_closed()); |
| 203 } | 183 } |
| 204 | 184 |
| 205 TEST_F(ToolbarActionsBarBubbleViewsTest, TestClickActionButton) { | 185 TEST_F(ToolbarActionsBarBubbleViewsTest, TestClickActionButton) { |
| 206 TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(), | 186 TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(), |
| 207 ActionString()); | 187 ActionString()); |
| 208 delegate.set_dismiss_button_text(DismissString()); | 188 delegate.set_dismiss_button_text(DismissString()); |
| 209 delegate.set_learn_more_button_text(LearnMoreString()); | 189 delegate.set_learn_more_button_text(LearnMoreString()); |
| 210 ShowBubble(&delegate); | 190 ShowBubble(&delegate); |
| 211 views::test::TestWidgetObserver bubble_observer(bubble_widget()); | 191 views::test::TestWidgetObserver bubble_observer(bubble_widget()); |
| 212 | 192 |
| 213 EXPECT_FALSE(delegate.close_action()); | 193 EXPECT_FALSE(delegate.close_action()); |
| 214 ClickView(bubble()->action_button()); | 194 ClickView(bubble()->GetDialogClientView()->ok_button()); |
| 215 ASSERT_TRUE(delegate.close_action()); | 195 ASSERT_TRUE(delegate.close_action()); |
| 216 EXPECT_EQ(ToolbarActionsBarBubbleDelegate::CLOSE_EXECUTE, | 196 EXPECT_EQ(ToolbarActionsBarBubbleDelegate::CLOSE_EXECUTE, |
| 217 *delegate.close_action()); | 197 *delegate.close_action()); |
| 218 EXPECT_TRUE(bubble_observer.widget_closed()); | 198 EXPECT_TRUE(bubble_observer.widget_closed()); |
| 219 } | 199 } |
| 220 | 200 |
| 221 TEST_F(ToolbarActionsBarBubbleViewsTest, TestClickDismissButton) { | 201 TEST_F(ToolbarActionsBarBubbleViewsTest, TestClickDismissButton) { |
| 222 TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(), | 202 TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(), |
| 223 ActionString()); | 203 ActionString()); |
| 224 delegate.set_dismiss_button_text(DismissString()); | 204 delegate.set_dismiss_button_text(DismissString()); |
| 225 delegate.set_learn_more_button_text(LearnMoreString()); | 205 delegate.set_learn_more_button_text(LearnMoreString()); |
| 226 ShowBubble(&delegate); | 206 ShowBubble(&delegate); |
| 227 views::test::TestWidgetObserver bubble_observer(bubble_widget()); | 207 views::test::TestWidgetObserver bubble_observer(bubble_widget()); |
| 228 | 208 |
| 229 EXPECT_FALSE(delegate.close_action()); | 209 EXPECT_FALSE(delegate.close_action()); |
| 230 ClickView(bubble()->dismiss_button()); | 210 ClickView(bubble()->GetDialogClientView()->cancel_button()); |
| 231 ASSERT_TRUE(delegate.close_action()); | 211 ASSERT_TRUE(delegate.close_action()); |
| 232 EXPECT_EQ(ToolbarActionsBarBubbleDelegate::CLOSE_DISMISS_USER_ACTION, | 212 EXPECT_EQ(ToolbarActionsBarBubbleDelegate::CLOSE_DISMISS_USER_ACTION, |
| 233 *delegate.close_action()); | 213 *delegate.close_action()); |
| 234 } | 214 } |
| 235 | 215 |
| 236 TEST_F(ToolbarActionsBarBubbleViewsTest, TestClickLearnMoreLink) { | 216 TEST_F(ToolbarActionsBarBubbleViewsTest, TestClickLearnMoreLink) { |
| 237 TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(), | 217 TestToolbarActionsBarBubbleDelegate delegate(HeadingString(), BodyString(), |
| 238 ActionString()); | 218 ActionString()); |
| 239 delegate.set_dismiss_button_text(DismissString()); | 219 delegate.set_dismiss_button_text(DismissString()); |
| 240 delegate.set_learn_more_button_text(LearnMoreString()); | 220 delegate.set_learn_more_button_text(LearnMoreString()); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 272 ShowBubble(&delegate); | 252 ShowBubble(&delegate); |
| 273 views::test::TestWidgetObserver bubble_observer(bubble_widget()); | 253 views::test::TestWidgetObserver bubble_observer(bubble_widget()); |
| 274 | 254 |
| 275 EXPECT_FALSE(delegate.close_action()); | 255 EXPECT_FALSE(delegate.close_action()); |
| 276 // Activate another widget. The bubble shouldn't close. | 256 // Activate another widget. The bubble shouldn't close. |
| 277 anchor_widget()->Activate(); | 257 anchor_widget()->Activate(); |
| 278 base::RunLoop().RunUntilIdle(); | 258 base::RunLoop().RunUntilIdle(); |
| 279 EXPECT_FALSE(delegate.close_action()); | 259 EXPECT_FALSE(delegate.close_action()); |
| 280 CloseBubble(); | 260 CloseBubble(); |
| 281 } | 261 } |
| OLD | NEW |