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

Side by Side Diff: ui/views/mus/native_widget_mus_unittest.cc

Issue 2013503002: Keep non-key event handling in-house for NativeWidgetMus Base URL: https://chromium.googlesource.com/chromium/src.git@native_widget_mus9
Patch Set: Use aura::EnvInputStateController for mouse events Created 4 years, 6 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/mus/native_widget_mus.cc ('k') | ui/views/mus/window_tree_host_mus.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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/mus/native_widget_mus.h" 5 #include "ui/views/mus/native_widget_mus.h"
6 6
7 #include "base/callback.h" 7 #include "base/callback.h"
8 #include "base/macros.h" 8 #include "base/macros.h"
9 #include "components/mus/public/cpp/property_type_converters.h" 9 #include "components/mus/public/cpp/property_type_converters.h"
10 #include "components/mus/public/cpp/tests/window_tree_client_impl_private.h" 10 #include "components/mus/public/cpp/tests/window_tree_client_impl_private.h"
(...skipping 25 matching lines...) Expand all
36 namespace views { 36 namespace views {
37 namespace { 37 namespace {
38 38
39 // A view that reports any mouse press as handled. 39 // A view that reports any mouse press as handled.
40 class HandleMousePressView : public View { 40 class HandleMousePressView : public View {
41 public: 41 public:
42 HandleMousePressView() {} 42 HandleMousePressView() {}
43 ~HandleMousePressView() override {} 43 ~HandleMousePressView() override {}
44 44
45 // View: 45 // View:
46 bool OnMousePressed(const ui::MouseEvent& event) override { return true; } 46 bool OnMousePressed(const ui::MouseEvent& event) override {
47 latest_event_location_ = event.location();
48 return true;
49 }
50
51 gfx::Point latest_event_location() { return latest_event_location_; }
47 52
48 private: 53 private:
54 gfx::Point latest_event_location_;
55
49 DISALLOW_COPY_AND_ASSIGN(HandleMousePressView); 56 DISALLOW_COPY_AND_ASSIGN(HandleMousePressView);
50 }; 57 };
51 58
52 // A view that deletes a widget on mouse press. 59 // A view that deletes a widget on mouse press.
53 class DeleteWidgetView : public View { 60 class DeleteWidgetView : public View {
54 public: 61 public:
55 explicit DeleteWidgetView(std::unique_ptr<Widget>* widget_ptr) 62 explicit DeleteWidgetView(std::unique_ptr<Widget>* widget_ptr)
56 : widget_ptr_(widget_ptr) {} 63 : widget_ptr_(widget_ptr) {}
57 ~DeleteWidgetView() override {} 64 ~DeleteWidgetView() override {}
58 65
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 void AckCallback(mus::mojom::EventResult result) { 171 void AckCallback(mus::mojom::EventResult result) {
165 ack_callback_count_++; 172 ack_callback_count_++;
166 EXPECT_EQ(mus::mojom::EventResult::HANDLED, result); 173 EXPECT_EQ(mus::mojom::EventResult::HANDLED, result);
167 } 174 }
168 175
169 // Returns a mouse pressed event inside the widget. Tests that place views 176 // Returns a mouse pressed event inside the widget. Tests that place views
170 // within the widget that respond to the event must be constructed within the 177 // within the widget that respond to the event must be constructed within the
171 // widget coordinate space such that they respond correctly. 178 // widget coordinate space such that they respond correctly.
172 std::unique_ptr<ui::MouseEvent> CreateMouseEvent() { 179 std::unique_ptr<ui::MouseEvent> CreateMouseEvent() {
173 return base::WrapUnique(new ui::MouseEvent( 180 return base::WrapUnique(new ui::MouseEvent(
174 ui::ET_MOUSE_PRESSED, gfx::Point(50, 50), gfx::Point(50, 50), 181 ui::ET_MOUSE_PRESSED, mouse_location(), mouse_location(),
175 base::TimeDelta(), ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON)); 182 base::TimeDelta(), ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON));
176 } 183 }
177 184
178 // Simulates an input event to the NativeWidget. 185 // Simulates an input event to the NativeWidget.
179 void OnWindowInputEvent( 186 void OnWindowInputEvent(
180 NativeWidgetMus* native_widget, 187 NativeWidgetMus* native_widget,
181 const ui::Event& event, 188 const ui::Event& event,
182 std::unique_ptr<base::Callback<void(mus::mojom::EventResult)>>* 189 std::unique_ptr<base::Callback<void(mus::mojom::EventResult)>>*
183 ack_callback) { 190 ack_callback) {
184 native_widget->OnWindowInputEvent(native_widget->window(), event, 191 native_widget->OnWindowInputEvent(native_widget->window(), event,
185 ack_callback); 192 ack_callback);
186 } 193 }
187 194
188 protected: 195 protected:
189 gfx::Rect initial_bounds() { return gfx::Rect(10, 20, 100, 200); } 196 gfx::Rect initial_bounds() { return gfx::Rect(10, 20, 100, 200); }
190 197
198 gfx::Point mouse_location() {
199 return gfx::Point(50, 50);
200 }
201
191 private: 202 private:
192 int ack_callback_count_ = 0; 203 int ack_callback_count_ = 0;
193 204
194 DISALLOW_COPY_AND_ASSIGN(NativeWidgetMusTest); 205 DISALLOW_COPY_AND_ASSIGN(NativeWidgetMusTest);
195 }; 206 };
196 207
197 // Tests communication of activation and focus between Widget and 208 // Tests communication of activation and focus between Widget and
198 // NativeWidgetMus. 209 // NativeWidgetMus.
199 TEST_F(NativeWidgetMusTest, OnActivationChanged) { 210 TEST_F(NativeWidgetMusTest, OnActivationChanged) {
200 std::unique_ptr<Widget> widget(CreateWidget(nullptr)); 211 std::unique_ptr<Widget> widget(CreateWidget(nullptr));
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
414 content->AddPreTargetHandler(&handler); 425 content->AddPreTargetHandler(&handler);
415 426
416 std::unique_ptr<ui::MouseEvent> mouse = CreateMouseEvent(); 427 std::unique_ptr<ui::MouseEvent> mouse = CreateMouseEvent();
417 NativeWidgetMus* native_widget = 428 NativeWidgetMus* native_widget =
418 static_cast<NativeWidgetMus*>(widget->native_widget_private()); 429 static_cast<NativeWidgetMus*>(widget->native_widget_private());
419 mus::WindowTreeClientImplPrivate test_api(native_widget->window()); 430 mus::WindowTreeClientImplPrivate test_api(native_widget->window());
420 test_api.CallOnWindowInputEvent(native_widget->window(), *mouse); 431 test_api.CallOnWindowInputEvent(native_widget->window(), *mouse);
421 EXPECT_EQ(1, handler.num_mouse_events()); 432 EXPECT_EQ(1, handler.num_mouse_events());
422 } 433 }
423 434
435 TEST_F(NativeWidgetMusTest, WidgetViewMouseEventAgreement) {
436 std::unique_ptr<Widget> widget(CreateWidget(nullptr));
437 widget->Show();
438
439 HandleMousePressView* content = new HandleMousePressView;
440 int content_x = 10;
441 int content_y = 20;
442 content->SetBounds(content_x, content_y, 90, 180);
443 widget->GetContentsView()->AddChildView(content);
444
445 std::unique_ptr<ui::MouseEvent> mouse = CreateMouseEvent();
446 NativeWidgetMus* native_widget =
447 static_cast<NativeWidgetMus*>(widget->native_widget_private());
448 mus::WindowTreeClientImplPrivate test_api(native_widget->window());
449 test_api.CallOnWindowInputEvent(native_widget->window(), *mouse);
450
451 // Location delivered to view should be relative to view's origin.
452 EXPECT_EQ(gfx::Point(mouse_location().x() - content_x,
453 mouse_location().y() - content_y),
454 content->latest_event_location());
455 }
456
424 // Tests that an incoming UI event is acked with the handled status. 457 // Tests that an incoming UI event is acked with the handled status.
425 TEST_F(NativeWidgetMusTest, EventAcked) { 458 TEST_F(NativeWidgetMusTest, EventAcked) {
426 std::unique_ptr<Widget> widget(CreateWidget(nullptr)); 459 std::unique_ptr<Widget> widget(CreateWidget(nullptr));
427 widget->Show(); 460 widget->Show();
428 461
429 View* content = new HandleMousePressView; 462 View* content = new HandleMousePressView;
430 content->SetBounds(10, 20, 90, 180); 463 content->SetBounds(10, 20, 90, 180);
431 widget->GetContentsView()->AddChildView(content); 464 widget->GetContentsView()->AddChildView(content);
432 465
433 // Dispatch an input event to the window and view. 466 // Dispatch an input event to the window and view.
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
515 mus_window->SetBounds(end_bounds); 548 mus_window->SetBounds(end_bounds);
516 549
517 EXPECT_EQ(end_bounds, mus_window->bounds()); 550 EXPECT_EQ(end_bounds, mus_window->bounds());
518 551
519 // Main check for this test: Setting |mus_window| bounds while bypassing 552 // Main check for this test: Setting |mus_window| bounds while bypassing
520 // |native_widget| must update window_tree_host bounds. 553 // |native_widget| must update window_tree_host bounds.
521 EXPECT_EQ(end_bounds, native_widget->window_tree_host()->GetBounds()); 554 EXPECT_EQ(end_bounds, native_widget->window_tree_host()->GetBounds());
522 } 555 }
523 556
524 } // namespace views 557 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/mus/native_widget_mus.cc ('k') | ui/views/mus/window_tree_host_mus.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698