summaryrefslogtreecommitdiffstats
path: root/views/bubble/bubble_frame_view_unittest.cc
diff options
context:
space:
mode:
authorsaintlou@chromium.org <saintlou@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-19 15:03:05 +0000
committersaintlou@chromium.org <saintlou@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-19 15:03:05 +0000
commit8d6ac4be4114c6732560b78aae4e6f04058d0f73 (patch)
tree0bd8281fdaaf8956b21ad489484e478787f42023 /views/bubble/bubble_frame_view_unittest.cc
parent0e0d84eb874acd9feaf11e9b853c4af9b1a5389f (diff)
downloadchromium_src-8d6ac4be4114c6732560b78aae4e6f04058d0f73.zip
chromium_src-8d6ac4be4114c6732560b78aae4e6f04058d0f73.tar.gz
chromium_src-8d6ac4be4114c6732560b78aae4e6f04058d0f73.tar.bz2
re-checkin http://codereview.chromium.org/7720001/ to add bubble views.
The patch caused memory leak in views_unittests. added patch http://codereview.chromium.org/7858015/ to fix unittests memory leak. BUG=none TEST=none Review URL: http://codereview.chromium.org/7831071 Patch from Alice Tull <alicet@chromium.org>. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@101739 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'views/bubble/bubble_frame_view_unittest.cc')
-rw-r--r--views/bubble/bubble_frame_view_unittest.cc76
1 files changed, 76 insertions, 0 deletions
diff --git a/views/bubble/bubble_frame_view_unittest.cc b/views/bubble/bubble_frame_view_unittest.cc
new file mode 100644
index 0000000..b7153bd
--- /dev/null
+++ b/views/bubble/bubble_frame_view_unittest.cc
@@ -0,0 +1,76 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/memory/scoped_ptr.h"
+#include "base/message_loop.h"
+#include "third_party/skia/include/core/SkColor.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "views/bubble/bubble_border.h"
+#include "views/bubble/bubble_frame_view.h"
+#include "views/bubble/bubble_delegate.h"
+#include "views/widget/widget.h"
+#if !defined(OS_WIN)
+#include "views/window/hit_test.h"
+#endif
+namespace views {
+
+namespace {
+
+gfx::Rect kBound = gfx::Rect(10, 10, 200, 200);
+SkColor kBackgroundColor = SK_ColorRED;
+BubbleBorder::ArrowLocation kArrow = BubbleBorder::LEFT_BOTTOM;
+
+TEST(BubbleFrameViewBasicTest, GetBoundsForClientView) {
+ MessageLoopForUI message_loop;
+ scoped_ptr<Widget> widget(new views::Widget());
+ views::Widget::InitParams params(views::Widget::InitParams::TYPE_BUBBLE);
+ params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
+ widget->Init(params);
+ BubbleFrameView frame(widget.get(), kBound, kBackgroundColor, kArrow);
+ EXPECT_EQ(kBound, frame.bounds());
+ EXPECT_EQ(kArrow,
+ static_cast<BubbleBorder*>(frame.border())->arrow_location());
+ EXPECT_EQ(kBackgroundColor,
+ static_cast<BubbleBorder*>(frame.border())->background_color());
+
+ gfx::Insets expected_insets;
+ frame.border()->GetInsets(&expected_insets);
+ EXPECT_EQ(expected_insets.left(), frame.GetBoundsForClientView().x());
+ EXPECT_EQ(expected_insets.top(), frame.GetBoundsForClientView().y());
+ widget->CloseNow();
+ widget.reset(NULL);
+ MessageLoop::current()->RunAllPending();
+}
+
+class TestBubbleDelegate : public BubbleDelegateView {
+ public:
+ explicit TestBubbleDelegate(Widget *frame): BubbleDelegateView(frame) {}
+ SkColor GetFrameBackgroundColor() { return kBackgroundColor; }
+ gfx::Rect GetBounds() { return gfx::Rect(10, 10, 200, 200); }
+ BubbleBorder::ArrowLocation GetFrameArrowLocation() { return kArrow; }
+ View* GetContentsView() { return &view_; }
+
+ View view_;
+};
+
+TEST(BubbleFrameViewBasicTest, NonClientHitTest) {
+ MessageLoopForUI message_loop;
+ scoped_ptr<Widget> widget(new Widget());
+ views::Widget::InitParams params(views::Widget::InitParams::TYPE_BUBBLE);
+ TestBubbleDelegate delegate(widget.get());
+ params.delegate = &delegate;
+ params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
+ widget->Init(params);
+ gfx::Point kPtInBound(100, 100);
+ gfx::Point kPtOutsideBound(1000, 1000);
+ EXPECT_EQ(HTCLIENT, widget->non_client_view()->NonClientHitTest(kPtInBound));
+ EXPECT_EQ(HTNOWHERE,
+ widget->non_client_view()->NonClientHitTest(kPtOutsideBound));
+ widget->CloseNow();
+ widget.reset(NULL);
+ MessageLoop::current()->RunAllPending();
+}
+
+} // namespace
+} // namespace views