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

Side by Side Diff: mojo/services/window_manager/view_targeter_unittest.cc

Issue 737913002: Dispatch key events to the currently focused window. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Redo FocusController storage so that it is a local property on a view. Created 6 years, 1 month 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
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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 "mojo/services/window_manager/view_targeter.h" 5 #include "mojo/services/window_manager/view_targeter.h"
6 6
7 #include "mojo/services/window_manager/basic_focus_rules.h"
8 #include "mojo/services/window_manager/focus_controller.h"
7 #include "mojo/services/window_manager/view_event_dispatcher.h" 9 #include "mojo/services/window_manager/view_event_dispatcher.h"
8 #include "mojo/services/window_manager/window_manager_test_util.h" 10 #include "mojo/services/window_manager/window_manager_test_util.h"
9 #include "testing/gtest/include/gtest/gtest.h" 11 #include "testing/gtest/include/gtest/gtest.h"
10 #include "ui/events/test/test_event_handler.h" 12 #include "ui/events/test/test_event_handler.h"
11 13
12 namespace mojo { 14 namespace mojo {
13 15
14 class ViewTargeterTest : public testing::Test { 16 class ViewTargeterTest : public testing::Test {
15 public: 17 public:
16 ViewTargeterTest() {} 18 ViewTargeterTest() {}
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 gfx::Point(20, 20), ui::EF_NONE, ui::EF_NONE); 54 gfx::Point(20, 20), ui::EF_NONE, ui::EF_NONE);
53 ui::EventDispatchDetails details = 55 ui::EventDispatchDetails details =
54 view_event_dispatcher_->OnEventFromSource(&press); 56 view_event_dispatcher_->OnEventFromSource(&press);
55 ASSERT_FALSE(details.dispatcher_destroyed); 57 ASSERT_FALSE(details.dispatcher_destroyed);
56 58
57 EXPECT_EQ(1, handler.num_mouse_events()); 59 EXPECT_EQ(1, handler.num_mouse_events());
58 60
59 one.target()->RemovePreTargetHandler(&handler); 61 one.target()->RemovePreTargetHandler(&handler);
60 } 62 }
61 63
64 TEST_F(ViewTargeterTest, KeyTest) {
65 // The dispatcher will take ownership of the tree root.
66 TestView root(1, gfx::Rect(0, 0, 100, 100));
67 ViewTarget* root_target = root.target();
68 root_target->SetEventTargeter(scoped_ptr<ViewTargeter>(new ViewTargeter()));
69 view_event_dispatcher_->SetRootViewTarget(root_target);
70
71 TestView one(2, gfx::Rect(0, 0, 500, 100));
72 TestView two(3, gfx::Rect(501, 0, 500, 1000));
73
74 root.AddChild(&one);
75 root.AddChild(&two);
76
77 ui::test::TestEventHandler one_handler;
78 one.target()->AddPreTargetHandler(&one_handler);
79
80 ui::test::TestEventHandler two_handler;
81 two.target()->AddPreTargetHandler(&two_handler);
82
83 FocusController focus_controller(scoped_ptr<mojo::FocusRules>(
84 new mojo::BasicFocusRules(&root)));
85 SetFocusController(&root, &focus_controller);
86
87 // Focus |one|. Then test that it receives a key event.
88 focus_controller.FocusView(&one);
89 ui::KeyEvent key_event_one(ui::ET_KEY_PRESSED, ui::VKEY_A, 0);
90 ui::EventDispatchDetails details =
91 view_event_dispatcher_->OnEventFromSource(&key_event_one);
92 ASSERT_FALSE(details.dispatcher_destroyed);
93 EXPECT_EQ(1, one_handler.num_key_events());
94
95 // Focus |two|. Then test that it receives a key event.
96 focus_controller.FocusView(&two);
97 ui::KeyEvent key_event_two(ui::ET_KEY_PRESSED, ui::VKEY_A, 0);
98 details = view_event_dispatcher_->OnEventFromSource(&key_event_two);
99 ASSERT_FALSE(details.dispatcher_destroyed);
100 EXPECT_EQ(1, two_handler.num_key_events());
101
102 two.target()->RemovePreTargetHandler(&two_handler);
103 one.target()->RemovePreTargetHandler(&one_handler);
104 }
105
62 } // namespace mojo 106 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/services/window_manager/view_targeter.cc ('k') | mojo/services/window_manager/window_manager_app.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698