[Accessibility-ia2] Fw: Proposal for new property on table Cell: cell-number

Pete Brunet brunet at us.ibm.com
Wed Apr 23 11:28:46 PDT 2008


Below is the history of a discussion about a request from the Firefox a11y 
team for a new object attribute, cell-index, for cell objects.  To 
summarize...

There are scenarios in Firefox , similar to the ones raised by Andres last 
Summer, where table cells are not children of the table and so when an AT 
holds a reference to a cell object the AT can't use indexInParent to 
determine the index of the cell in its table.  Last year we had decided 
that we'd have the table object create a mapping from IA2::uniqueID to 
cell-index and then the AT could use the cell object's uniqueID in any 
case where it would have otherwise used the index returned by 
indexInParent.  This would require the AT to know that  the app 
implemented tables in that manner (or a new table object attribute 
indicating that the table used that implementation). 

The Firefox team is suggesting that instead of using the uniqueID scheme 
(which has no equivalent in ATK), a new cell-index object attribute can be 
provided on cells.  If it exists then the AT would navigate up the 
accessible hierarchy to the closest ancestor table and then use that 
index, otherwise the AT would call indexInParent on the cell object and 
then use that index on the immediate parent table.

This is felt by those who have been discussing it up to now to be 
preferable to the technique we decided on last Summer.  I'm interested in 
knowing if anyone has any issues with cell-index being documented as a new 
object attribute when I create the IA2 object attribute document.

By the way, I'd prefer that the new attribute be named table-cell-index to 
clarify that it's the index of the cell in the table rather than the index 
of the cell in a row or column.

Pete Brunet
                                                                          
IBM Accessibility Architecture and Development
11501 Burnet Road, MS 9022E004, Austin, TX 78758
Voice: (512) 838-4594, Cell: (512) 689-4155
Ionosphere: WS4G

----- Forwarded by Pete Brunet/Austin/IBM on 04/23/2008 01:00 PM -----

Aaron M Leventhal/Cambridge/IBM
04/15/2008 10:19 AM

To
Pete Brunet/Austin/IBM at IBMUS
cc
Marco Zehe <marco.zehe at googlemail.com>, Willie Walker 
<William.Walker at Sun.COM>
Subject
Re: Proposal for new property on table Cell: cell-number





Go ahead, I can't be at the meeting today though.

- Aaron





Pete Brunet/Austin/IBM
04/15/2008 05:17 PM

To
Aaron M Leventhal/Cambridge/IBM
cc
Marco Zehe <marco.zehe at googlemail.com>, Willie Walker 
<William.Walker at Sun.COM>
Subject
Re: Proposal for new property on table Cell: cell-number





Aaron, If I can get time I'd like to document this in today's IA2 meeting 
agenda.  Is that OK?

Pete Brunet
                                                                          
IBM Accessibility Architecture and Development
11501 Burnet Road, MS 9022E004, Austin, TX 78758
Voice: (512) 838-4594, Cell: (512) 689-4155
Ionosphere: WS4G




Aaron M Leventhal/Cambridge/IBM
04/15/2008 03:48 AM

To
Pete Brunet/Austin/IBM at IBMUS
cc
Marco Zehe <marco.zehe at googlemail.com>, Willie Walker 
<William.Walker at Sun.COM>
Subject
Re: Proposal for new property on table Cell: cell-number





Using an object attribute "cell-number" seems simpler. No changes to ATK 
required, and the AT can just check to see if the attribute is there and 
use that instead of the indexInParent.

- Aaron





Pete Brunet/Austin/IBM
04/15/2008 12:14 AM

To
Aaron M Leventhal/Cambridge/IBM
cc
Marco Zehe <marco.zehe at googlemail.com>, Willie Walker 
<William.Walker at Sun.COM>
Subject
Re: Proposal for new property on table Cell: cell-number





Aaron, I know you've always talked about using negative numbers in all our 
discussions about uniqueIDs but at the conclusion of all those discussion 
we've never concluded that negative numbers were needed.  I assume this 
was because uniqueIDs are not childIDs.

At least for now the AT would have to know the behavior of implementation, 
i.e. whether its tables use uniqueID or ChildID to map from IDs to 
rows/cols.  It would be helpful if there was an object attribute on tables 
to indicate the mapping scheme, e.g. 
maps-rows-and-cols-using-uniqueIDs:true/false (or shorter 
uses-uniqueIDs:true/false).

ATK would need to be extended to add uniqueID.  It's useful for other 
purposes as you have championed.  Here's the description of uniqueID from 
my working copy of the IA2 spec:

The uniqueID is an identifier for this object, is unique within the 
current window, and remains the same for the lifetime of the accessible 
object.

The uniqueID is not related to the MSAA objectID which is used by the 
server to disambiguate between IAccessibles per HWND or the MSAA childID 
which is used to disambiguate between children being managed by an 
IAccessible.

This value is provided so the AT can have access to a unique runtime 
persistent identifier even when not handling an event for the object.

An example of when this value is useful is if the AT wants to build a 
cache. The AT could cache the uniqueIDs in addition to other data being 
cached. When an event is fired the AT could map the uniqueID to its 
internal model. Thus, if there's a REORDER/SHOW/HIDE event the AT knows 
which part of the internal structure has been invalidated and can refetch 
just that part.

