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

Side by Side Diff: ui/ozone/platform/wayland/wayland_window_unittest.cc

Issue 1712103002: ozone/platform/wayland: Implement pointer handling (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add second window for WaylandPointerTest.Leave, check for NULL surface in WaylandPointer::{Enter,Le… Created 4 years, 9 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
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 <wayland-server-core.h> 5 #include <wayland-server-core.h>
6 #include <xdg-shell-unstable-v5-server-protocol.h> 6 #include <xdg-shell-unstable-v5-server-protocol.h>
7 7
8 #include "base/strings/utf_string_conversions.h" 8 #include "base/strings/utf_string_conversions.h"
9 #include "testing/gmock/include/gmock/gmock.h" 9 #include "testing/gmock/include/gmock/gmock.h"
10 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
11 #include "ui/events/event.h"
11 #include "ui/ozone/platform/wayland/fake_server.h" 12 #include "ui/ozone/platform/wayland/fake_server.h"
12 #include "ui/ozone/platform/wayland/mock_platform_window_delegate.h" 13 #include "ui/ozone/platform/wayland/mock_platform_window_delegate.h"
13 #include "ui/ozone/platform/wayland/wayland_display.h" 14 #include "ui/ozone/platform/wayland/wayland_display.h"
14 #include "ui/ozone/platform/wayland/wayland_window.h" 15 #include "ui/ozone/platform/wayland/wayland_window.h"
15 16
16 using ::testing::Eq; 17 using ::testing::Eq;
17 using ::testing::Mock; 18 using ::testing::Mock;
18 using ::testing::SaveArg; 19 using ::testing::SaveArg;
19 using ::testing::StrEq; 20 using ::testing::StrEq;
20 using ::testing::_; 21 using ::testing::_;
(...skipping 16 matching lines...) Expand all
37 38
38 server.Pause(); 39 server.Pause();
39 40
40 EXPECT_TRUE(server.GetObject<wl::MockSurface>(window.GetWidget())); 41 EXPECT_TRUE(server.GetObject<wl::MockSurface>(window.GetWidget()));
41 server.Resume(); 42 server.Resume();
42 } 43 }
43 44
44 class WaylandWindowTest : public testing::Test { 45 class WaylandWindowTest : public testing::Test {
45 public: 46 public:
46 WaylandWindowTest() 47 WaylandWindowTest()
47 : window(&delegate, &display, gfx::Rect(0, 0, 800, 600)) {} 48 : window(&delegate, &display, gfx::Rect(0, 0, 800, 600)),
49 test_mouse_event(ET_MOUSE_PRESSED,
50 gfx::Point(10, 15),
51 gfx::Point(10, 15),
52 base::TimeDelta::FromSeconds(123456),
53 EF_LEFT_MOUSE_BUTTON | EF_RIGHT_MOUSE_BUTTON,
54 EF_LEFT_MOUSE_BUTTON) {}
48 55
49 void SetUp() override { 56 void SetUp() override {
50 ASSERT_TRUE(server.Start()); 57 ASSERT_TRUE(server.Start());
51 ASSERT_TRUE(display.Initialize()); 58 ASSERT_TRUE(display.Initialize());
52 ASSERT_TRUE(window.Initialize()); 59 ASSERT_TRUE(window.Initialize());
53 wl_display_roundtrip(display.display()); 60 wl_display_roundtrip(display.display());
54 61
55 server.Pause(); 62 server.Pause();
56 63
57 auto surface = server.GetObject<wl::MockSurface>(window.GetWidget()); 64 auto surface = server.GetObject<wl::MockSurface>(window.GetWidget());
(...skipping 14 matching lines...) Expand all
72 wl_display_roundtrip(display.display()); 79 wl_display_roundtrip(display.display());
73 server.Pause(); 80 server.Pause();
74 } 81 }
75 82
76 private: 83 private:
77 wl::FakeServer server; 84 wl::FakeServer server;
78 bool initialized = false; 85 bool initialized = false;
79 86
80 protected: 87 protected:
81 WaylandDisplay display; 88 WaylandDisplay display;
82
83 MockPlatformWindowDelegate delegate; 89 MockPlatformWindowDelegate delegate;
84 WaylandWindow window; 90 WaylandWindow window;
85 91
86 wl::MockXdgSurface* xdg_surface; 92 wl::MockXdgSurface* xdg_surface;
87 93
94 MouseEvent test_mouse_event;
95
88 private: 96 private:
89 DISALLOW_COPY_AND_ASSIGN(WaylandWindowTest); 97 DISALLOW_COPY_AND_ASSIGN(WaylandWindowTest);
90 }; 98 };
91 99
92 TEST_F(WaylandWindowTest, SetTitle) { 100 TEST_F(WaylandWindowTest, SetTitle) {
93 EXPECT_CALL(*xdg_surface, SetTitle(StrEq("hello"))); 101 EXPECT_CALL(*xdg_surface, SetTitle(StrEq("hello")));
94 window.SetTitle(base::ASCIIToUTF16("hello")); 102 window.SetTitle(base::ASCIIToUTF16("hello"));
95 } 103 }
96 104
97 TEST_F(WaylandWindowTest, Maximize) { 105 TEST_F(WaylandWindowTest, Maximize) {
98 EXPECT_CALL(*xdg_surface, SetMaximized()); 106 EXPECT_CALL(*xdg_surface, SetMaximized());
99 window.Maximize(); 107 window.Maximize();
100 } 108 }
101 109
102 TEST_F(WaylandWindowTest, Minimize) { 110 TEST_F(WaylandWindowTest, Minimize) {
103 EXPECT_CALL(*xdg_surface, SetMinimized()); 111 EXPECT_CALL(*xdg_surface, SetMinimized());
104 window.Minimize(); 112 window.Minimize();
105 } 113 }
106 114
107 TEST_F(WaylandWindowTest, Restore) { 115 TEST_F(WaylandWindowTest, Restore) {
108 EXPECT_CALL(*xdg_surface, UnsetMaximized()); 116 EXPECT_CALL(*xdg_surface, UnsetMaximized());
109 window.Restore(); 117 window.Restore();
110 } 118 }
111 119
120 TEST_F(WaylandWindowTest, CanDispatchMouseEventDefault) {
121 EXPECT_FALSE(window.CanDispatchEvent(&test_mouse_event));
122 }
123
124 TEST_F(WaylandWindowTest, CanDispatchMouseEventFocus) {
125 window.set_pointer_focus(true);
126 EXPECT_TRUE(window.CanDispatchEvent(&test_mouse_event));
127 }
128
129 TEST_F(WaylandWindowTest, CanDispatchMouseEventUnfocus) {
130 window.set_pointer_focus(false);
131 EXPECT_FALSE(window.CanDispatchEvent(&test_mouse_event));
132 }
133
134 ACTION_P(CloneEvent, ptr) {
135 *ptr = Event::Clone(*arg0);
136 }
137
138 TEST_F(WaylandWindowTest, DispatchEvent) {
139 scoped_ptr<Event> event;
140 EXPECT_CALL(delegate, DispatchEvent(_)).WillOnce(CloneEvent(&event));
141 window.DispatchEvent(&test_mouse_event);
142 ASSERT_TRUE(event);
143 ASSERT_TRUE(event->IsMouseEvent());
144 auto mouse_event = static_cast<MouseEvent*>(event.get());
145 EXPECT_EQ(mouse_event->location_f(), test_mouse_event.location_f());
146 EXPECT_EQ(mouse_event->root_location_f(), test_mouse_event.root_location_f());
147 EXPECT_EQ(mouse_event->time_stamp(), test_mouse_event.time_stamp());
148 EXPECT_EQ(mouse_event->button_flags(), test_mouse_event.button_flags());
149 EXPECT_EQ(mouse_event->changed_button_flags(),
150 test_mouse_event.changed_button_flags());
151 }
152
112 TEST_F(WaylandWindowTest, ConfigureEvent) { 153 TEST_F(WaylandWindowTest, ConfigureEvent) {
113 wl_array states; 154 wl_array states;
114 wl_array_init(&states); 155 wl_array_init(&states);
115 xdg_surface_send_configure(xdg_surface->resource(), 1000, 1000, &states, 12); 156 xdg_surface_send_configure(xdg_surface->resource(), 1000, 1000, &states, 12);
116 xdg_surface_send_configure(xdg_surface->resource(), 1500, 1000, &states, 13); 157 xdg_surface_send_configure(xdg_surface->resource(), 1500, 1000, &states, 13);
117 158
118 // Make sure that the implementation does not call OnBoundsChanged for each 159 // Make sure that the implementation does not call OnBoundsChanged for each
119 // configure event if it receives multiple in a row. 160 // configure event if it receives multiple in a row.
120 EXPECT_CALL(delegate, OnBoundsChanged(_)).Times(0); 161 EXPECT_CALL(delegate, OnBoundsChanged(_)).Times(0);
121 Sync(); 162 Sync();
122 Mock::VerifyAndClearExpectations(&delegate); 163 Mock::VerifyAndClearExpectations(&delegate);
123 164
124 EXPECT_CALL(delegate, OnBoundsChanged(Eq(gfx::Rect(0, 0, 1500, 1000)))); 165 EXPECT_CALL(delegate, OnBoundsChanged(Eq(gfx::Rect(0, 0, 1500, 1000))));
125 EXPECT_CALL(*xdg_surface, AckConfigure(13)); 166 EXPECT_CALL(*xdg_surface, AckConfigure(13));
126 window.ApplyPendingBounds(); 167 window.ApplyPendingBounds();
127 } 168 }
128 169
129 } // namespace ui 170 } // namespace ui
OLDNEW
« ui/ozone/platform/wayland/wayland_pointer.cc ('K') | « ui/ozone/platform/wayland/wayland_window.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698