commit | b7fcbe27884a3184ae9b010d02c349141bbfc97c | [log] [tgz] |
---|---|---|
author | Dana Fried <dfried@chromium.org> | Tue Mar 29 03:24:14 2022 |
committer | Chromium LUCI CQ <chromium-scoped@luci-project-accounts.iam.gserviceaccount.com> | Tue Mar 29 03:24:14 2022 |
tree | 513c7b99fe4273b3b28610ab9c3d88ffd03b79be | |
parent | f3244fe50ba6c64ab6a75f1370d8dd983927fae6 [diff] |
Fix pane focus accelerator handling for Help Bubbles. Previously, HelpBubbleViews::ToggleFocusForAccessibility() was attempting to determine where focus was and then appropriately focusing the bubble or the element it was anchored to. However, this was triggered on F6 (CMD+OPT+DOWN on Mac), which is a browser-specific accelerator. The logic chain becomes: - User presses accelerator - If focus is in browser, ToggleFocusForAccessibility() gets called as expected, which detects focus is not in bubble, so bubble is focused - If focus in in bubble: - Accelerator processing determines that bubble does not handle the accelerator - Accelerator processing hands the accelerator off to the anchor view, which implicitly focuses the anchor view - ToggleFocusForAccessibility() gets called, but focus is no longer in the help bubble - The help bubble is re-focused (incorrect behavior) We previously had a complicated workaround that did not work in all cases (specifically when the anchor view was not in the main browser view, but in another bubble). This CL replaces this with actually handling the accelerator for rotate focus in the bubble itself. Since HelpBubbleViews is not specific to browser (it will be componentized later), we create a new delegate class that is capable of reporting the accelerators used for focus toggle, and explicitly registering for those with the correct handler (which calls ToggleFocusForAccessibility() directly). Some small changes needed to be added to constructor argument forwarding, but those should have been there all along. FrameworkSpecificImplementation: :MaybeRegister() to allow for Change-Id: I6bd0458d75ca661d5bec421ba3ab311978eb6590 Bug: 1310126, 1310124 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3550606 Reviewed-by: David Pennington <dpenning@chromium.org> Commit-Queue: Dana Fried <dfried@chromium.org> Cr-Commit-Position: refs/heads/main@{#986305}
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.
The project's web site is https://www.chromium.org.
To check out the source code locally, don't use git clone
! Instead, follow the instructions on how to get the code.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure .
For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.
If you found a bug, please file it at https://crbug.com/new.