Voice Access: Selecting a range of text and moving the cursor before/after text is broken with UIA enabled
Categories
(Core :: Disability Access APIs, defect)
Tracking
()
People
(Reporter: Jamie, Assigned: Jamie)
References
(Blocks 1 open bug)
Details
(Whiteboard: [uiaShipBlocker])
Attachments
(2 external files)
STR:
- Turn on Windows Voice Access and ensure it is active.
- Open:
data:text/html,<textarea> - Focus the textarea.
- Say: "This is a test"
- Observe: "This is a test" is entered into the text box.
- Say: "select is through test"
- Expected: "is a test" should be selected.
- Actual: Nothing happens. If you press a key, Voice Access reports "Sorry, something went wrong. Please try again."
- Say: "move before is"
- Expected: The caret should move to the start of "is".
- Actual: Nothing happens.
This works as expected if UIA is disabled.
| Assignee | ||
Updated•1 year ago
|
| Assignee | ||
Comment 1•1 year ago
|
||
FindText walks the leaf segments of the range, gathers all the text and then searches that accumulated text for the requested string.
Previously, it included the full text of each leaf.
However, a range can start in the middle of a leaf.
This could result in a match being returned that was before the start of the origin range.
For example, if a textarea contained "This is a test" but the origin range encompassed "is a test", searching for "is" previously returned the "is" at offset 2 instead of the instance at offset 5.
This caused Windows Voice Access to get stuck in an infinite loop.
To fix this, only include the text spanned by the offsets of each segment.
This also requires that we adjust the matched offset accordingly if the match is in the origin start leaf.
Comment 3•1 year ago
|
||
| bugherder | ||
| Assignee | ||
Comment 4•1 year ago
|
||
FindText walks the leaf segments of the range, gathers all the text and then searches that accumulated text for the requested string.
Previously, it included the full text of each leaf.
However, a range can start in the middle of a leaf.
This could result in a match being returned that was before the start of the origin range.
For example, if a textarea contained "This is a test" but the origin range encompassed "is a test", searching for "is" previously returned the "is" at offset 2 instead of the instance at offset 5.
This caused Windows Voice Access to get stuck in an infinite loop.
To fix this, only include the text spanned by the offsets of each segment.
This also requires that we adjust the matched offset accordingly if the match is in the origin start leaf.
Original Revision: https://phabricator.services.mozilla.com/D261222
Updated•1 year ago
|
Comment 5•1 year ago
|
||
firefox-beta Uplift Approval Request
- User impact if declined: Users will be unable to select a range of text or move the cursor to specific pieces of text using Windows Voice Access.
- Code covered by automated testing: yes
- Fix verified in Nightly: yes
- Needs manual QE test: no
- Steps to reproduce for manual QE testing: not applicable
- Risk associated with taking this patch: low
- Explanation of risk level: Changes isolated to a single accessibility method covered by automated tests.
- String changes made/needed: none
- Is Android affected?: no
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Description
•