зеркало из https://github.com/mozilla/gecko-dev.git
d6c7ae81f0
Previously, the following scenario was possible: 1. aria-activedescendant is used on a menupopup to set a11y focus. When the event is processed, FocusManager::mLastFocus gets set accordingly. 2. aria-activedescendant on the menupopup is changed, so a focus event gets queued. 3. Before that focus event can be processed, the Accessible in (1) gets unbound from the a11y tree. 4. DocAccessible::UnbindFromDocument checks whether the Accessible is the last focus. As per (1), it is. 5. It then tells FocusManager to reset the active item, causing it to throw away the active item set in (2) and fire focus on the DOM focus (which is not the menupopup). This breaks the new select dropdown implementation. To fix this, we now set mLastFocus in DispatchFocusEvent (when the event is queued) instead of ProcessFocusEvent. This way, we don't override a pending new focus change unintentionally. Differential Revision: https://phabricator.services.mozilla.com/D65706 --HG-- extra : moz-landing-system : lando |
||
---|---|---|
.. | ||
android | ||
aom | ||
atk | ||
base | ||
generic | ||
html | ||
interfaces | ||
ipc | ||
mac | ||
other | ||
tests | ||
windows | ||
xpcom | ||
xul | ||
moz.build |