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

Side by Side Diff: ui/views/view_targeter_unittest.cc

Issue 354063003: View should store a ViewTargeter instead of an EventTargeter (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: comment addressed Created 6 years, 5 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 | Annotate | Revision Log
« no previous file with comments | « ui/views/view.cc ('k') | ui/views/widget/root_view.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 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 "ui/views/view_targeter.h" 5 #include "ui/views/view_targeter.h"
6 6
7 #include "ui/events/event_targeter.h" 7 #include "ui/events/event_targeter.h"
8 #include "ui/events/event_utils.h" 8 #include "ui/events/event_utils.h"
9 #include "ui/views/test/views_test_base.h" 9 #include "ui/views/test/views_test_base.h"
10 #include "ui/views/view_targeter.h"
10 #include "ui/views/widget/root_view.h" 11 #include "ui/views/widget/root_view.h"
11 12
12 namespace views { 13 namespace views {
13 14
14 // A derived class of View used for testing purposes. 15 // A derived class of View used for testing purposes.
15 class TestingView : public View { 16 class TestingView : public View {
16 public: 17 public:
17 TestingView() : can_process_events_within_subtree_(true) {} 18 TestingView() : can_process_events_within_subtree_(true) {}
18 virtual ~TestingView() {} 19 virtual ~TestingView() {}
19 20
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 View* child = new View; 55 View* child = new View;
55 View* grandchild = new View; 56 View* grandchild = new View;
56 57
57 widget.SetContentsView(content); 58 widget.SetContentsView(content);
58 content->AddChildView(child); 59 content->AddChildView(child);
59 child->AddChildView(grandchild); 60 child->AddChildView(grandchild);
60 61
61 grandchild->SetFocusable(true); 62 grandchild->SetFocusable(true);
62 grandchild->RequestFocus(); 63 grandchild->RequestFocus();
63 64
64 ui::EventTargeter* targeter = new ViewTargeter(); 65 ViewTargeter* view_targeter = new ViewTargeter();
66 ui::EventTargeter* targeter = view_targeter;
65 internal::RootView* root_view = 67 internal::RootView* root_view =
66 static_cast<internal::RootView*>(widget.GetRootView()); 68 static_cast<internal::RootView*>(widget.GetRootView());
67 root_view->SetEventTargeter(make_scoped_ptr(targeter)); 69 root_view->SetEventTargeter(make_scoped_ptr(view_targeter));
68 70
69 ui::KeyEvent key_event(ui::ET_KEY_PRESSED, ui::VKEY_A, 0, true); 71 ui::KeyEvent key_event(ui::ET_KEY_PRESSED, ui::VKEY_A, 0, true);
70 72
71 // The focused view should be the initial target of the event. 73 // The focused view should be the initial target of the event.
72 ui::EventTarget* current_target = targeter->FindTargetForEvent(root_view, 74 ui::EventTarget* current_target = targeter->FindTargetForEvent(root_view,
73 &key_event); 75 &key_event);
74 EXPECT_EQ(grandchild, static_cast<View*>(current_target)); 76 EXPECT_EQ(grandchild, static_cast<View*>(current_target));
75 77
76 // Verify that FindNextBestTarget() will return the parent view of the 78 // Verify that FindNextBestTarget() will return the parent view of the
77 // argument (and NULL if the argument has no parent view). 79 // argument (and NULL if the argument has no parent view).
(...skipping 24 matching lines...) Expand all
102 content->SetBounds(0, 0, 100, 100); 104 content->SetBounds(0, 0, 100, 100);
103 View* child = new View; 105 View* child = new View;
104 child->SetBounds(50, 50, 20, 20); 106 child->SetBounds(50, 50, 20, 20);
105 View* grandchild = new View; 107 View* grandchild = new View;
106 grandchild->SetBounds(0, 0, 5, 5); 108 grandchild->SetBounds(0, 0, 5, 5);
107 109
108 widget.SetContentsView(content); 110 widget.SetContentsView(content);
109 content->AddChildView(child); 111 content->AddChildView(child);
110 child->AddChildView(grandchild); 112 child->AddChildView(grandchild);
111 113
112 ui::EventTargeter* targeter = new ViewTargeter(); 114 ViewTargeter* view_targeter = new ViewTargeter();
115 ui::EventTargeter* targeter = view_targeter;
113 internal::RootView* root_view = 116 internal::RootView* root_view =
114 static_cast<internal::RootView*>(widget.GetRootView()); 117 static_cast<internal::RootView*>(widget.GetRootView());
115 root_view->SetEventTargeter(make_scoped_ptr(targeter)); 118 root_view->SetEventTargeter(make_scoped_ptr(view_targeter));
116 119
117 // The event falls within the bounds of |child| and |content| but not 120 // The event falls within the bounds of |child| and |content| but not
118 // |grandchild|, so |child| should be the initial target for the event. 121 // |grandchild|, so |child| should be the initial target for the event.
119 ui::ScrollEvent scroll(ui::ET_SCROLL, 122 ui::ScrollEvent scroll(ui::ET_SCROLL,
120 gfx::Point(60, 60), 123 gfx::Point(60, 60),
121 ui::EventTimeForNow(), 124 ui::EventTimeForNow(),
122 0, 125 0,
123 0, 3, 126 0, 3,
124 0, 3, 127 0, 3,
125 2); 128 2);
(...skipping 28 matching lines...) Expand all
154 157
155 // Tests the basic functionality of the method 158 // Tests the basic functionality of the method
156 // ViewTargeter::SubtreeShouldBeExploredForEvent(). 159 // ViewTargeter::SubtreeShouldBeExploredForEvent().
157 TEST_F(ViewTargeterTest, SubtreeShouldBeExploredForEvent) { 160 TEST_F(ViewTargeterTest, SubtreeShouldBeExploredForEvent) {
158 Widget widget; 161 Widget widget;
159 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); 162 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
160 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; 163 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
161 params.bounds = gfx::Rect(0, 0, 650, 650); 164 params.bounds = gfx::Rect(0, 0, 650, 650);
162 widget.Init(params); 165 widget.Init(params);
163 166
164 ui::EventTargeter* targeter = new ViewTargeter(); 167 ViewTargeter* targeter = new ViewTargeter();
165 internal::RootView* root_view = 168 internal::RootView* root_view =
166 static_cast<internal::RootView*>(widget.GetRootView()); 169 static_cast<internal::RootView*>(widget.GetRootView());
167 root_view->SetEventTargeter(make_scoped_ptr(targeter)); 170 root_view->SetEventTargeter(make_scoped_ptr(targeter));
168 171
169 // The coordinates used for SetBounds() are in the parent coordinate space. 172 // The coordinates used for SetBounds() are in the parent coordinate space.
170 View v1, v2, v3; 173 View v1, v2, v3;
171 v1.SetBounds(0, 0, 300, 300); 174 v1.SetBounds(0, 0, 300, 300);
172 v2.SetBounds(100, 100, 100, 100); 175 v2.SetBounds(100, 100, 100, 100);
173 v3.SetBounds(0, 0, 10, 10); 176 v3.SetBounds(0, 0, 10, 10);
174 v3.SetVisible(false); 177 v3.SetVisible(false);
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 // Tests that FindTargetForEvent() returns the correct target when some 222 // Tests that FindTargetForEvent() returns the correct target when some
220 // views in the view tree return false when CanProcessEventsWithinSubtree() 223 // views in the view tree return false when CanProcessEventsWithinSubtree()
221 // is called on them. 224 // is called on them.
222 TEST_F(ViewTargeterTest, CanProcessEventsWithinSubtree) { 225 TEST_F(ViewTargeterTest, CanProcessEventsWithinSubtree) {
223 Widget widget; 226 Widget widget;
224 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); 227 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
225 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; 228 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
226 params.bounds = gfx::Rect(0, 0, 650, 650); 229 params.bounds = gfx::Rect(0, 0, 650, 650);
227 widget.Init(params); 230 widget.Init(params);
228 231
229 ui::EventTargeter* targeter = new ViewTargeter(); 232 ViewTargeter* view_targeter = new ViewTargeter();
233 ui::EventTargeter* targeter = view_targeter;
230 internal::RootView* root_view = 234 internal::RootView* root_view =
231 static_cast<internal::RootView*>(widget.GetRootView()); 235 static_cast<internal::RootView*>(widget.GetRootView());
232 root_view->SetEventTargeter(make_scoped_ptr(targeter)); 236 root_view->SetEventTargeter(make_scoped_ptr(view_targeter));
233 237
234 // The coordinates used for SetBounds() are in the parent coordinate space. 238 // The coordinates used for SetBounds() are in the parent coordinate space.
235 TestingView v1, v2, v3; 239 TestingView v1, v2, v3;
236 v1.SetBounds(0, 0, 300, 300); 240 v1.SetBounds(0, 0, 300, 300);
237 v2.SetBounds(100, 100, 100, 100); 241 v2.SetBounds(100, 100, 100, 100);
238 v3.SetBounds(0, 0, 10, 10); 242 v3.SetBounds(0, 0, 10, 10);
239 root_view->AddChildView(&v1); 243 root_view->AddChildView(&v1);
240 v1.AddChildView(&v2); 244 v1.AddChildView(&v2);
241 v2.AddChildView(&v3); 245 v2.AddChildView(&v3);
242 246
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 v1.set_can_process_events_within_subtree(false); 287 v1.set_can_process_events_within_subtree(false);
284 current_target = targeter->FindTargetForEvent(root_view, &scroll); 288 current_target = targeter->FindTargetForEvent(root_view, &scroll);
285 EXPECT_EQ(root_view, current_target); 289 EXPECT_EQ(root_view, current_target);
286 290
287 // TODO(tdanderson): We should also test that targeting works correctly 291 // TODO(tdanderson): We should also test that targeting works correctly
288 // with gestures. See crbug.com/375822. 292 // with gestures. See crbug.com/375822.
289 } 293 }
290 294
291 } // namespace test 295 } // namespace test
292 } // namespace views 296 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/view.cc ('k') | ui/views/widget/root_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698