Index: ui/ozone/platform/wayland/fake_server.cc |
diff --git a/ui/ozone/platform/wayland/fake_server.cc b/ui/ozone/platform/wayland/fake_server.cc |
index 52424c96365ad96abe238f5ac099b637028945ff..2b84d05b886ec0d19db66dceb1c05d49afcb4f7f 100644 |
--- a/ui/ozone/platform/wayland/fake_server.cc |
+++ b/ui/ozone/platform/wayland/fake_server.cc |
@@ -137,13 +137,30 @@ void GetPointer(wl_client* client, wl_resource* resource, uint32_t id) { |
seat->pointer.reset(new MockPointer(pointer_resource)); |
} |
+void GetKeyboard(wl_client* client, wl_resource* resource, uint32_t id) { |
+ auto seat = static_cast<MockSeat*>(wl_resource_get_user_data(resource)); |
+ wl_resource* keyboard_resource = wl_resource_create( |
+ client, &wl_keyboard_interface, wl_resource_get_version(resource), id); |
+ if (!keyboard_resource) { |
+ wl_client_post_no_memory(client); |
+ return; |
+ } |
+ seat->keyboard.reset(new MockKeyboard(keyboard_resource)); |
+} |
+ |
const struct wl_seat_interface seat_impl = { |
&GetPointer, // get_pointer |
- nullptr, // get_keyboard |
+ &GetKeyboard, // get_keyboard |
nullptr, // get_touch, |
&DestroyResource, // release |
}; |
+// wl_keyboard |
+ |
+const struct wl_keyboard_interface keyboard_impl = { |
+ &DestroyResource, // release |
+}; |
+ |
// wl_pointer |
const struct wl_pointer_interface pointer_impl = { |
@@ -245,6 +262,13 @@ MockPointer::MockPointer(wl_resource* resource) : ServerObject(resource) { |
MockPointer::~MockPointer() {} |
+MockKeyboard::MockKeyboard(wl_resource* resource) : ServerObject(resource) { |
+ wl_resource_set_implementation(resource, &keyboard_impl, this, |
+ &ServerObject::OnResourceDestroyed); |
+} |
+ |
+MockKeyboard::~MockKeyboard() {} |
+ |
void GlobalDeleter::operator()(wl_global* global) { |
wl_global_destroy(global); |
} |