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

Side by Side Diff: ui/views/bubble/bubble_window_targeter_unittest.cc

Issue 851853002: It is time. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Trying to reup because the last upload failed. Created 5 years, 11 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 unified diff | Download patch
« no previous file with comments | « ui/views/bubble/bubble_window_targeter.cc ('k') | ui/views/bubble/tray_bubble_view.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "ui/views/bubble/bubble_window_targeter.h"
6
7 #include "ui/aura/window.h"
8 #include "ui/aura/window_event_dispatcher.h"
9 #include "ui/views/bubble/bubble_border.h"
10 #include "ui/views/bubble/bubble_delegate.h"
11 #include "ui/views/test/views_test_base.h"
12 #include "ui/views/widget/widget.h"
13
14 namespace views {
15
16 namespace {
17
18 class WidgetOwnsNativeBubble : public BubbleDelegateView {
19 public:
20 WidgetOwnsNativeBubble(View* content, BubbleBorder::Arrow arrow)
21 : BubbleDelegateView(content, arrow) {
22 }
23
24 virtual ~WidgetOwnsNativeBubble() {}
25
26 private:
27 // BubbleDelegateView:
28 virtual void OnBeforeBubbleWidgetInit(Widget::InitParams* params,
29 Widget* widget) const override {
30 params->ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
31 }
32
33 DISALLOW_COPY_AND_ASSIGN(WidgetOwnsNativeBubble);
34 };
35
36 } // namespace
37
38 class BubbleWindowTargeterTest : public ViewsTestBase {
39 public:
40 BubbleWindowTargeterTest()
41 : bubble_delegate_(NULL) {
42 }
43 virtual ~BubbleWindowTargeterTest() {}
44
45 virtual void SetUp() override {
46 ViewsTestBase::SetUp();
47 CreateAnchorWidget();
48 CreateBubbleWidget();
49
50 anchor_widget()->Show();
51 bubble_widget()->Show();
52 }
53
54 virtual void TearDown() override {
55 bubble_delegate_ = NULL;
56 bubble_widget_.reset();
57 anchor_.reset();
58 ViewsTestBase::TearDown();
59 }
60
61 Widget* anchor_widget() { return anchor_.get(); }
62 Widget* bubble_widget() { return bubble_widget_.get(); }
63 BubbleDelegateView* bubble_delegate() { return bubble_delegate_; }
64
65 private:
66 void CreateAnchorWidget() {
67 anchor_.reset(new Widget());
68 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW);
69 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
70 anchor_->Init(params);
71 }
72
73 void CreateBubbleWidget() {
74 bubble_delegate_ = new WidgetOwnsNativeBubble(
75 anchor_->GetContentsView(), BubbleBorder::NONE);
76 bubble_delegate_->set_color(SK_ColorGREEN);
77 bubble_widget_.reset(BubbleDelegateView::CreateBubble(bubble_delegate_));
78 }
79
80 scoped_ptr<Widget> anchor_;
81 scoped_ptr<Widget> bubble_widget_;
82 BubbleDelegateView* bubble_delegate_;
83
84 DISALLOW_COPY_AND_ASSIGN(BubbleWindowTargeterTest);
85 };
86
87 TEST_F(BubbleWindowTargeterTest, HitTest) {
88 ui::EventTarget* root = bubble_widget()->GetNativeWindow()->GetRootWindow();
89 ui::EventTargeter* targeter = root->GetEventTargeter();
90 aura::Window* bubble_window = bubble_widget()->GetNativeWindow();
91 gfx::Rect bubble_bounds = bubble_window->GetBoundsInRootWindow();
92
93 {
94 bubble_delegate()->set_margins(gfx::Insets());
95 ui::MouseEvent move1(ui::ET_MOUSE_MOVED, bubble_bounds.origin(),
96 bubble_bounds.origin(), ui::EF_NONE, ui::EF_NONE);
97 EXPECT_EQ(bubble_window, targeter->FindTargetForEvent(root, &move1));
98 }
99 {
100 bubble_delegate()->set_margins(gfx::Insets(20, 20, 20, 20));
101 ui::MouseEvent move1(ui::ET_MOUSE_MOVED, bubble_bounds.origin(),
102 bubble_bounds.origin(), ui::EF_NONE, ui::EF_NONE);
103 EXPECT_EQ(bubble_window, targeter->FindTargetForEvent(root, &move1));
104 }
105
106 bubble_window->SetEventTargeter(scoped_ptr<ui::EventTargeter>(
107 new BubbleWindowTargeter(bubble_delegate())));
108 {
109 bubble_delegate()->set_margins(gfx::Insets(20, 20, 20, 20));
110 ui::MouseEvent move1(ui::ET_MOUSE_MOVED, bubble_bounds.origin(),
111 bubble_bounds.origin(), ui::EF_NONE, ui::EF_NONE);
112 EXPECT_NE(bubble_window, targeter->FindTargetForEvent(root, &move1));
113 }
114 }
115
116 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/bubble/bubble_window_targeter.cc ('k') | ui/views/bubble/tray_bubble_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698