[CTW] Firefox no longer marks required inputs of a non-simple type that become valid as such for assistive technologies, and doesn't properly update the cache accordingly.
Categories
(Core :: Disability Access APIs, defect, P1)
Tracking
()
Tracking | Status | |
---|---|---|
firefox-esr102 | --- | unaffected |
firefox113 | --- | wontfix |
firefox114 | --- | fixed |
firefox115 | --- | fixed |
People
(Reporter: MarcoZ, Assigned: Jamie)
References
Details
(Keywords: regression)
Attachments
(1 file)
48 bytes,
text/x-phabricator-request
|
pascalc
:
approval-mozilla-beta+
|
Details | Review |
Steps to reproduce, with the NVDA screen reader:
- Open data:text/html,<label for="email">Enter your email address:"</label><input id="email" type="email" required />
- Focus the input.
- NVDA will announce that the field is required and currently invalid.
- Type a valid email address.
- Press NVDAKey+Tab to repeat the focused element.
- Expected: The field should read required, but the invalid state should no longer be announced.
- Actual: The field is still being announced as invalid.
- Press Escape to enter browse mode, then press NVDAKey+F5 to refresh the buffer.
- Press CTRL+Home, then f to move to the form field.
- Expected: Now, the field should be announced as required, but the invalid state should not be announced.
- Actual: Even after a refresh, the field is still being announced as invalid.
- Change the URL in the address bar so that the required field is removed, and repeat steps 3 through 6.
- After step 4, the field is still being announced as invalid, so the event that tells the browser the field is now valid, is not being fired.
- After step 6, the field is now correctly being announced as no longer being invalid.
In short, if there are two validations, through the input type and the required attribut, neither an event is fired to tell assistive technologies that the invalid state has gone away, nor the required condition has been met. Alternatively, the invalid state is being flipped twice accidentally.
If there is only one condition, like the email type being satisfied with a valid email address, or a simple text input that is required, having contents, the event is still not fired, but the cache is properly updated.
Assignee | ||
Comment 1•2 years ago
|
||
For me, the invalid state never seems to be cleared from the cache once set, even for something as simple as <input type="email">
.
Reporter | ||
Comment 2•2 years ago
|
||
It did get cleared for me for email earlier, and also for simple, merely required, inputs. But only after refreshing the buffer, never through an event.
Assignee | ||
Updated•2 years ago
|
Assignee | ||
Updated•2 years ago
|
Assignee | ||
Comment 3•2 years ago
|
||
Previously, we passed true for aIsEnabled, indicating that the state was only ever enabled, never disabled.
We could get the actual enabled value here using dom::ElementState::HasState(), but that wouldn't take aria-invalid into account if present.
Instead, we let AccStateChangeEvent calculate it by calling Accessible::State().
Assignee | ||
Updated•2 years ago
|
Updated•2 years ago
|
Assignee | ||
Updated•2 years ago
|
Comment 5•2 years ago
|
||
bugherder |
Comment 6•2 years ago
|
||
The patch landed in nightly and beta is affected.
:Jamie, is this bug important enough to require an uplift?
- If yes, please nominate the patch for beta approval.
- If no, please set
status-firefox114
towontfix
.
For more information, please visit BugBot documentation.
Updated•2 years ago
|
Updated•2 years ago
|
Assignee | ||
Comment 7•2 years ago
|
||
Urgh. I somehow forgot to request an uplift on this. I'm guessing it's too late to do that now given we're going to rc. :(
Comment 8•2 years ago
|
||
(In reply to James Teh [:Jamie] from comment #7)
Urgh. I somehow forgot to request an uplift on this. I'm guessing it's too late to do that now given we're going to rc. :(
If it's very low risk, I can still take it before the merge on Monday, please request it today though, thanks :)
Comment 9•2 years ago
|
||
Comment on attachment 9333615 [details]
Bug 1833079: When notified about a dom::ElementState::INVALID change, let AccStateChangeEvent calculate whether the state is enabled.
Beta/Release Uplift Approval Request
- User impact if declined: Users will continue to receive inaccurate information about the validity of inputs
- Is this code covered by automated tests?: Yes
- Has the fix been verified in Nightly?: Yes
- Needs manual test from QE?: No
- If yes, steps to reproduce:
- List of other uplifts needed: None
- Risk to taking this patch: Low
- Why is the change risky/not risky? (and alternatives if risky): We typically use State() for this kind of information anyway, so this patch aligns AccStateChangeEvent's behaviour with behaviour throughout the codebase. Also, this change is scoped to invalid state only, the surface area is narrow and users are already receiving incorrect info so the potential for regression is also low.
- String changes made/needed:
- Is Android affected?: Yes
Updated•2 years ago
|
Comment 10•2 years ago
|
||
Comment on attachment 9333615 [details]
Bug 1833079: When notified about a dom::ElementState::INVALID change, let AccStateChangeEvent calculate whether the state is enabled.
Approved to land on the beta branch before Monday merge to mozilla-release for our RC build, thanks.
Comment 11•2 years ago
|
||
bugherder uplift |
Assignee | ||
Updated•1 year ago
|
Description
•