You are eligible to nominate someone if you have achieved 20 "contribution points" as defined by the old LSB charter at http://www.linux-foundation.org/en/Accessibility/Charter#LSB_Contributor. This is for contribution to any Open A11y effort including the Open A11y calls and the IA2 calls. For example, you are a contributor if, over the last six months, you have written two emails (1 point each for a total of 2 points) and participated in 9 phone conferences (2 points each or a total of 18 points).
Version 2 of the text attributes
Aaron thinks they will be able to implement this in FF3.
Addition of IAText::defaultAttributes - raised by Aaron
The question is: For the next release of IA2 should IAText::attributes be deprecated in favor of IAText::defaultAttributes and IAText::changedAttributes?
The use case for FF is a string of text with a link. In FF this will be a parent object with an embed character representing the link text and a child object holding the link text. The concept of default attributes could be helpful in this case, i.e. if the POR (Point of Regard) is in the link, a default attributes method could return the attributes of the parent affecting the child. However this could also be done by querying the parent object for the text attributes in effect at the point of the embed character. If this solution was acceptable the existing IA2 design would not have to be changed.
Prior discussion with ATs: Repeat the text attributes repeated on every node, because that's what Notes 8 does. However, it turns out that there are bigger issues than that, in terms of how FF is different from Notes 8:
Where focus is in an editable document
FF uses embedded object chars and a containment hierarchy, so that to get text for a line you need recursion.
Aaron will continue discussions with the AT vendors. He will target having more status in two weeks.
IA2 has text events for both updated and changed - raised by Aaron
One of these is a duplicate. The Notes 8 team used UPDATED. BTW, Notes 8 only fires UPDATED. They do not ever fire INSERTED or REMOVED. JAWS doesn't use any of the text events and so the Notes 8 team only implemented the UPDATED event.
FF will use note use UPDATED but when there is a modification/replace will instead generate both REMOVED and INSERTED events. This is to be compatible with Linux AT-SPI.
Proposal is to document the following:
Text deleted - fire REMOVED
Text inserted - fire INSERTED
Text replaced - fire REMOVED and INSERTED *or* UPDATED
Unknown type of text change - fire UPDATED
It was agreed that this was acceptable.
Inspect tool - Mike Squillace:
The next release of AccProbe will be as part of the Accessibility Tools Framework (AcTF), which has its Creation Review set for Sept. 17. After this review, we will (assuming successful at the review) begin committing code to eclipse.org. AccProbe will be part of this initial commit. The next release will include enhanced Find functionality on the Explorer View, a highlighting rectangle, keyboard tracking (and possibly mouse/cursor tracking), and a User's Guide.
The limited release version, currently in use by the FF3 and dojo development teams, will be upgraded to r0.2 in mid September.
Firefox - Aaron Leventhal
7 to 8 weeks of time left to change code for FF3.
The FF3 a11y team includes Aaron, Alexander Surkov, Ginn Chen, and Evan Yan.
Best practice note for ATs - from Andres Gonzalez
The IA2 documents should cover how ATs should handle discovery of interfaces. In general ATs should try IA2 interfaces, followed by using the MSAA interfaces. In cases where the an app is known to have custom interfaces which provide information not supplied by IA2 or MSAA, then those custom interfaces can be used.
The AT can then, by default, support unknown IA2/MSAA apps, without the app developers having to request AT vendors for support on an individual app by app basis.
Use of an offset of -1 to indicate end of string - raised by Aaron
ATK has this convention.
This is in plan for Notes 8.0.1.
The IAEditableText methods supporting this are:
HRESULT copyText([in] long startOffset, [in] long endOffset)
HRESULT deleteText([in] long startOffset, [in] long endOffset)
HRESULT insertText([in] long offset, [in] BSTR* text)
HRESULT cutText([in] long startOffset, [in] long endOffset)
HRESULT pasteText([in] long offset)
HRESULT replaceText([in] long startOffset, [in] long endOffset, [in] BSTR* text)
HRESULT setAttributes([in] long startOffset, [in] long endOffset, [in] BSTR* attributes)
The IAText methods supporting this are:
HRESULT addSelection([in] long startOffset, [in] long endOffset)
HRESULT text([in] long startOffset, [in] long endOffset, [out, retval] BSTR *text)
HRESULT setCaretOffset([in] long offset)
HRESULT setSelection([in] long selectionIndex, [in] long startOffset, [in] long endOffset)
HRESULT scrollSubstringTo([in] long startIndex, [in] long endIndex, [in] enum IA2ScrollType scrollType)
HRESULT scrollSubstringToPoint([in] long startIndex, [in] long endIndex, [in] enum IA2CoordinateType coordinateType, [in] long x, [in] long y)