Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(811)

Unified Diff: ui/views/bubble/bubble_delegate_unittest.cc

Issue 22320003: Cleanup Views bubble tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Cleanup Views bubble tests. Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/views/bubble/bubble_delegate.cc ('k') | ui/views/bubble/bubble_frame_view_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/views/bubble/bubble_delegate_unittest.cc
diff --git a/ui/views/bubble/bubble_delegate_unittest.cc b/ui/views/bubble/bubble_delegate_unittest.cc
index 47419c0ce4808612b6455f2484f7a1be49db6185..5cf4a377ec521ae4380d288f3d651bca70993efa 100644
--- a/ui/views/bubble/bubble_delegate_unittest.cc
+++ b/ui/views/bubble/bubble_delegate_unittest.cc
@@ -3,6 +3,7 @@
// found in the LICENSE file.
#include "base/run_loop.h"
+#include "ui/base/hit_test.h"
#include "ui/views/bubble/bubble_delegate.h"
#include "ui/views/bubble/bubble_frame_view.h"
#include "ui/views/test/test_widget_observer.h"
@@ -20,77 +21,67 @@ namespace {
class TestBubbleDelegateView : public BubbleDelegateView {
public:
- TestBubbleDelegateView(View* anchor_view);
- virtual ~TestBubbleDelegateView();
-
- virtual View* GetInitiallyFocusedView() OVERRIDE;
+ TestBubbleDelegateView(View* anchor_view)
+ : BubbleDelegateView(anchor_view, BubbleBorder::TOP_LEFT),
+ view_(new View()) {
+ view_->set_focusable(true);
+ AddChildView(view_);
+ }
+ virtual ~TestBubbleDelegateView() {}
- protected:
- // BubbleDelegateView overrides.
- virtual int GetFadeDuration() OVERRIDE;
+ // BubbleDelegateView overrides:
+ virtual View* GetInitiallyFocusedView() OVERRIDE { return view_; }
+ virtual gfx::Size GetPreferredSize() OVERRIDE { return gfx::Size(200, 200); }
+ virtual int GetFadeDuration() OVERRIDE { return 1; }
private:
View* view_;
-};
-
-TestBubbleDelegateView::TestBubbleDelegateView(View* anchor_view)
- : BubbleDelegateView(anchor_view, BubbleBorder::TOP_LEFT),
- view_(new View()) {
- view_->set_focusable(true);
- AddChildView(view_);
-}
-TestBubbleDelegateView::~TestBubbleDelegateView() {}
+ DISALLOW_COPY_AND_ASSIGN(TestBubbleDelegateView);
+};
-View* TestBubbleDelegateView::GetInitiallyFocusedView() {
- return view_;
-}
+class BubbleDelegateTest : public ViewsTestBase {
+ public:
+ BubbleDelegateTest() {}
+ virtual ~BubbleDelegateTest() {}
+
+ // Creates a test widget that owns its native widget.
+ Widget* CreateTestWidget() {
+ Widget* widget = new Widget();
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW);
+ params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
+ widget->Init(params);
+ return widget;
+ }
-int TestBubbleDelegateView::GetFadeDuration() {
- // We cannot return 0 as that causes the animation to never complete.
- return 1;
-}
+ private:
+ DISALLOW_COPY_AND_ASSIGN(BubbleDelegateTest);
+};
} // namespace
-typedef ViewsTestBase BubbleDelegateTest;
-
TEST_F(BubbleDelegateTest, CreateDelegate) {
- // Create the anchor and parent widgets.
- Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW);
- params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
- scoped_ptr<Widget> anchor_widget(new Widget);
- anchor_widget->Init(params);
- anchor_widget->Show();
-
- BubbleDelegateView* bubble_delegate =
- new BubbleDelegateView(anchor_widget->GetContentsView(),
- BubbleBorder::NONE);
+ scoped_ptr<Widget> anchor_widget(CreateTestWidget());
+ BubbleDelegateView* bubble_delegate = new BubbleDelegateView(
+ anchor_widget->GetContentsView(), BubbleBorder::NONE);
bubble_delegate->set_color(SK_ColorGREEN);
- Widget* bubble_widget(
- BubbleDelegateView::CreateBubble(bubble_delegate));
+ Widget* bubble_widget = BubbleDelegateView::CreateBubble(bubble_delegate);
EXPECT_EQ(bubble_delegate, bubble_widget->widget_delegate());
EXPECT_EQ(bubble_widget, bubble_delegate->GetWidget());
test::TestWidgetObserver bubble_observer(bubble_widget);
- EXPECT_FALSE(bubble_observer.widget_closed());
+ bubble_widget->Show();
BubbleBorder* border = bubble_delegate->GetBubbleFrameView()->bubble_border();
EXPECT_EQ(bubble_delegate->arrow(), border->arrow());
EXPECT_EQ(bubble_delegate->color(), border->background_color());
+ EXPECT_FALSE(bubble_observer.widget_closed());
bubble_widget->CloseNow();
- RunPendingMessages();
EXPECT_TRUE(bubble_observer.widget_closed());
}
TEST_F(BubbleDelegateTest, CloseAnchorWidget) {
- // Create the anchor widget.
- Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW);
- params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
- scoped_ptr<Widget> anchor_widget(new Widget);
- anchor_widget->Init(params);
- anchor_widget->Show();
-
+ scoped_ptr<Widget> anchor_widget(CreateTestWidget());
BubbleDelegateView* bubble_delegate = new BubbleDelegateView(
anchor_widget->GetContentsView(), BubbleBorder::NONE);
// Preventing close on deactivate should not prevent closing with the anchor.
@@ -98,112 +89,111 @@ TEST_F(BubbleDelegateTest, CloseAnchorWidget) {
Widget* bubble_widget = BubbleDelegateView::CreateBubble(bubble_delegate);
EXPECT_EQ(bubble_delegate, bubble_widget->widget_delegate());
EXPECT_EQ(bubble_widget, bubble_delegate->GetWidget());
- EXPECT_EQ(anchor_widget.get(), bubble_delegate->anchor_widget());
+ EXPECT_EQ(anchor_widget, bubble_delegate->anchor_widget());
test::TestWidgetObserver bubble_observer(bubble_widget);
EXPECT_FALSE(bubble_observer.widget_closed());
bubble_widget->Show();
- RunPendingMessages();
- EXPECT_EQ(anchor_widget.get(), bubble_delegate->anchor_widget());
+ EXPECT_EQ(anchor_widget, bubble_delegate->anchor_widget());
EXPECT_FALSE(bubble_observer.widget_closed());
#if defined(USE_AURA)
// TODO(msw): Remove activation hack to prevent bookkeeping errors in:
// aura::test::TestActivationClient::OnWindowDestroyed().
- scoped_ptr<Widget> smoke_and_mirrors_widget(new Widget);
- smoke_and_mirrors_widget->Init(params);
- smoke_and_mirrors_widget->Show();
+ scoped_ptr<Widget> smoke_and_mirrors_widget(CreateTestWidget());
EXPECT_FALSE(bubble_observer.widget_closed());
#endif
// Ensure that closing the anchor widget also closes the bubble itself.
anchor_widget->CloseNow();
- RunPendingMessages();
EXPECT_TRUE(bubble_observer.widget_closed());
}
TEST_F(BubbleDelegateTest, ResetAnchorWidget) {
- // Create the anchor and parent widgets.
- Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW);
- params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
- scoped_ptr<Widget> anchor_widget(new Widget);
- anchor_widget->Init(params);
- anchor_widget->Show();
- scoped_ptr<Widget> parent_widget(new Widget);
- parent_widget->Init(params);
- parent_widget->Show();
+ scoped_ptr<Widget> anchor_widget(CreateTestWidget());
+ BubbleDelegateView* bubble_delegate = new BubbleDelegateView(
+ anchor_widget->GetContentsView(), BubbleBorder::NONE);
// Make sure the bubble widget is parented to a widget other than the anchor
// widget so that closing the anchor widget does not close the bubble widget.
- BubbleDelegateView* bubble_delegate = new BubbleDelegateView(
- anchor_widget->GetContentsView(), BubbleBorder::NONE);
+ scoped_ptr<Widget> parent_widget(CreateTestWidget());
bubble_delegate->set_parent_window(parent_widget->GetNativeView());
// Preventing close on deactivate should not prevent closing with the parent.
bubble_delegate->set_close_on_deactivate(false);
Widget* bubble_widget = BubbleDelegateView::CreateBubble(bubble_delegate);
EXPECT_EQ(bubble_delegate, bubble_widget->widget_delegate());
EXPECT_EQ(bubble_widget, bubble_delegate->GetWidget());
- EXPECT_EQ(anchor_widget.get(), bubble_delegate->anchor_widget());
+ EXPECT_EQ(anchor_widget, bubble_delegate->anchor_widget());
test::TestWidgetObserver bubble_observer(bubble_widget);
EXPECT_FALSE(bubble_observer.widget_closed());
// Showing and hiding the bubble widget should have no effect on its anchor.
bubble_widget->Show();
- RunPendingMessages();
- EXPECT_EQ(anchor_widget.get(), bubble_delegate->anchor_widget());
+ EXPECT_EQ(anchor_widget, bubble_delegate->anchor_widget());
bubble_widget->Hide();
- RunPendingMessages();
- EXPECT_EQ(anchor_widget.get(), bubble_delegate->anchor_widget());
+ EXPECT_EQ(anchor_widget, bubble_delegate->anchor_widget());
// Ensure that closing the anchor widget clears the bubble's reference to that
// anchor widget, but the bubble itself does not close.
anchor_widget->CloseNow();
- RunPendingMessages();
- EXPECT_NE(anchor_widget.get(), bubble_delegate->anchor_widget());
+ EXPECT_NE(anchor_widget, bubble_delegate->anchor_widget());
EXPECT_FALSE(bubble_observer.widget_closed());
#if defined(USE_AURA)
// TODO(msw): Remove activation hack to prevent bookkeeping errors in:
// aura::test::TestActivationClient::OnWindowDestroyed().
- scoped_ptr<Widget> smoke_and_mirrors_widget(new Widget);
- smoke_and_mirrors_widget->Init(params);
- smoke_and_mirrors_widget->Show();
+ scoped_ptr<Widget> smoke_and_mirrors_widget(CreateTestWidget());
EXPECT_FALSE(bubble_observer.widget_closed());
#endif
// Ensure that closing the parent widget also closes the bubble itself.
parent_widget->CloseNow();
- RunPendingMessages();
EXPECT_TRUE(bubble_observer.widget_closed());
}
-// TODO(msw): test relies on focus and belongs in interactive_ui_tests.
-TEST_F(BubbleDelegateTest, DISABLED_InitiallyFocusedView) {
- // Create the anchor and parent widgets.
- Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW);
- params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
- scoped_ptr<Widget> anchor_widget(new Widget);
- anchor_widget->Init(params);
- anchor_widget->Show();
-
- TestBubbleDelegateView* bubble_delegate =
- new TestBubbleDelegateView(anchor_widget->GetContentsView());
+TEST_F(BubbleDelegateTest, InitiallyFocusedView) {
+ scoped_ptr<Widget> anchor_widget(CreateTestWidget());
+ BubbleDelegateView* bubble_delegate = new BubbleDelegateView(
+ anchor_widget->GetContentsView(), BubbleBorder::NONE);
Widget* bubble_widget = BubbleDelegateView::CreateBubble(bubble_delegate);
- bubble_widget->Show();
-
EXPECT_EQ(bubble_delegate->GetInitiallyFocusedView(),
bubble_widget->GetFocusManager()->GetFocusedView());
bubble_widget->CloseNow();
}
+TEST_F(BubbleDelegateTest, NonClientHitTest) {
+ scoped_ptr<Widget> anchor_widget(CreateTestWidget());
+ TestBubbleDelegateView* bubble_delegate =
+ new TestBubbleDelegateView(anchor_widget->GetContentsView());
+ BubbleDelegateView::CreateBubble(bubble_delegate);
+ BubbleFrameView* frame = bubble_delegate->GetBubbleFrameView();
+ const int border = frame->bubble_border()->GetBorderThickness();
+
+ struct {
+ const int point;
+ const int hit;
+ } cases[] = {
+ { border, HTNOWHERE },
+ { border + 5, HTNOWHERE },
+ { border + 6, HTCLIENT },
+ { border + 50, HTCLIENT },
+ { 1000, HTNOWHERE },
+ };
+
+ for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) {
+ gfx::Point point(cases[i].point, cases[i].point);
+ EXPECT_EQ(cases[i].hit, frame->NonClientHitTest(point))
+ << " with border: " << border << ", at point " << cases[i].point;
+ }
+}
+
// This class provides functionality to verify that the BubbleView shows up
// when we call BubbleDelegateView::StartFade(true) and is destroyed when we
// call BubbleDelegateView::StartFade(false).
class BubbleWidgetClosingTest : public BubbleDelegateTest,
public views::WidgetObserver {
public:
- BubbleWidgetClosingTest()
- : bubble_destroyed_(false) {
+ BubbleWidgetClosingTest() : bubble_destroyed_(false) {
#if defined(USE_AURA)
loop_.set_dispatcher(aura::Env::GetInstance()->GetDispatcher());
#endif
@@ -236,13 +226,7 @@ class BubbleWidgetClosingTest : public BubbleDelegateTest,
};
TEST_F(BubbleWidgetClosingTest, TestBubbleVisibilityAndClose) {
- // Create the anchor and parent widgets.
- Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW);
- params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
- scoped_ptr<Widget> anchor_widget(new Widget);
- anchor_widget->Init(params);
- anchor_widget->Show();
-
+ scoped_ptr<Widget> anchor_widget(CreateTestWidget());
TestBubbleDelegateView* bubble_delegate =
new TestBubbleDelegateView(anchor_widget->GetContentsView());
Widget* bubble_widget = BubbleDelegateView::CreateBubble(bubble_delegate);
« no previous file with comments | « ui/views/bubble/bubble_delegate.cc ('k') | ui/views/bubble/bubble_frame_view_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698