Index: remoting/client/normalizing_input_filter_cros_unittest.cc |
diff --git a/remoting/client/normalizing_input_filter_cros_unittest.cc b/remoting/client/normalizing_input_filter_cros_unittest.cc |
deleted file mode 100644 |
index 2a1543f13614ca1d8c6f7a7b9e3bd9e649e4d06a..0000000000000000000000000000000000000000 |
--- a/remoting/client/normalizing_input_filter_cros_unittest.cc |
+++ /dev/null |
@@ -1,353 +0,0 @@ |
-// Copyright 2015 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 "remoting/client/normalizing_input_filter_cros.h" |
- |
-#include <stdint.h> |
- |
-#include "remoting/proto/event.pb.h" |
-#include "remoting/protocol/protocol_mock_objects.h" |
-#include "remoting/protocol/test_event_matchers.h" |
-#include "testing/gmock/include/gmock/gmock.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
-#include "ui/events/keycodes/dom/dom_code.h" |
- |
-using ::testing::InSequence; |
-using remoting::protocol::InputStub; |
-using remoting::protocol::KeyEvent; |
-using remoting::protocol::MockInputStub; |
-using remoting::protocol::MouseEvent; |
-using remoting::protocol::test::EqualsKeyEvent; |
-using remoting::protocol::test::EqualsKeyEventWithNumLock; |
-using remoting::protocol::test::EqualsMouseButtonEvent; |
-using remoting::protocol::test::EqualsMouseMoveEvent; |
- |
-namespace remoting { |
- |
-namespace { |
- |
-KeyEvent MakeKeyEvent(ui::DomCode keycode, bool pressed) { |
- KeyEvent event; |
- event.set_usb_keycode(static_cast<uint32_t>(keycode)); |
- event.set_pressed(pressed); |
- event.set_lock_states(protocol::KeyEvent::LOCK_STATES_NUMLOCK); |
- return event; |
-} |
- |
-void PressAndReleaseKey(InputStub* input_stub, ui::DomCode keycode) { |
- input_stub->InjectKeyEvent(MakeKeyEvent(keycode, true)); |
- input_stub->InjectKeyEvent(MakeKeyEvent(keycode, false)); |
-} |
- |
-static MouseEvent MakeMouseMoveEvent(int x, int y) { |
- MouseEvent event; |
- event.set_x(x); |
- event.set_y(y); |
- return event; |
-} |
- |
-static MouseEvent MakeMouseButtonEvent(MouseEvent::MouseButton button, |
- bool button_down) { |
- MouseEvent event; |
- event.set_button(button); |
- event.set_button_down(button_down); |
- return event; |
-} |
- |
-} // namespace |
- |
-// Test OSKey press/release. |
-TEST(NormalizingInputFilterCrosTest, PressReleaseOsKey) { |
- MockInputStub stub; |
- std::unique_ptr<protocol::InputFilter> processor( |
- new NormalizingInputFilterCros(&stub)); |
- |
- { |
- InSequence s; |
- |
- EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEventWithNumLock( |
- ui::DomCode::META_LEFT, true))); |
- EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEventWithNumLock( |
- ui::DomCode::META_LEFT, false))); |
- |
- EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEventWithNumLock( |
- ui::DomCode::META_RIGHT, true))); |
- EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEventWithNumLock( |
- ui::DomCode::META_RIGHT, false))); |
- } |
- |
- // Inject press & release events for left & right OSKeys. |
- PressAndReleaseKey(processor.get(), ui::DomCode::META_LEFT); |
- PressAndReleaseKey(processor.get(), ui::DomCode::META_RIGHT); |
-} |
- |
-// Test OSKey key repeat switches it to "modifying" mode. |
-TEST(NormalizingInputFilterCrosTest, OSKeyRepeats) { |
- MockInputStub stub; |
- std::unique_ptr<protocol::InputFilter> processor( |
- new NormalizingInputFilterCros(&stub)); |
- |
- { |
- InSequence s; |
- |
- EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEventWithNumLock( |
- ui::DomCode::META_LEFT, true))); |
- EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEventWithNumLock( |
- ui::DomCode::META_LEFT, true))); |
- EXPECT_CALL(stub,InjectKeyEvent(EqualsKeyEventWithNumLock( |
- ui::DomCode::META_LEFT, true))); |
- } |
- |
- // Inject a press and repeats for the left OSKey, but don't release it, and |
- // verify that the repeats result in press events. |
- processor->InjectKeyEvent(MakeKeyEvent(ui::DomCode::META_LEFT, true)); |
- processor->InjectKeyEvent(MakeKeyEvent(ui::DomCode::META_LEFT, true)); |
- processor->InjectKeyEvent(MakeKeyEvent(ui::DomCode::META_LEFT, true)); |
-} |
- |
-// Test OSKey press followed by function key press and release results in |
-// just the function key events. |
-TEST(NormalizingInputFilterCrosTest, FunctionKey) { |
- MockInputStub stub; |
- std::unique_ptr<protocol::InputFilter> processor( |
- new NormalizingInputFilterCros(&stub)); |
- |
- { |
- InSequence s; |
- |
- EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEventWithNumLock( |
- ui::DomCode::F1, true))); |
- EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEventWithNumLock( |
- ui::DomCode::F1, false))); |
- } |
- |
- // Hold the left OSKey while pressing & releasing the function key. |
- processor->InjectKeyEvent(MakeKeyEvent(ui::DomCode::META_LEFT, true)); |
- PressAndReleaseKey(processor.get(), ui::DomCode::F1); |
- processor->InjectKeyEvent(MakeKeyEvent(ui::DomCode::META_LEFT, false)); |
-} |
- |
-// Test OSKey press followed by extended key press and release results in |
-// just the function key events. |
-TEST(NormalizingInputFilterCrosTest, ExtendedKey) { |
- MockInputStub stub; |
- std::unique_ptr<protocol::InputFilter> processor( |
- new NormalizingInputFilterCros(&stub)); |
- |
- { |
- InSequence s; |
- |
- EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEventWithNumLock( |
- ui::DomCode::INSERT, true))); |
- EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEventWithNumLock( |
- ui::DomCode::INSERT, false))); |
- } |
- |
- // Hold the left OSKey while pressing & releasing the function key. |
- processor->InjectKeyEvent(MakeKeyEvent(ui::DomCode::META_LEFT, true)); |
- PressAndReleaseKey(processor.get(), ui::DomCode::INSERT); |
- processor->InjectKeyEvent(MakeKeyEvent(ui::DomCode::META_LEFT, false)); |
-} |
- |
-// Test OSKey press followed by non-function, non-extended key press and release |
-// results in normal-looking sequence. We use the Tab key arbitrarily for this |
-// test. |
-TEST(NormalizingInputFilterCrosTest, OtherKey) { |
- MockInputStub stub; |
- std::unique_ptr<protocol::InputFilter> processor( |
- new NormalizingInputFilterCros(&stub)); |
- |
- { |
- InSequence s; |
- |
- EXPECT_CALL(stub,InjectKeyEvent(EqualsKeyEventWithNumLock( |
- ui::DomCode::META_LEFT, true))); |
- EXPECT_CALL(stub,InjectKeyEvent(EqualsKeyEventWithNumLock( |
- ui::DomCode::TAB, true))); |
- EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEventWithNumLock( |
- ui::DomCode::TAB, false))); |
- EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEventWithNumLock( |
- ui::DomCode::META_LEFT, false))); |
- } |
- |
- // Hold the left OSKey while pressing & releasing the function key. |
- processor->InjectKeyEvent(MakeKeyEvent(ui::DomCode::META_LEFT, true)); |
- PressAndReleaseKey(processor.get(), ui::DomCode::TAB); |
- processor->InjectKeyEvent(MakeKeyEvent(ui::DomCode::META_LEFT, false)); |
-} |
- |
-// Test OSKey press followed by extended key press, then normal key press |
-// results in OSKey switching to modifying mode for the normal key. |
-TEST(NormalizingInputFilterCrosTest, ExtendedThenOtherKey) { |
- MockInputStub stub; |
- std::unique_ptr<protocol::InputFilter> processor( |
- new NormalizingInputFilterCros(&stub)); |
- |
- { |
- InSequence s; |
- |
- EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEventWithNumLock( |
- ui::DomCode::INSERT, true))); |
- EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEventWithNumLock( |
- ui::DomCode::INSERT, false))); |
- EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEventWithNumLock( |
- ui::DomCode::META_LEFT, true))); |
- EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEventWithNumLock( |
- ui::DomCode::TAB, true))); |
- EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEventWithNumLock( |
- ui::DomCode::TAB, false))); |
- EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEventWithNumLock( |
- ui::DomCode::META_LEFT, false))); |
- } |
- |
- // Hold the left OSKey while pressing & releasing the function key. |
- processor->InjectKeyEvent(MakeKeyEvent(ui::DomCode::META_LEFT, true)); |
- PressAndReleaseKey(processor.get(), ui::DomCode::INSERT); |
- PressAndReleaseKey(processor.get(), ui::DomCode::TAB); |
- processor->InjectKeyEvent(MakeKeyEvent(ui::DomCode::META_LEFT, false)); |
-} |
- |
-// Test OSKey press followed by mouse event puts the OSKey into modifying mode. |
-TEST(NormalizingInputFilterCrosTest, MouseEvent) { |
- MockInputStub stub; |
- std::unique_ptr<protocol::InputFilter> processor( |
- new NormalizingInputFilterCros(&stub)); |
- |
- { |
- InSequence s; |
- |
- EXPECT_CALL(stub,InjectKeyEvent(EqualsKeyEventWithNumLock( |
- ui::DomCode::META_LEFT, true))); |
- EXPECT_CALL(stub, InjectMouseEvent(EqualsMouseMoveEvent(0, 0))); |
- EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEventWithNumLock( |
- ui::DomCode::META_LEFT, false))); |
- } |
- |
- // Hold the left OSKey while pressing & releasing the function key. |
- processor->InjectKeyEvent(MakeKeyEvent(ui::DomCode::META_LEFT, true)); |
- processor->InjectMouseEvent(MakeMouseMoveEvent(0, 0)); |
- processor->InjectKeyEvent(MakeKeyEvent(ui::DomCode::META_LEFT, false)); |
-} |
- |
-// Test left alt + right click is remapped to left alt + left click. |
-TEST(NormalizingInputFilterCrosTest, LeftAltClick) { |
- MockInputStub stub; |
- std::unique_ptr<protocol::InputFilter> processor( |
- new NormalizingInputFilterCros(&stub)); |
- |
- { |
- InSequence s; |
- |
- EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEventWithNumLock( |
- ui::DomCode::ALT_LEFT, true))); |
- EXPECT_CALL(stub, InjectMouseEvent(EqualsMouseButtonEvent( |
- MouseEvent::BUTTON_LEFT, true))); |
- EXPECT_CALL(stub, InjectMouseEvent(EqualsMouseButtonEvent( |
- MouseEvent::BUTTON_LEFT, false))); |
- EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEventWithNumLock( |
- ui::DomCode::ALT_LEFT, false))); |
- } |
- |
- // Hold the left alt key while left-clicking. ChromeOS will rewrite this as |
- // Alt+RightClick |
- processor->InjectKeyEvent(MakeKeyEvent(ui::DomCode::ALT_LEFT, true)); |
- processor->InjectMouseEvent( |
- MakeMouseButtonEvent(MouseEvent::BUTTON_RIGHT, true)); |
- processor->InjectMouseEvent( |
- MakeMouseButtonEvent(MouseEvent::BUTTON_RIGHT, false)); |
- processor->InjectKeyEvent(MakeKeyEvent(ui::DomCode::ALT_LEFT, false)); |
-} |
- |
-// Test that right alt + right click is unchanged. |
-TEST(NormalizingInputFilterCrosTest, RightAltClick) { |
- MockInputStub stub; |
- std::unique_ptr<protocol::InputFilter> processor( |
- new NormalizingInputFilterCros(&stub)); |
- |
- { |
- InSequence s; |
- |
- EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEventWithNumLock( |
- ui::DomCode::ALT_RIGHT, true))); |
- EXPECT_CALL(stub, InjectMouseEvent(EqualsMouseButtonEvent( |
- MouseEvent::BUTTON_RIGHT, true))); |
- EXPECT_CALL(stub, InjectMouseEvent(EqualsMouseButtonEvent( |
- MouseEvent::BUTTON_RIGHT, false))); |
- EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEventWithNumLock( |
- ui::DomCode::ALT_RIGHT, false))); |
- } |
- |
- // Hold the right alt key while left-clicking. ChromeOS will rewrite this as |
- // Alt+RightClick |
- processor->InjectKeyEvent(MakeKeyEvent(ui::DomCode::ALT_RIGHT, true)); |
- processor->InjectMouseEvent( |
- MakeMouseButtonEvent(MouseEvent::BUTTON_RIGHT, true)); |
- processor->InjectMouseEvent( |
- MakeMouseButtonEvent(MouseEvent::BUTTON_RIGHT, false)); |
- processor->InjectKeyEvent(MakeKeyEvent(ui::DomCode::ALT_RIGHT, false)); |
-} |
- |
-// Test that the Alt-key remapping for Up and Down is not applied. |
-TEST(NormalizingInputFilterCrosTest, UndoAltPlusArrowRemapping) { |
- MockInputStub stub; |
- std::unique_ptr<protocol::InputFilter> processor( |
- new NormalizingInputFilterCros(&stub)); |
- |
- { |
- InSequence s; |
- |
- EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEvent( |
- ui::DomCode::ALT_LEFT, true))); |
- EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEvent( |
- ui::DomCode::ARROW_UP, true))); |
- EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEvent( |
- ui::DomCode::ARROW_UP, false))); |
- EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEvent( |
- ui::DomCode::ARROW_DOWN, true))); |
- EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEvent( |
- ui::DomCode::ARROW_DOWN, false))); |
- EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEvent( |
- ui::DomCode::BACKSPACE, true))); |
- EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEvent( |
- ui::DomCode::BACKSPACE, false))); |
- EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEvent( |
- ui::DomCode::ALT_LEFT, false))); |
- |
- EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEvent( |
- ui::DomCode::ALT_RIGHT, true))); |
- EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEvent( |
- ui::DomCode::ARROW_UP, true))); |
- EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEvent( |
- ui::DomCode::ARROW_UP, false))); |
- EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEvent( |
- ui::DomCode::ARROW_DOWN, true))); |
- EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEvent( |
- ui::DomCode::ARROW_DOWN, false))); |
- EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEvent( |
- ui::DomCode::BACKSPACE, true))); |
- EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEvent( |
- ui::DomCode::BACKSPACE, false))); |
- EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEvent( |
- ui::DomCode::ALT_RIGHT, false))); |
- } |
- |
- // Hold the left Alt key while pressing & releasing the PgUp, PgDown and |
- // Delete keys. This simulates the mapping that ChromeOS applies if the Up, |
- // Down and Backspace keys are pressed, respectively, while the Alt key is |
- // held. |
- processor->InjectKeyEvent(MakeKeyEvent(ui::DomCode::ALT_LEFT, true)); |
- PressAndReleaseKey(processor.get(), ui::DomCode::PAGE_UP); |
- PressAndReleaseKey(processor.get(), ui::DomCode::PAGE_DOWN); |
- PressAndReleaseKey(processor.get(), ui::DomCode::DEL); |
- processor->InjectKeyEvent(MakeKeyEvent(ui::DomCode::ALT_LEFT, false)); |
- |
- // Repeat the test for the right Alt key. |
- processor->InjectKeyEvent(MakeKeyEvent(ui::DomCode::ALT_RIGHT, true)); |
- PressAndReleaseKey(processor.get(), ui::DomCode::PAGE_UP); |
- PressAndReleaseKey(processor.get(), ui::DomCode::PAGE_DOWN); |
- PressAndReleaseKey(processor.get(), ui::DomCode::DEL); |
- processor->InjectKeyEvent(MakeKeyEvent(ui::DomCode::ALT_RIGHT, false)); |
-} |
- |
-} // namespace remoting |