Chrome Release Bot (LUCI) 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
..
DEPS 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
OWNERS 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
README.md 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
accelerator_commands.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
accelerator_commands.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
accelerator_commands_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
accelerator_controller_impl.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
accelerator_controller_impl.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
accelerator_controller_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
accelerator_filter_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
accelerator_history_impl.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
accelerator_history_impl.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
accelerator_history_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
accelerator_ids.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
accelerator_notifications.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
accelerator_notifications.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
accelerator_table.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
accelerator_table.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
accelerator_table_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
accelerator_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
ash_focus_manager_factory.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
ash_focus_manager_factory.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
debug_commands.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
debug_commands.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
exit_warning_handler.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
exit_warning_handler.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
key_hold_detector.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
key_hold_detector.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
magnifier_key_scroller.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
magnifier_key_scroller.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
magnifier_key_scroller_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
pre_target_accelerator_handler.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
pre_target_accelerator_handler.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
spoken_feedback_toggler.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
spoken_feedback_toggler.h 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
spoken_feedback_toggler_unittest.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago

README.md

This directory contains code for handling accelerators in Ash. The following documents the flow of accelerators.

  1. wm::AcceleratorFilter() sees events first as it’s a pre-target handler on Shell.
  2. wm::AcceleratorFilter calls to PreTargetAcceleratorHandler.
  3. PreTargetAcceleratorHandler handles accelerators that need to be handled early on, such as system keys. This does not include accelerators such as control-n (for new window).
  4. If focus is on a Widget, then views handles the accelerator.
  5. Views does normally processing first (meaning sends to the focused view). If the focused view doesn’t handle the event, then Views sends to the FocusManager.
  6. FocusManager::OnKeyEvent() calls PostTargerAcceleratorHandler::ProcessAccelerator().
  7. PostTargerAcceleratorHandler::ProcessAccelerator() calls to Ash’s AcceleratorController.

Steps 1-3 give Ash the opportunity to have accelerators before the target (these are often referred to as pre-target accelerators). Step 4-5 allows the target to handle the accelerator. Step 6-7 allow for post-target accelerators (accelerators that only occur if the target does not handle the accelerator).

Steps 4-7 differ if focus is on a remote window (a window created at the request of a client connecting by way of the WindowService). If focus is on a remote window, then step 4-7 are replaced with:

  1. WindowService waits for response from remote client.
  2. If remote client does not handle the event, WindowService calls WindowServiceDelegate::OnUnhandledKeyEvent().
  3. Ash’s WindowServiceDelegateImpl::OnUnhandledKeyEvent() calls to AcceleratorController::Process(), which handles the post-target processing phase.