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

Unified Diff: ui/ozone/platform/wayland/wayland_keyboard_unittest.cc

Issue 2639053002: [ozone/wayland] Implement basic keyboard handling support (Closed)
Patch Set: addressed kpschoedel's review Created 3 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/ozone/platform/wayland/wayland_keyboard.cc ('k') | ui/ozone/platform/wayland/wayland_object.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/ozone/platform/wayland/wayland_keyboard_unittest.cc
diff --git a/ui/ozone/platform/wayland/wayland_keyboard_unittest.cc b/ui/ozone/platform/wayland/wayland_keyboard_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..9975b79ddfcc27610d959815ab929fc25383a6ec
--- /dev/null
+++ b/ui/ozone/platform/wayland/wayland_keyboard_unittest.cc
@@ -0,0 +1,77 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include <linux/input.h>
+#include <wayland-server.h>
+
+#include "testing/gmock/include/gmock/gmock.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "ui/events/event.h"
+#include "ui/ozone/platform/wayland/fake_server.h"
+#include "ui/ozone/platform/wayland/mock_platform_window_delegate.h"
+#include "ui/ozone/platform/wayland/wayland_test.h"
+#include "ui/ozone/platform/wayland/wayland_window.h"
+
+using ::testing::SaveArg;
+using ::testing::_;
+
+namespace ui {
+
+class WaylandKeyboardTest : public WaylandTest {
+ public:
+ WaylandKeyboardTest() {}
+
+ void SetUp() override {
+ WaylandTest::SetUp();
+
+ wl_seat_send_capabilities(server.seat()->resource(),
+ WL_SEAT_CAPABILITY_KEYBOARD);
+
+ Sync();
+
+ keyboard = server.seat()->keyboard.get();
+ ASSERT_TRUE(keyboard);
+ }
+
+ protected:
+ wl::MockKeyboard* keyboard;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(WaylandKeyboardTest);
+};
+
+ACTION_P(CloneEvent, ptr) {
+ *ptr = Event::Clone(*arg0);
+}
+
+TEST_F(WaylandKeyboardTest, Keypress) {
+ struct wl_array empty;
+ wl_array_init(&empty);
+ wl_keyboard_send_enter(keyboard->resource(), 1, surface->resource(), &empty);
+ wl_array_release(&empty);
+
+ wl_keyboard_send_key(keyboard->resource(), 2, 0, 30 /* a */,
+ WL_KEYBOARD_KEY_STATE_PRESSED);
+
+ std::unique_ptr<Event> event;
+ EXPECT_CALL(delegate, DispatchEvent(_)).WillOnce(CloneEvent(&event));
+
+ Sync();
+ ASSERT_TRUE(event);
+ ASSERT_TRUE(event->IsKeyEvent());
+
+ auto key_event = event->AsKeyEvent();
+ EXPECT_EQ(ui::VKEY_A, key_event->key_code());
+ EXPECT_EQ(ET_KEY_PRESSED, key_event->type());
+
+ wl_keyboard_send_leave(keyboard->resource(), 3, surface->resource());
+
+ Sync();
+
+ wl_keyboard_send_key(keyboard->resource(), 3, 0, 30 /* a */,
+ WL_KEYBOARD_KEY_STATE_PRESSED);
+ EXPECT_CALL(delegate, DispatchEvent(_)).Times(0);
+}
+
+} // namespace ui
« no previous file with comments | « ui/ozone/platform/wayland/wayland_keyboard.cc ('k') | ui/ozone/platform/wayland/wayland_object.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698