#include "third_party/blink/renderer/core/input/keyboard_event_manager.h"
#include <memory>
#include "base/auto_reset.h"
#include "base/notreached.h"
#include "build/build_config.h"
#include "third_party/blink/public/common/input/web_input_event.h"
#include "third_party/blink/public/mojom/frame/user_activation_notification_type.mojom-blink.h"
#include "third_party/blink/public/mojom/input/focus_type.mojom-blink.h"
#include "third_party/blink/public/platform/platform.h"
#include "third_party/blink/public/web/web_link_preview_triggerer.h"
#include "third_party/blink/renderer/core/dom/element.h"
#include "third_party/blink/renderer/core/dom/events/simulated_click_options.h"
#include "third_party/blink/renderer/core/dom/focus_params.h"
#include "third_party/blink/renderer/core/editing/editing_utilities.h"
#include "third_party/blink/renderer/core/editing/editor.h"
#include "third_party/blink/renderer/core/events/keyboard_event.h"
#include "third_party/blink/renderer/core/frame/local_dom_window.h"
#include "third_party/blink/renderer/core/frame/local_frame.h"
#include "third_party/blink/renderer/core/frame/settings.h"
#include "third_party/blink/renderer/core/html/forms/html_input_element.h"
#include "third_party/blink/renderer/core/html/html_dialog_element.h"
#include "third_party/blink/renderer/core/input/event_handling_util.h"
#include "third_party/blink/renderer/core/input/input_device_capabilities.h"
#include "third_party/blink/renderer/core/input/keyboard_shortcut_recorder.h"
#include "third_party/blink/renderer/core/input/scroll_manager.h"
#include "third_party/blink/renderer/core/keywords.h"
#include "third_party/blink/renderer/core/page/focus_controller.h"
#include "third_party/blink/renderer/core/page/focusgroup_controller.h"
#include "third_party/blink/renderer/core/page/page.h"
#include "third_party/blink/renderer/core/page/spatial_navigation.h"
#include "third_party/blink/renderer/core/page/spatial_navigation_controller.h"
#include "third_party/blink/renderer/platform/keyboard_codes.h"
#include "third_party/blink/renderer/platform/widget/frame_widget.h"
#include "third_party/blink/renderer/platform/windows_keyboard_codes.h"
#include "ui/events/keycodes/dom/keycode_converter.h"
#if BUILDFLAG(IS_WIN)
#include <windows.h>
#elif BUILDFLAG(IS_MAC)
#import <Carbon/Carbon.h>
#endif
namespace blink {
namespace {
const int kVKeyProcessKey = …;
bool IsPageUpOrDownKeyEvent(int key_code, WebInputEvent::Modifiers modifiers) { … }
bool MapKeyCodeForScroll(int key_code,
WebInputEvent::Modifiers modifiers,
mojom::blink::ScrollDirection* scroll_direction,
ui::ScrollGranularity* scroll_granularity,
WebFeature* scroll_use_uma) { … }
}
KeyboardEventManager::KeyboardEventManager(LocalFrame& frame,
ScrollManager& scroll_manager)
: … { … }
void KeyboardEventManager::Trace(Visitor* visitor) const { … }
bool KeyboardEventManager::HandleAccessKey(const WebKeyboardEvent& evt) { … }
WebInputEventResult KeyboardEventManager::KeyEvent(
const WebKeyboardEvent& initial_key_event) { … }
void KeyboardEventManager::CapsLockStateMayHaveChanged() { … }
void KeyboardEventManager::KeyEventModifierMayHaveChanged(int modifiers) { … }
void KeyboardEventManager::DefaultKeyboardEventHandler(
KeyboardEvent* event,
Node* possible_focused_node) { … }
void KeyboardEventManager::DefaultSpaceEventHandler(
KeyboardEvent* event,
Node* possible_focused_node) { … }
void KeyboardEventManager::DefaultArrowEventHandler(
KeyboardEvent* event,
Node* possible_focused_node) { … }
void KeyboardEventManager::DefaultTabEventHandler(KeyboardEvent* event) { … }
void KeyboardEventManager::DefaultEscapeEventHandler(KeyboardEvent* event) { … }
void KeyboardEventManager::DefaultEnterEventHandler(KeyboardEvent* event) { … }
void KeyboardEventManager::DefaultImeSubmitHandler(KeyboardEvent* event) { … }
static OverrideCapsLockState g_override_caps_lock_state;
void KeyboardEventManager::SetCurrentCapsLockState(
OverrideCapsLockState state) { … }
bool KeyboardEventManager::CurrentCapsLockState() { … }
WebInputEvent::Modifiers KeyboardEventManager::GetCurrentModifierState() { … }
}