<br><font size=2 face="sans-serif">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. &nbsp;To summarize...</font>
<br>
<br><font size=2 face="sans-serif">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.
&nbsp;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. &nbsp;This would require the AT to know
that &nbsp;the app implemented tables in that manner (or a new table object
attribute indicating that the table used that implementation). &nbsp;</font>
<br>
<br><font size=2 face="sans-serif">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. &nbsp;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.</font>
<br>
<br><font size=2 face="sans-serif">This is felt by those who have been
discussing it up to now to be preferable to the technique we decided on
last Summer. &nbsp;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.</font>
<br>
<br><font size=2 face="sans-serif">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.</font>
<br><font size=2 face="sans-serif"><br>
</font><font size=1 color=#0060a0 face="Arial"><b>Pete Brunet</b></font><font size=3 color=#0060a0><strike><br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</strike></font><font size=1 color=#2f2f2f face="Arial"><br>
IBM Accessibility Architecture and Development<br>
11501 Burnet Road, MS 9022E004, Austin, TX 78758<br>
Voice: (512) 838-4594, Cell: (512) 689-4155<br>
Ionosphere: WS4G<br>
</font>
<br><font size=1 color=#800080 face="sans-serif">----- Forwarded by Pete
Brunet/Austin/IBM on 04/23/2008 01:00 PM -----</font>
<br>
<table width=100%>
<tr valign=top>
<td width=40%><font size=1 face="sans-serif"><b>Aaron M Leventhal/Cambridge/IBM</b></font>
<p><font size=1 face="sans-serif">04/15/2008 10:19 AM</font>
<td width=59%>
<table width=100%>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">To</font></div>
<td><font size=1 face="sans-serif">Pete Brunet/Austin/IBM@IBMUS</font>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">cc</font></div>
<td><font size=1 face="sans-serif">Marco Zehe &lt;marco.zehe@googlemail.com&gt;,
Willie Walker &lt;William.Walker@Sun.COM&gt;</font>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">Subject</font></div>
<td><font size=1 face="sans-serif">Re: Proposal for new property on table
Cell: cell-number</font><a href=Notes://D03NM116/8525604600452FB8/BD053B46B119C67A8525643000742B16/F6D64BD4736A0B308625742C0053F269>Link</a></table>
<br>
<table>
<tr valign=top>
<td>
<td></table>
<br></table>
<br>
<br><font size=2 face="sans-serif">Go ahead, I can't be at the meeting
today though.</font>
<br>
<br><font size=2 face="sans-serif">- Aaron</font>
<br>
<br>
<br>
<br>
<br>
<table width=100%>
<tr valign=top>
<td width=40%><font size=1 face="sans-serif"><b>Pete Brunet/Austin/IBM</b></font>
<p><font size=1 face="sans-serif">04/15/2008 05:17 PM</font>
<td width=59%>
<table width=100%>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">To</font></div>
<td><font size=1 face="sans-serif">Aaron M Leventhal/Cambridge/IBM</font>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">cc</font></div>
<td><font size=1 face="sans-serif">Marco Zehe &lt;marco.zehe@googlemail.com&gt;,
Willie Walker &lt;William.Walker@Sun.COM&gt;</font>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">Subject</font></div>
<td><font size=1 face="sans-serif">Re: Proposal for new property on table
Cell: cell-number</font><a href=Notes://d27ml602/86256E44001BB503/38D46BF5E8F08834852564B500129B2C/BE0D7DC4F05DB4D5C125742C00305B70>Link</a></table>
<br>
<table>
<tr valign=top>
<td>
<td></table>
<br></table>
<br>
<br><font size=2 face="sans-serif">Aaron, If I can get time I'd like to
document this in today's IA2 meeting agenda. &nbsp;Is that OK?</font>
<br><font size=2 face="sans-serif"><br>
</font><font size=1 color=#0060a0 face="Arial"><b>Pete Brunet</b></font><font size=3 color=#0060a0><strike><br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</strike></font><font size=1 color=#2f2f2f face="Arial"><br>
IBM Accessibility Architecture and Development<br>
11501 Burnet Road, MS 9022E004, Austin, TX 78758<br>
Voice: (512) 838-4594, Cell: (512) 689-4155<br>
Ionosphere: WS4G<br>
</font>
<br>
<br>
<br>
<table width=100%>
<tr valign=top>
<td width=40%><font size=1 face="sans-serif"><b>Aaron M Leventhal/Cambridge/IBM</b></font>
<p><font size=1 face="sans-serif">04/15/2008 03:48 AM</font>
<td width=59%>
<table width=100%>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">To</font></div>
<td><font size=1 face="sans-serif">Pete Brunet/Austin/IBM@IBMUS</font>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">cc</font></div>
<td><font size=1 face="sans-serif">Marco Zehe &lt;marco.zehe@googlemail.com&gt;,
Willie Walker &lt;William.Walker@Sun.COM&gt;</font>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">Subject</font></div>
<td><font size=1 face="sans-serif">Re: Proposal for new property on table
Cell: cell-number</font><a href=Notes://D03NM116/8525604600452FB8/BD053B46B119C67A8525643000742B16/81097DBD674E27028625742B0078EA7E>Link</a></table>
<br>
<table>
<tr valign=top>
<td>
<td></table>
<br></table>
<br>
<br><font size=2 face="sans-serif">Using an object attribute &quot;cell-number&quot;
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.</font>
<br>
<br><font size=2 face="sans-serif">- Aaron</font>
<br>
<br>
<br>
<br>
<br>
<table width=100%>
<tr valign=top>
<td width=40%><font size=1 face="sans-serif"><b>Pete Brunet/Austin/IBM</b></font>
<p><font size=1 face="sans-serif">04/15/2008 12:14 AM</font>
<td width=59%>
<table width=100%>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">To</font></div>
<td><font size=1 face="sans-serif">Aaron M Leventhal/Cambridge/IBM</font>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">cc</font></div>
<td><font size=1 face="sans-serif">Marco Zehe &lt;marco.zehe@googlemail.com&gt;,
Willie Walker &lt;William.Walker@Sun.COM&gt;</font>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">Subject</font></div>
<td><font size=1 face="sans-serif">Re: Proposal for new property on table
Cell: cell-number</font><a href=Notes://d27mc602/86256E44001BB503/38D46BF5E8F08834852564B500129B2C/79ADFEF494F964CCC125742B00783DF3>Link</a></table>
<br>
<table>
<tr valign=top>
<td>
<td></table>
<br></table>
<br>
<br><font size=2 face="sans-serif">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. &nbsp;I assume this was because uniqueIDs are not
childIDs.</font>
<br>
<br><font size=2 face="sans-serif">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. &nbsp;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).</font>
<br>
<br><font size=2 face="sans-serif">ATK would need to be extended to add
uniqueID. &nbsp;It's useful for other purposes as you have championed.
&nbsp;Here's the description of uniqueID from my working copy of the IA2
spec:</font>
<br>
<br><font size=2 face="sans-serif">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.</font>
<br>
<br><font size=2 face="sans-serif">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.</font>
<br>
<br><font size=2 face="sans-serif">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.</font>
<br>
<br><font size=2 face="sans-serif">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.</font>
<br>
<br><font size=2 face="sans-serif">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.</font>
<br>
<br><font size=2 face="sans-serif">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.</font>
<br>
<br><font size=2 face="sans-serif">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.</font>
<br><font size=2 face="sans-serif"><br>
</font><font size=1 color=#0060a0 face="Arial"><b>Pete Brunet</b></font><font size=3 color=#0060a0><strike><br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</strike></font><font size=1 color=#2f2f2f face="Arial"><br>
IBM Accessibility Architecture and Development<br>
11501 Burnet Road, MS 9022E004, Austin, TX 78758<br>
Voice: (512) 838-4594, Cell: (512) 689-4155<br>
Ionosphere: WS4G<br>
</font>
<br>
<br>
<br>
<table width=100%>
<tr valign=top>
<td width=40%><font size=1 face="sans-serif"><b>Aaron M Leventhal/Cambridge/IBM</b></font>
<p><font size=1 face="sans-serif">04/14/2008 04:56 PM</font>
<td width=59%>
<table width=100%>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">To</font></div>
<td><font size=1 face="sans-serif">Pete Brunet/Austin/IBM@IBMUS</font>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">cc</font></div>
<td><font size=1 face="sans-serif">Marco Zehe &lt;marco.zehe@googlemail.com&gt;,
Willie Walker &lt;William.Walker@Sun.COM&gt;</font>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">Subject</font></div>
<td><font size=1 face="sans-serif">Re: Proposal for new property on table
Cell: cell-number</font><a href=Notes://D03NM116/8525604600452FB8/BD053B46B119C67A8525643000742B16/9B53870340E185F18625742B006E7AF2>Link</a></table>
<br>
<table>
<tr valign=top>
<td>
<td></table>
<br></table>
<br>
<br><font size=2 face="sans-serif">There is no ATK uniqueID.</font>
<br>
<br><font size=2 face="sans-serif">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?</font>
<br>
<br><font size=2 face="sans-serif">- Aaron</font>
<br>
<br>
<br>
<br>
<table width=100%>
<tr valign=top>
<td width=40%><font size=1 face="sans-serif"><b>Pete Brunet/Austin/IBM</b></font>
<p><font size=1 face="sans-serif">04/14/2008 10:25 PM</font>
<td width=59%>
<table width=100%>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">To</font></div>
<td><font size=1 face="sans-serif">Marco Zehe &lt;marco.zehe@googlemail.com&gt;</font>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">cc</font></div>
<td><font size=1 face="sans-serif">Aaron M Leventhal/Cambridge/IBM@IBMUS,
Willie Walker &lt;William.Walker@Sun.COM&gt;</font>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">Subject</font></div>
<td><font size=1 face="sans-serif">Re: Proposal for new property on table
Cell: cell-number</font><a href=Notes://d27ml602/86256E44001BB503/38D46BF5E8F08834852564B500129B2C/D78A0FAE0FA2B3808725742B00527268>Link</a></table>
<br>
<table>
<tr valign=top>
<td>
<td></table>
<br></table>
<br>
<br><font size=2 face="sans-serif">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. &nbsp;</font>
<br>
<br><font size=2 face="sans-serif">Andres Gonzalez from Adobe brought up
a similar issue last summer on the IA2 list. &nbsp;Here is the history
on that:</font>
<br>
<br><font size=2 face="sans-serif">See item three here: &nbsp;http://www.linux-foundation.org/en/Accessibility/IAccessible2/Agenda/20070626</font>
<br><font size=2 face="sans-serif">And item three here: &nbsp;http://www.linux-foundation.org/en/Accessibility/IAccessible2/Minutes/20070626</font>
<br>
<br><font size=2 face="sans-serif">And this is the documentation I've added
to my working copy of IATable:</font>
<br>
<br><font size=2 face="sans-serif">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.</font>
<br><font size=2 face="sans-serif">* 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</font>
<br><font size=2 face="sans-serif">* 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.</font>
<br>
<br><font size=2 face="sans-serif">Aaron, What is the mapping between IA2::uniqueID
and ATK?</font>
<br><font size=2 face="sans-serif"><br>
</font><font size=1 color=#0060a0 face="Arial"><b>Pete Brunet</b></font><font size=3 color=#0060a0><strike><br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</strike></font><font size=1 color=#2f2f2f face="Arial"><br>
IBM Accessibility Architecture and Development<br>
11501 Burnet Road, MS 9022E004, Austin, TX 78758<br>
Voice: (512) 838-4594, Cell: (512) 689-4155<br>
Ionosphere: WS4G<br>
</font>
<br>
<br>
<br>
<table width=100%>
<tr valign=top>
<td width=40%><font size=1 face="sans-serif"><b>Marco Zehe &lt;marco.zehe@googlemail.com&gt;</b>
</font>
<p><font size=1 face="sans-serif">04/14/2008 10:00 AM</font>
<td width=59%>
<table width=100%>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">To</font></div>
<td><font size=1 face="sans-serif">Willie Walker &lt;William.Walker@Sun.COM&gt;,
Pete Brunet/Austin/IBM@IBMUS</font>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">cc</font></div>
<td><font size=1 face="sans-serif">Aaron M Leventhal/Cambridge/IBM@IBMUS</font>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">Subject</font></div>
<td><font size=1 face="sans-serif">Proposal for new property on table Cell:
cell-number</font></table>
<br>
<table>
<tr valign=top>
<td>
<td></table>
<br></table>
<br>
<br>
<br><tt><font size=2>Hi Willie and Pete,<br>
<br>
I wanted to run this by you guys before approaching the dev lists for<br>
Gnome-a11y and IA2:<br>
<br>
We are facing a major problem with the way table accessibles, table<br>
cells, table rows etc. sometimes interact with one another in HTML<br>
content. More specifically: There may be situations where a table cell<br>
is not a direct child of the table, because a table row may have<br>
something interesting for Mozilla to expose (ARIA, OnClick handlers etc.).<br>
<br>
In such cases, there is going to be a mismatch between methods like<br>
GetIndexInParent on the one hand, and GetColumnAtIndex or GetRowAtIndex<br>
on the other. When the former is being executed on a table cell, and<br>
this cell is not a direct child of the table, the child index cannot be<br>
used to query the table for the ColumnAtIndex or RowAtIndex. &nbsp;Orca<br>
currently uses this technique when the &quot;Where Am I?&quot; command
is being<br>
executed on a table cell, to give the user row and column numbers,<br>
column header information etc., and it fails with several kinds of<br>
commonly encountered HTML content.<br>
<br>
To work around this problem in Firefox 3, and since nobody replied to<br>
our call for opinions on the mozilla.dev.accessibility newsgroup, we've<br>
decided to implement a cell-number attribute on each cell that can then<br>
be used to query the row and column index from the table accessible.<br>
<br>
However since we actually don't like our supporters parsing attributes<br>
unless absolutely necessary, we'd like to propose a different approach<br>
for a future implementation of AT-SPI and IA2: Give cell accessibles<br>
another attribute called cell-number (or something similar) that can<br>
then be used instead of GetIndexInParent. The resulting value can then<br>
be used to query the table for the column and row numbers of that cell<br>
number.<br>
<br>
This is an idea Aaron and I were discussing the other day, and I'd like<br>
to propose this to the IA2 and Gnome a11y dev communities as an enhancement.<br>
<br>
What do you think?<br>
<br>
Thanks,<br>
Marco<br>
</font></tt>
<br>
<br>
<br>
<br>
<br>
<br>