| Index: ui/events/ozone/evdev/event_converter_evdev_impl_unittest.cc
|
| diff --git a/ui/events/ozone/evdev/event_converter_evdev_impl_unittest.cc b/ui/events/ozone/evdev/event_converter_evdev_impl_unittest.cc
|
| index b0de29dca8a569cd4fdc69c926f895ec945f053f..782b3743956a72e072c412c246cdf8f744e2189c 100644
|
| --- a/ui/events/ozone/evdev/event_converter_evdev_impl_unittest.cc
|
| +++ b/ui/events/ozone/evdev/event_converter_evdev_impl_unittest.cc
|
| @@ -127,6 +127,8 @@ class EventConverterEvdevImplTest : public testing::Test {
|
| return static_cast<ui::MouseEvent*>(ev);
|
| }
|
|
|
| + void DestroyDevice() { device_.reset(); }
|
| +
|
| private:
|
| void DispatchEventForTest(ui::Event* event) {
|
| scoped_ptr<ui::Event> cloned_event = ui::Event::Clone(*event);
|
| @@ -420,3 +422,48 @@ TEST_F(EventConverterEvdevImplTest, UnmappedKeyPress) {
|
| dev->ProcessEvents(mock_kernel_queue, arraysize(mock_kernel_queue));
|
| EXPECT_EQ(0u, size());
|
| }
|
| +
|
| +TEST_F(EventConverterEvdevImplTest, ShouldReleaseKeysOnUnplug) {
|
| + ui::MockEventConverterEvdevImpl* dev = device();
|
| +
|
| + struct input_event mock_kernel_queue[] = {
|
| + {{0, 0}, EV_KEY, KEY_A, 1},
|
| + {{0, 0}, EV_SYN, SYN_REPORT, 0},
|
| + };
|
| +
|
| + dev->ProcessEvents(mock_kernel_queue, arraysize(mock_kernel_queue));
|
| + EXPECT_EQ(1u, size());
|
| +
|
| + DestroyDevice();
|
| + EXPECT_EQ(2u, size());
|
| +
|
| + ui::KeyEvent* event = dispatched_event(0);
|
| + EXPECT_EQ(ui::ET_KEY_PRESSED, event->type());
|
| + EXPECT_EQ(ui::VKEY_A, event->key_code());
|
| +
|
| + event = dispatched_event(1);
|
| + EXPECT_EQ(ui::ET_KEY_RELEASED, event->type());
|
| + EXPECT_EQ(ui::VKEY_A, event->key_code());
|
| +}
|
| +
|
| +TEST_F(EventConverterEvdevImplTest, ShouldReleaseKeysOnSynDropped) {
|
| + ui::MockEventConverterEvdevImpl* dev = device();
|
| +
|
| + struct input_event mock_kernel_queue[] = {
|
| + {{0, 0}, EV_KEY, KEY_A, 1},
|
| + {{0, 0}, EV_SYN, SYN_REPORT, 0},
|
| +
|
| + {{0, 0}, EV_SYN, SYN_DROPPED, 0},
|
| + };
|
| +
|
| + dev->ProcessEvents(mock_kernel_queue, arraysize(mock_kernel_queue));
|
| + EXPECT_EQ(2u, size());
|
| +
|
| + ui::KeyEvent* event = dispatched_event(0);
|
| + EXPECT_EQ(ui::ET_KEY_PRESSED, event->type());
|
| + EXPECT_EQ(ui::VKEY_A, event->key_code());
|
| +
|
| + event = dispatched_event(1);
|
| + EXPECT_EQ(ui::ET_KEY_RELEASED, event->type());
|
| + EXPECT_EQ(ui::VKEY_A, event->key_code());
|
| +}
|
|
|