-
Victor Fei authored
Currently, when a label is referenced by a control of type radio or checkbox, we set the label as ignored in the AXTree thereby excluding it from being perceived by ATs. However, for the case when the control (radio/checkbox) is a descendant of the label and label is focusable (tabindex="0") but control is to be omitted from focus (tabindex="-1"), ATs perceive neither the label nor the control when tabbing through the content: <label style="display:block" tabindex="0"> radio button 1 <input type="radio" id="radio1" tabindex="-1"> </label> <label style="display:block" for="radio2" tabindex="0"> radio button 2 <input type="radio" id="radio2" tabindex="-1"> </label> <label style="display:block" for="checkbox1" tabindex="0"> checkbox 1 <input type="checkbox" id="checkbox1" tabindex="-1"> </label> <label style="display:block" for="checkbox2" tabindex="0"> checkbox 2 <input type="checkbox" id="checkbox2" tabindex="-1"> </label> This change fixes the above scenario by exposing labels (referenced by radio or checkbox) when they are focusable. For all other cases when labels are referenced by radio or checkbox, we keep the existing behavior of ignoring the label. Note: Neither Firefox nor Edge legacy hides a label from AT when the label is referenced by a control. On Firefox and Edge legacy, label content will be read twice (focus on label and focus on control respectively). WAI-ARIA spec does not specify label should be ignored when associated with a radio/checkbox control. Bug: 1040210 Change-Id: Ie7df5144dd2f0d285d97e6556adb46dcf2338f25 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1992017 Commit-Queue: Victor Fei <vicfei@microsoft.com> Reviewed-by:
Dominic Mazzoni <dmazzoni@chromium.org> Cr-Commit-Position: refs/heads/master@{#731820}
9612f58a