This value can also be used by and AT to determine when the current 
control has changed. If the role is the same for two controls that are 
adjacent in the tab order, this can be used to detect the new control.

Another use of this value by an AT is to identify when a grouping object 
has changed, e.g. when moving from a radio button in one group to a radio 
button in a different group.

One means of implementing this would be to create a factory with a 32 bit 
number generator and a reuse pool. The number generator would emit numbers 
starting at 1. Each time an object's life cycle ended, its number would be 
saved into a resuse pool. The number generator would be used whenever the 
reuse pool was empty.

Pete Brunet
                                                                          
IBM Accessibility Architecture and Development
11501 Burnet Road, MS 9022E004, Austin, TX 78758
Voice: (512) 838-4594, Cell: (512) 689-4155
Ionosphere: WS4G




Aaron M Leventhal/Cambridge/IBM
04/14/2008 04:56 PM

To
Pete Brunet/Austin/IBM at IBMUS
cc
Marco Zehe <marco.zehe at googlemail.com>, Willie Walker 
<William.Walker at Sun.COM>
Subject
Re: Proposal for new property on table Cell: cell-number





There is no ATK uniqueID.

How are our rowIndex and columnIndex impls supposed to know if they are 
getting an index or a uniqueID? What if the impl isn't using negative 
numbers for unique ID's?

- Aaron




Pete Brunet/Austin/IBM
04/14/2008 10:25 PM

To
Marco Zehe <marco.zehe at googlemail.com>
cc
Aaron M Leventhal/Cambridge/IBM at IBMUS, Willie Walker 
<William.Walker at Sun.COM>
Subject
Re: Proposal for new property on table Cell: cell-number





Hi Marco, Unfortunately, due to my work load, I am not able to monitor 
mozilla.dev.accessibility but feel free to email me when there is 
something you want my input on. 

Andres Gonzalez from Adobe brought up a similar issue last summer on the 
IA2 list.  Here is the history on that:

See item three here:  
http://www.linux-foundation.org/en/Accessibility/IAccessible2/Agenda/20070626
And item three here:  
http://www.linux-foundation.org/en/Accessibility/IAccessible2/Minutes/20070626

And this is the documentation I've added to my working copy of IATable:

When an event is fired from a cell, there needs to be a way to determine 
the row and column indexes. How this is done depends on how the table is 
structured.
* If all the cells are children of the table, IAccessible2::indexInParent 
will return the child index which then can be used when calling 
IAccessibleTable::rowIndex and IAccessibleTable::columnIndex
* If the table's direct children are row objects when in turn have cells 
as children then the table object can create a mapping from 
IAccessible2::uniqueID to row and column indexes, i.e. 
IAccessible2::uniqueID can first be called and then the uniqueID can be 
used when calling IAccessibleTable::rowIndex and 
IAccessibleTable::columnIndex. When possible applications should use the 
first implementation as that is what AT (Assistive Technology) will 
normally expect. Otherwise the AT will need to be aware that the 
application requires the secondary means to access row and column indexes.

Aaron, What is the mapping between IA2::uniqueID and ATK?

Pete Brunet
                                                                          
IBM Accessibility Architecture and Development
11501 Burnet Road, MS 9022E004, Austin, TX 78758
Voice: (512) 838-4594, Cell: (512) 689-4155
Ionosphere: WS4G




Marco Zehe <marco.zehe at googlemail.com> 
04/14/2008 10:00 AM

To
Willie Walker <William.Walker at Sun.COM>, Pete Brunet/Austin/IBM at IBMUS
cc
Aaron M Leventhal/Cambridge/IBM at IBMUS
Subject
Proposal for new property on table Cell: cell-number






Hi Willie and Pete,

I wanted to run this by you guys before approaching the dev lists for
Gnome-a11y and IA2:

We are facing a major problem with the way table accessibles, table
cells, table rows etc. sometimes interact with one another in HTML
content. More specifically: There may be situations where a table cell
is not a direct child of the table, because a table row may have
something interesting for Mozilla to expose (ARIA, OnClick handlers etc.).

In such cases, there is going to be a mismatch between methods like
GetIndexInParent on the one hand, and GetColumnAtIndex or GetRowAtIndex
on the other. When the former is being executed on a table cell, and
this cell is not a direct child of the table, the child index cannot be
used to query the table for the ColumnAtIndex or RowAtIndex.  Orca
currently uses this technique when the "Where Am I?" command is being
executed on a table cell, to give the user row and column numbers,
column header information etc., and it fails with several kinds of
commonly encountered HTML content.

To work around this problem in Firefox 3, and since nobody replied to
our call for opinions on the mozilla.dev.accessibility newsgroup, we've
decided to implement a cell-number attribute on each cell that can then
be used to query the row and column index from the table accessible.

However since we actually don't like our supporters parsing attributes
unless absolutely necessary, we'd like to propose a different approach
for a future implementation of AT-SPI and IA2: Give cell accessibles
another attribute called cell-number (or something similar) that can
then be used instead of GetIndexInParent. The resulting value can then
be used to query the table for the column and row numbers of that cell
number.

This is an idea Aaron and I were discussing the other day, and I'd like
to propose this to the IA2 and Gnome a11y dev communities as an 
enhancement.

What do you think?

Thanks,
Marco






-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.linux-foundation.org/pipermail/accessibility-ia2/attachments/20080423/4f717de6/attachment.htm 


More information about the Accessibility-ia2 mailing list