diff options
author | saintlou@chromium.org <saintlou@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-19 15:03:05 +0000 |
---|---|---|
committer | saintlou@chromium.org <saintlou@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-19 15:03:05 +0000 |
commit | 8d6ac4be4114c6732560b78aae4e6f04058d0f73 (patch) | |
tree | 0bd8281fdaaf8956b21ad489484e478787f42023 /views/bubble/bubble_frame_view_unittest.cc | |
parent | 0e0d84eb874acd9feaf11e9b853c4af9b1a5389f (diff) | |
download | chromium_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.cc | 76 |
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 |