Ticket #246 (closed defect: fixed)

Opened 21 months ago

Last modified 9 months ago

NVDA should handle events other than "show" for live regions

Reported by: vtsaran Owned by: mdcurran
Priority: major Milestone: 2010.1
Component: Core Version: development
Keywords: ARIA MozillaGrantJul2009 Cc:
Operating system: Blocked by: #385
Blocking:

Description (last modified by jteh) (diff)


Change History

follow-up: ↓ 2   Changed 21 months ago by jteh

Our live region support doesn't care about the role. However, it does work for "show" events only; it is a very incomplete implementation at present. This ticket should either be closed as invalid or changed to cover the fact that NVDA doesn't handle any events other than "show" for live regions.

Out of curiosity, what does the ARIA "status" role map to in accessibility APIs such as IA2?

in reply to: ↑ 1 ; follow-up: ↓ 4   Changed 21 months ago by vtsaran

  • summary changed from NVDA should support ARIA role of status for proper handling of various live regions to NVDA should handle any events other than "show" for live regions

Replying to jteh:

Our live region support doesn't care about the role. However, it does work for "show" events only; it is a very incomplete implementation at present. This ticket should either be closed as invalid or changed to cover the fact that NVDA doesn't handle any events other than "show" for live regions.

I think we should change the description for this ticket. Are there any plans to standardize support for live regions now that NVDA is used by developers to test ARIA?


Out of curiosity, what does the ARIA "status" role map to in accessibility APIs such as IA2?

Log and Status seem to behave in the same way.

  Changed 21 months ago by vtsaran

  • priority changed from minor to major

in reply to: ↑ 2   Changed 21 months ago by jteh

  • description modified (diff)
  • summary changed from NVDA should handle any events other than "show" for live regions to NVDA should handle events other than "show" for live regions

Replying to vtsaran:

Are there any plans to standardize support for live regions now that NVDA is used by developers to test ARIA?

A proper implementation of live regions is planned, but we don't have any estimate as to when that will occur. It requires going in-process, which is always quite complicated and thus is a lot harder and takes a lot longer to implement.

  Changed 15 months ago by jteh

  • milestone changed from 0.6 to 0.7

  Changed 13 months ago by jteh

  • keywords MozillaGrantJul2009 added; role status live regions removed
  • blockedby 385 added

  Changed 9 months ago by mdcurran

  • owner set to mdcurran
  • status changed from new to accepted
  • component changed from Virtual buffers to Core

I have started work on this.
BZR branch  http://bzr.nvaccess.org/nvda/ia2LiveRegions

The work consists of detecting these events in nvdaHelperRemote, checking the object to see if it is a live region, and what kind of live region it is, and then, possibly sending the text back to NVDA for speaking.

To make this possible, I also had to work on getting text to NVDA for speaking from another process. We already had nvdaControler, which was a good, but old, RPC implementation, but this has been removed and now nvdaController is now a new rpc implementation inside nvdaHelperLocal. nvdaHelperRemote in this live region case is the rpc client, though in future it will be possible for us to make another stand-alone rpc client library for use in any application, to force NVDA to speak.

Live region support in the above branch currently:

  • supports aria-live:polite,assertive and rude. Though currently due to NVDA not having any particular speech prioritization, there is no difference between the three.
  • Supports aria-relevant:additions,text, all, and not specified.
  • Does not support aria-relevant:removed. Not sure what exactly to speak here, nore how to handle internationalization for a word like 'removed' since our in-process code doesn't really have any internationalization capabilities at the moment.
  • Does not yet support aria-atomic:true. Technically this isn't too hard to do in Firefox though.
  • This support only works in IAccessible2 applications, specifically most best in Mozilla Gecko applications. Support for IE or non-IAccessible2 browsers would be completely different, there is no useful way to abstract this.

In short this new code improves upon NVDA's old live region support by providing much better performance for many/large updates. NVDA now speaks text changes in live regions rather than only additions. Live region markup is followed much more accurately. Since the NVDA 2009.1 beta and or RC, only the last 3 or so live region updates in quick succession were being spoken. This code also fixes this.

Finally note that as most of this code is inside nvdaHelper (c++ dll) to test you will either have to compile your own nvdaHelper, or wait until a new one is compiled before or at the time of merging this branch in to main.

  Changed 9 months ago by aleksey_s

Mick, you may find the winEventsInprocess branch useful, as i've already implemented handling mechanizm.

  Changed 9 months ago by mdcurran

  • status changed from accepted to closed
  • resolution set to fixed

ia2LiveRegions branched merged in r3400.
Provides major performance inhancements. Supports aria-relevant. Supports text changes. Support for things such as atomic can be addressed in a new ticket.

Note: See TracTickets for help on using tickets.