| // Copyright 2018 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. |
| |
| #ifndef ASH_WM_TABLET_MODE_INTERNAL_INPUT_DEVICES_EVENT_BLOCKER_H_ |
| #define ASH_WM_TABLET_MODE_INTERNAL_INPUT_DEVICES_EVENT_BLOCKER_H_ |
| |
| #include "ash/ash_export.h" |
| #include "base/macros.h" |
| #include "ui/events/devices/input_device_event_observer.h" |
| |
| namespace ash { |
| |
| // Helper class to temporarily disable the internal touchpad and keyboard. |
| class ASH_EXPORT InternalInputDevicesEventBlocker |
| : public ui::InputDeviceEventObserver { |
| public: |
| InternalInputDevicesEventBlocker(); |
| ~InternalInputDevicesEventBlocker() override; |
| |
| // ui::InputDeviceEventObserver: |
| void OnInputDeviceConfigurationChanged(uint8_t input_device_types) override; |
| |
| void UpdateInternalInputDevices(bool should_block); |
| |
| bool should_be_blocked() const { return should_be_blocked_; } |
| |
| private: |
| bool HasInternalTouchpad(); |
| bool HasInternalKeyboard(); |
| |
| void UpdateInternalTouchpad(bool should_block); |
| void UpdateInternalKeyboard(bool should_block); |
| |
| // |should_be_blocked_| might not be equal to (|is_touchpad_blocked_| && |
| // |is_keyboard_blocked_|) as when UpdateInternalInputDevices() is called, |
| // |should_be_blocked_| is guranteed to be updated, but |is_touchpad_blocked_| |
| // or |is_keyboard_blocked_| might not be updated because there might not be |
| // an internal touchpad or keyboard at that moment (currently it can only be |
| // the case for Whiskers keyboard, which is a detachable keyboard but is |
| // regarded as the internal keyboard for Moewth). |
| bool should_be_blocked_ = false; |
| |
| bool is_touchpad_blocked_ = false; |
| bool is_keyboard_blocked_ = false; |
| |
| DISALLOW_COPY_AND_ASSIGN(InternalInputDevicesEventBlocker); |
| }; |
| |
| } // namespace ash |
| |
| #endif // ASH_WM_TABLET_MODE_INTERNAL_INPUT_DEVICES_EVENT_BLOCKER_H_ |