The Linux Foundation


From The Linux Foundation

Agenda for 2008/10/07

  1. Introductions if needed
  2. Approval of minutes - Corrections? Approval?
  3. LF: Open A11y news - Janina
  4. AccProbe inspect tool - Mike Squillace
  5. Firefox - Marco Zehe
    • Static text - There is no need for the auto-generated attribute to indicate the caret behavior (all: can move caret through text, first: can only move caret to the first character, none: can't move the caret into the text at all) as long as IAText::setCaretOffset returns a failure when the caret can't be set. E_FAIL was not one of the setCaretOffset return codes so Bug 174 has been opened and the fix has been included in the 1.0.2 IDL.
  6. IAText::textAt/After/BeforeOffset errors
    • When investigating Mozilla bug 551489 the following IA2 IDL commentary errors were discovered. Bug 175 was opened and the fix is now in the 1.0.2 IDL.
      1. textAtOffset - The following sentence should be deleted:
        For example, if text type is IA2_TEXT_BOUNDARY_WORD, then the complete word that is closest to and located before offset is returned.
      2. textAfterOffset - The word "before" should be changed to "after" in this sentence:
        For example, if text type is IA2_TEXT_BOUNDARY_WORD, then the complete word that is closest to and located before offset is returned.
      3. The following sentence should be removed from all three of IAText::textAt/After/BeforeOffset:
        If the index is valid, but no suitable word (or other text type) is found, an empty text segment is returned.
  7. IA2 1.0.2 review
    • For the history of Will Walker's review see:
    • The current status of Will's review items follows:
      1. Does IA2 need role sets? ATK has it because the GTK can have a checkbox as a direct child of a table.
        • Besides Will, all but Marco indicated that there should be a single role. Marco said:
          Checkboxes within table cells or similar scenarios should be considered in the future. I could not agree more! Although right now, Gecko does not provide any such constructs for Windows, this would allow for future widget enhancements in both ARIA and XUL.
        • The group is not against checkboxes in table cells, but are indicating that a checkbox needs to be a child of a cell object, not the direct child of a table.
        • Marco, Are you OK with that?
      2. The toolkit name and version should be moved from IAApplication to IAccessible2. Apps can be made up of objects from different toolkits, e.g. chrome vs presentation area.
        • This is bug 176. It can't be fixed in version 1.0.2 because there are existing implementations using the IDL.
      3. Roles as strings rather then integers
        • There was consensus that we shouldn't change this.
      4. The format of IAAction::keyBinding should be described.
        • This has been discussed in Bug 177. Please review.
      5. There is a single L, double L mismatch in the labelledBy relation.
      6. There is no tooltipFor relation.
        • There was consensus that we shouldn't add a tooltip relation. There is the "describedBy" relation and the MSAA tooltip role.
      7. If an object has IA2_MANAGES_DESCENDANTS how does an AT determine which child is active?
        • Due to the fact that WinEvents doesn't allow the child index to be passed on the IA2_EVENT_ACTIVE_DESCENDANT_CHANGED event the manages descendants scheme can't be used with IA2. Instead the active child object has to fire MSAA's EVENT_OBJECT_FOCUS. The consensus is to document that IA2_MANAGES_DESCENDANTS state and the IA2_EVENT_ACTIVE_DESCENDANT_CHANGED event are deprecated and the latter should be replaced with a focus event fired on the active child object.
        • This has been fixed in the documentation via Bug 179.
        • Bug 180 was also fixed.
      8. Commentary for IAccessibleValue::minimumValue says: ...If this object has no upper bound. It should be "lower bound".
      9. IAValue should include methods to fetch the user consumable current, minimum, and maximum values
        • The consensus is that this should be fixed in the next release. It can't be fixed in this release because it would break compatibility with existing implementations.
        • Bug 182 has been opened.
        • Jamie pointed out that for each role, it should be documented what implementations should do. For example, progress bars should always provide the programmable values as a value from 0 to 100. Currently, for progress bars, when implementing MSAA's get_accValue most apps provide a string from 0% to 100%. However, Trolltech's Qt uses values greater than 100 and doesn't include % in the string.
        • The progress bar scenario can be documented in IAValue. What is the case for any other roles?
    • Peter Korn's review turn up the following question for discussion:
      • IAccessibleHyperlink::valid is described as follows:
        Returns whether the target object referenced by this link is still valid.
        This is a volatile state that may change without sending an appropriate event. Returns TRUE if the referenced target is still valid and FALSE otherwise.
      • The text was taken from the UNO a11y API that IA2 was derived from.
      • Firefox 3 only indicates invalid when the URL is malformed. Is there a use case that matches up with the "volatile" behavior described in the text?
    • Remaining work items:
      • Submit to the Linux Foundation Board of Directors for approval.
      • Move 3/26/2007 1.0.1 IDL to BZR.
      • When 1.0.2 is approved move the IDL to BZR.
  8. Proxy DLL
    • Jamie sent Pete his RC file so it can be compared to the one attached to bug 110.
    • When the 1.0.2 files are added to BZR, Pete to include the files needed to build the proxy DLL.
    • The process for building the DLL needs to be updated to cover the use of Visual C Express Edition.
    • That wiki page probably needs other changes.
  9. ISimpleDOMNode
    • Please see the discussion thread.
    • Summary of those discussions:
    • Questions and comments:
      • As a few of the commentors have indicated, a primary goal of IA2 has been to facilitate efficient cross platform (Win/Linux) app development. One of the primary arguments for standardizing ISimple* is, rather, to facilitate efficient cross-browser AT development. We want to expose special markup like math on Linux as well but there is no ATK/AT-SPI equivalent to ISimpleDOMNode. The larger OpenA11y group needs to determine if ATK/AT-SPI should include an equivalent to ISimple*.
      • There is also the issue of the delta between ISimple* and the IE equivalent. While we are considering harmonizing ISimple* with ATK/AT-SPI should we also, via AIA, consider defining an interface definition that deprecates both ISimple* and the IE equivalent so app and AT implementers have only one interface to deal with?
      • Specialized markup like Math also needs to be accessible in non-browser environments. Would ISimpleDOMNode be implementable in other applications such as office apps?
      • Does ISimpleDOMText need to be included? I think all of its function is covered by IA2's IAccessbileText.
      • Alternatively, would it be sufficient to provide access to the specialized markup via a new IAccessible2::get_innerMarkup method?

No progress on the following

  1. Access to smart tags
    • Symphony uses IAHypertext/IAHyperlink for smart tags. This seems reasonable because smart tags are very similar to links. They represent actionable text. IAHyperlink can represent more than one action which is common for smart tags.
      • One requirement is for links and smart tags to be differentiated. This can be done with an object attribute on the accessible that represents the link object. Are there any issues with that approach?
  2. IA2 issues from Calvin Gaisford, opened on the behalf of AIA.
  3. IA2 object attributes specification.
    • The Symphony and FF3 object attributes will be reviewed. The common attributes will become part of the IA2 object attributes spec and the spec will reference the FF3 and Symphony specific specifications. (The Symphony object attributes are not documented on any Symphony web site, but they'll soon be documented on the IA2 site.)
    • Pete to add a "display" attribute with CSS2 values.
  4. Items raised by NVDA last year need to be put on the agenda for an upcoming Open A11y meeting
    • These are generic issues that need to be solved for both IA2 and ATK/AT-SPI dealing with objects contained in documents and tables
    • See items 4 and 5 in the October 2nd 2007 minutes for the history.
    • This was discussed during the January 22 Open a11y meeting.
    • These should be reopened and discussed with Willie and Li Yuan at a call convenient to the US, China, and Australia.
  5. Eclipse
  6. Wikipedia
  7. Developer Guide - Best practices document. We should start an outline for a best practices document. For starters it should define the following:
    • What events should be fired for each role and in what order.
    • What object hierarchy should be used. There are two today, a flat hierarchy as used in Symphony and a deeper hierarchy as used in Firefox. These two should be documented and in order to cut down on the proliferation of designs, future applications should attempt to use one or the other.
  8. Oleacc.idl
    • No new status on when it will be back in the SDK.
  9. FAQ
  10. Access to document revisions - from the ODF AccSC
    • This was reviewed by the AIA Interop group. The following issues were raised.
      • What is the solution for non-text attributes, e.g. tables, images, charts, cells, spreadsheets?
      • How are comment only revisions handled?
      • Probably need more kinds of format changes besides insertion, deletion, and format change.
      • Use cases are needed.
      • getSegmentAtOffset (singular) needs to be getSegmentsAtOffset (plural) because unlink links there could be overlapping insertions and deletions.
    • Once these issues are resolved Li Yuan, the committer for ATK/AT-SPI will develop a patch.

enum IA2RevisionType {
  IA2_REVTYPE_FORMAT_CHANGE  // The revision is due to any change in formatting attributes. 

typedef struct {
    enum IA2RevisionType type;  
    BSTR time;  ///< ISO 8601 format:  YYYY-MM-DDThh:mm:ss (eg 1997-07-16T19:20:21)
    BSTR author;
    BSTR comments;
} IA2RevisionInformation;

// Note: an object that implements IARevisionText must also implement IAText
// returns the number of segments available for the
// block of text represented by the IARevisionText object.
// this number is 1 based
get_segmentCount( long* count );
// returns a specific segment based on the index passed in
// the index is 0 based.
// no two indexes should return the same segment.
// any index >= 0, and less than the segment count should return a valid segment
// any index outside those bounds should set HRESULT to S_FALSE and return NULL
get_segment( long index,  IARevisionSegment** seg );
// returns a segment whose boundaries encompass the offset provided
// if there are no segments that correspond to the given offset, an error is produced
// offsets correspond identically to those used by IAText and IAHyperlink
get_segmentAtOffset( long offset, IARevisionSegment** seg );

// returns the bounding offsets of the segment within the IARevisionText/IAText object.
// the end offset is one past the last character in the revision text
get_bounds( long* start, long* end );

// returns a struct containing date/time, author, and comments
get_attributes( IA2RevisionAttributes *attributes );
// returns a set of name value pairs describing additional application
// specific attributes in the format "name:value;name:value"
get_extraAttributes( BSTR* extraAttributes );

[Article] [Discussion] [View source] [History]