[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