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

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

Issue 1712103002: ozone/platform/wayland: Implement pointer handling (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase 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
« no previous file with comments | « ui/ozone/platform/wayland/fake_server.h ('k') | ui/ozone/platform/wayland/wayland.gypi » ('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/ozone/platform/wayland/fake_server.h" 5 #include "ui/ozone/platform/wayland/fake_server.h"
6 6
7 #include <sys/socket.h> 7 #include <sys/socket.h>
8 #include <wayland-server.h> 8 #include <wayland-server.h>
9 #include <xdg-shell-unstable-v5-server-protocol.h> 9 #include <xdg-shell-unstable-v5-server-protocol.h>
10 10
11 #include "base/bind.h" 11 #include "base/bind.h"
12 #include "base/files/scoped_file.h" 12 #include "base/files/scoped_file.h"
13 #include "base/run_loop.h" 13 #include "base/run_loop.h"
14 #include "base/strings/string_number_conversions.h" 14 #include "base/strings/string_number_conversions.h"
15 15
16 namespace wl { 16 namespace wl {
17 namespace { 17 namespace {
18 18
19 const uint32_t kCompositorVersion = 4; 19 const uint32_t kCompositorVersion = 4;
20 const uint32_t kSeatVersion = 4;
20 const uint32_t kXdgShellVersion = 1; 21 const uint32_t kXdgShellVersion = 1;
21 22
22 void DestroyResource(wl_client* client, wl_resource* resource) { 23 void DestroyResource(wl_client* client, wl_resource* resource) {
23 wl_resource_destroy(resource); 24 wl_resource_destroy(resource);
24 } 25 }
25 26
26 // wl_compositor 27 // wl_compositor
27 28
28 void CreateSurface(wl_client* client, wl_resource* resource, uint32_t id) { 29 void CreateSurface(wl_client* client, wl_resource* resource, uint32_t id) {
29 auto compositor = 30 auto compositor =
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 } 115 }
115 116
116 const struct xdg_shell_interface xdg_shell_impl = { 117 const struct xdg_shell_interface xdg_shell_impl = {
117 &DestroyResource, // destroy 118 &DestroyResource, // destroy
118 &UseUnstableVersion, // use_unstable_version 119 &UseUnstableVersion, // use_unstable_version
119 &GetXdgSurface, // get_xdg_surface 120 &GetXdgSurface, // get_xdg_surface
120 nullptr, // get_xdg_popup 121 nullptr, // get_xdg_popup
121 &Pong, // pong 122 &Pong, // pong
122 }; 123 };
123 124
125 // wl_seat
126
127 void GetPointer(wl_client* client, wl_resource* resource, uint32_t id) {
128 auto seat = static_cast<MockSeat*>(wl_resource_get_user_data(resource));
129 wl_resource* pointer_resource = wl_resource_create(
130 client, &wl_pointer_interface, wl_resource_get_version(resource), id);
131 if (!pointer_resource) {
132 wl_client_post_no_memory(client);
133 return;
134 }
135 seat->pointer.reset(new MockPointer(pointer_resource));
136 }
137
138 const struct wl_seat_interface seat_impl = {
139 &GetPointer, // get_pointer
140 nullptr, // get_keyboard
141 nullptr, // get_touch,
142 &DestroyResource, // release
143 };
144
145 // wl_pointer
146
147 const struct wl_pointer_interface pointer_impl = {
148 nullptr, // set_cursor
149 &DestroyResource, // release
150 };
151
124 // xdg_surface 152 // xdg_surface
125 153
126 void SetTitle(wl_client* client, wl_resource* resource, const char* title) { 154 void SetTitle(wl_client* client, wl_resource* resource, const char* title) {
127 static_cast<MockXdgSurface*>(wl_resource_get_user_data(resource)) 155 static_cast<MockXdgSurface*>(wl_resource_get_user_data(resource))
128 ->SetTitle(title); 156 ->SetTitle(title);
129 } 157 }
130 158
131 void SetAppId(wl_client* client, wl_resource* resource, const char* app_id) { 159 void SetAppId(wl_client* client, wl_resource* resource, const char* app_id) {
132 static_cast<MockXdgSurface*>(wl_resource_get_user_data(resource)) 160 static_cast<MockXdgSurface*>(wl_resource_get_user_data(resource))
133 ->SetAppId(app_id); 161 ->SetAppId(app_id);
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 if (xdg_surface && xdg_surface->resource()) 229 if (xdg_surface && xdg_surface->resource())
202 wl_resource_destroy(xdg_surface->resource()); 230 wl_resource_destroy(xdg_surface->resource());
203 } 231 }
204 232
205 MockSurface* MockSurface::FromResource(wl_resource* resource) { 233 MockSurface* MockSurface::FromResource(wl_resource* resource) {
206 if (!wl_resource_instance_of(resource, &wl_surface_interface, &surface_impl)) 234 if (!wl_resource_instance_of(resource, &wl_surface_interface, &surface_impl))
207 return nullptr; 235 return nullptr;
208 return static_cast<MockSurface*>(wl_resource_get_user_data(resource)); 236 return static_cast<MockSurface*>(wl_resource_get_user_data(resource));
209 } 237 }
210 238
239 MockPointer::MockPointer(wl_resource* resource) : ServerObject(resource) {
240 wl_resource_set_implementation(resource, &pointer_impl, this,
241 &ServerObject::OnResourceDestroyed);
242 }
243
244 MockPointer::~MockPointer() {}
245
211 void GlobalDeleter::operator()(wl_global* global) { 246 void GlobalDeleter::operator()(wl_global* global) {
212 wl_global_destroy(global); 247 wl_global_destroy(global);
213 } 248 }
214 249
215 Global::Global(const wl_interface* interface, 250 Global::Global(const wl_interface* interface,
216 const void* implementation, 251 const void* implementation,
217 uint32_t version) 252 uint32_t version)
218 : interface_(interface), 253 : interface_(interface),
219 implementation_(implementation), 254 implementation_(implementation),
220 version_(version) {} 255 version_(version) {}
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 288
254 MockCompositor::MockCompositor() 289 MockCompositor::MockCompositor()
255 : Global(&wl_compositor_interface, &compositor_impl, kCompositorVersion) {} 290 : Global(&wl_compositor_interface, &compositor_impl, kCompositorVersion) {}
256 291
257 MockCompositor::~MockCompositor() {} 292 MockCompositor::~MockCompositor() {}
258 293
259 void MockCompositor::AddSurface(scoped_ptr<MockSurface> surface) { 294 void MockCompositor::AddSurface(scoped_ptr<MockSurface> surface) {
260 surfaces_.push_back(std::move(surface)); 295 surfaces_.push_back(std::move(surface));
261 } 296 }
262 297
298 MockSeat::MockSeat() : Global(&wl_seat_interface, &seat_impl, kSeatVersion) {}
299
300 MockSeat::~MockSeat() {}
301
263 MockXdgShell::MockXdgShell() 302 MockXdgShell::MockXdgShell()
264 : Global(&xdg_shell_interface, &xdg_shell_impl, kXdgShellVersion) {} 303 : Global(&xdg_shell_interface, &xdg_shell_impl, kXdgShellVersion) {}
265 304
266 MockXdgShell::~MockXdgShell() {} 305 MockXdgShell::~MockXdgShell() {}
267 306
268 void DisplayDeleter::operator()(wl_display* display) { 307 void DisplayDeleter::operator()(wl_display* display) {
269 wl_display_destroy(display); 308 wl_display_destroy(display);
270 } 309 }
271 310
272 FakeServer::FakeServer() 311 FakeServer::FakeServer()
(...skipping 15 matching lines...) Expand all
288 int fd[2]; 327 int fd[2];
289 if (socketpair(AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0, fd) < 0) 328 if (socketpair(AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0, fd) < 0)
290 return false; 329 return false;
291 base::ScopedFD server_fd(fd[0]); 330 base::ScopedFD server_fd(fd[0]);
292 base::ScopedFD client_fd(fd[1]); 331 base::ScopedFD client_fd(fd[1]);
293 332
294 if (wl_display_init_shm(display_.get()) < 0) 333 if (wl_display_init_shm(display_.get()) < 0)
295 return false; 334 return false;
296 if (!compositor_.Initialize(display_.get())) 335 if (!compositor_.Initialize(display_.get()))
297 return false; 336 return false;
337 if (!seat_.Initialize(display_.get()))
338 return false;
298 if (!xdg_shell_.Initialize(display_.get())) 339 if (!xdg_shell_.Initialize(display_.get()))
299 return false; 340 return false;
300 341
301 client_ = wl_client_create(display_.get(), server_fd.get()); 342 client_ = wl_client_create(display_.get(), server_fd.get());
302 if (!client_) 343 if (!client_)
303 return false; 344 return false;
304 (void)server_fd.release(); 345 (void)server_fd.release();
305 346
306 base::Thread::Options options; 347 base::Thread::Options options;
307 options.message_pump_factory = 348 options.message_pump_factory =
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
341 } 382 }
342 383
343 void FakeServer::OnFileCanReadWithoutBlocking(int fd) { 384 void FakeServer::OnFileCanReadWithoutBlocking(int fd) {
344 wl_event_loop_dispatch(event_loop_, 0); 385 wl_event_loop_dispatch(event_loop_, 0);
345 wl_display_flush_clients(display_.get()); 386 wl_display_flush_clients(display_.get());
346 } 387 }
347 388
348 void FakeServer::OnFileCanWriteWithoutBlocking(int fd) {} 389 void FakeServer::OnFileCanWriteWithoutBlocking(int fd) {}
349 390
350 } // namespace wl 391 } // namespace wl
OLDNEW
« no previous file with comments | « ui/ozone/platform/wayland/fake_server.h ('k') | ui/ozone/platform/wayland/wayland.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698