Chromium Code Reviews| Index: ash/virtual_keyboard_controller_unittest.cc |
| diff --git a/ash/virtual_keyboard_controller_unittest.cc b/ash/virtual_keyboard_controller_unittest.cc |
| index 8072b84acfa897bc518af0bacbd45125fa3dbcb5..687a7ec2ffe52740090781ac8de00d3e772d93e2 100644 |
| --- a/ash/virtual_keyboard_controller_unittest.cc |
| +++ b/ash/virtual_keyboard_controller_unittest.cc |
| @@ -7,22 +7,103 @@ |
| #include "ash/shell.h" |
| #include "ash/test/ash_test_base.h" |
| #include "ash/wm/maximize_mode/maximize_mode_controller.h" |
| +#include "base/command_line.h" |
| +#include "ui/events/device_data_manager.h" |
| +#include "ui/events/device_hotplug_event_observer.h" |
| +#include "ui/events/input_device.h" |
| +#include "ui/events/keyboard_device.h" |
| +#include "ui/events/touchscreen_device.h" |
| +#include "ui/keyboard/keyboard_export.h" |
| +#include "ui/keyboard/keyboard_switches.h" |
| #include "ui/keyboard/keyboard_util.h" |
| namespace ash { |
| namespace test { |
| -typedef AshTestBase VirtualKeyboardControllerTest; |
| +class VirtualKeyboardControllerTest : public AshTestBase { |
| + public: |
| + VirtualKeyboardControllerTest() {} |
| + virtual ~VirtualKeyboardControllerTest() {} |
| + |
| + void EnableAutoVirtualKeyboard() { |
| + CommandLine::ForCurrentProcess()->AppendSwitch( |
| + keyboard::switches::kAutoVirtualKeyboard); |
|
flackr
2014/10/27 15:33:13
Since flags often affect initialization logic it w
rsadam
2014/10/27 15:51:19
Done.
|
| + } |
| + |
| + void UpdateTouchscreenDevices( |
| + std::vector<ui::TouchscreenDevice> touchscreen_devices) { |
| + ui::DeviceHotplugEventObserver* manager = |
| + ui::DeviceDataManager::GetInstance(); |
| + manager->OnTouchscreenDevicesUpdated(touchscreen_devices); |
| + } |
| + |
| + void UpdateKeyboardDevices(std::vector<ui::KeyboardDevice> keyboard_devices) { |
| + ui::DeviceHotplugEventObserver* manager = |
| + ui::DeviceDataManager::GetInstance(); |
| + manager->OnKeyboardDevicesUpdated(keyboard_devices); |
| + } |
| + |
| + void SetUp() override { |
| + AshTestBase::SetUp(); |
| + UpdateKeyboardDevices(std::vector<ui::KeyboardDevice>()); |
| + UpdateTouchscreenDevices(std::vector<ui::TouchscreenDevice>()); |
| + } |
| + |
| + private: |
| + DISALLOW_COPY_AND_ASSIGN(VirtualKeyboardControllerTest); |
| +}; |
| -// Tests that the onscreen keyboard becomes enabled when maximize mode is |
| -// enabled. |
| TEST_F(VirtualKeyboardControllerTest, EnabledDuringMaximizeMode) { |
| ASSERT_FALSE(keyboard::IsKeyboardEnabled()); |
| - Shell::GetInstance()->maximize_mode_controller()-> |
| - EnableMaximizeModeWindowManager(true); |
| + // Toggle maximized mode on. |
| + Shell::GetInstance() |
| + ->maximize_mode_controller() |
| + ->EnableMaximizeModeWindowManager(true); |
| + EXPECT_TRUE(keyboard::IsKeyboardEnabled()); |
| + // Toggle maximized mode off. |
| + Shell::GetInstance() |
| + ->maximize_mode_controller() |
| + ->EnableMaximizeModeWindowManager(false); |
| + EXPECT_FALSE(keyboard::IsKeyboardEnabled()); |
| +} |
| + |
| +// Tests that the onscreen keyboard is disabled if an internal keyboard is |
| +// present. |
| +TEST_F(VirtualKeyboardControllerTest, DisabledIfInternalKeyboardPresent) { |
| + EnableAutoVirtualKeyboard(); |
| + std::vector<ui::TouchscreenDevice> screens; |
| + screens.push_back( |
| + ui::TouchscreenDevice(1, |
| + ui::InputDeviceType::INPUT_DEVICE_INTERNAL, |
| + "Touchscreen", |
| + gfx::Size(1024, 768))); |
| + UpdateTouchscreenDevices(screens); |
| + std::vector<ui::KeyboardDevice> keyboards; |
| + keyboards.push_back(ui::KeyboardDevice( |
| + 1, ui::InputDeviceType::INPUT_DEVICE_INTERNAL, "keyboard")); |
| + UpdateKeyboardDevices(keyboards); |
| + ASSERT_FALSE(keyboard::IsKeyboardEnabled()); |
| + // Remove the internal keyboard. Virtual keyboard should now show. |
| + UpdateKeyboardDevices(std::vector<ui::KeyboardDevice>()); |
| + EXPECT_TRUE(keyboard::IsKeyboardEnabled()); |
| + // Replug in the internal keyboard. Virtual keyboard should hide. |
| + UpdateKeyboardDevices(keyboards); |
| + EXPECT_FALSE(keyboard::IsKeyboardEnabled()); |
| +} |
| + |
| +TEST_F(VirtualKeyboardControllerTest, DisabledIfNoTouchScreen) { |
| + EnableAutoVirtualKeyboard(); |
| + std::vector<ui::TouchscreenDevice> devices; |
| + // Add a touchscreen. Keyboard should deploy. |
| + devices.push_back( |
| + ui::TouchscreenDevice(1, |
| + ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, |
| + "Touchscreen", |
| + gfx::Size(800, 600))); |
| + UpdateTouchscreenDevices(devices); |
| EXPECT_TRUE(keyboard::IsKeyboardEnabled()); |
| - Shell::GetInstance()->maximize_mode_controller()-> |
| - EnableMaximizeModeWindowManager(false); |
| + // Remove touchscreen. Keyboard should hide. |
| + UpdateTouchscreenDevices(std::vector<ui::TouchscreenDevice>()); |
| EXPECT_FALSE(keyboard::IsKeyboardEnabled()); |
| } |