The Linux Foundation

 
Accessibility/IAccessible2/Agenda/20081216

From The Linux Foundation

Agenda for 2008/12/16

  1. Introductions if needed
  2. Approval of prior minutes - Corrections? Approval?
  3. LF: Open A11y news - Janina
    • Update on recent meetings between LF and Microsoft attorneys.
    • When will the LF board discuss the IA2 standard?
  4. LF/AIA interop
    • See questions raised as listed in item 4 of the December 02 agenda.
    • Pending meetings between LF and Microsoft attorneys.
  5. AccProbe inspect tool - Mike Squillace
    • Pending decision of AccProbe team as to whether or not AccProbe should be moved from Eclipse to LF. It would have to be relicensed from EPL.
  6. Firefox - Marco Zehe
  7. IA2 as a LF standard
    • Remaining work items:
      • Add attribution for trademarks.
      • Move 3/26/2007 1.0.1 IDL and 10/13/2008 1.0.2 IDLs into BZR.
      • Close out bugs that have been addressed.
  8. Text attributes spec
  9. IA2 in Qt
    • Mick and Jamie felt Qt should enable their Win support. Janina to follow up with her recent contact at Nokia and Mick and/or Jamie to see if they can submit a request for this to be added. A product called VirtualBox uses Qt.
  10. Flows from / Flows to
    • OOo Writer only provides FlowFrom/To when a paragraph is broken into two at a page boundary.
    • From Mick in an earlier via email: We need a way to ask the app where the caret would go if it were to fall off the end of a particular object. It's not just related to paragraphs, but to any object where the caret can move.</p>

      In the given situation of paragraph table paragraph, it depends on what the app does with the caret. if you are on the last position of the first paragraph and you press right arrow or down arrow, does the caret move to the first cell in the table? if so, then that should be the relation: first paragraph flows to first cell, first cell flows from first paragraph. The same as the last cell in the table flows to second paragraph, second paragraph flows from last cell in table. Also of course I would expect that the flows to/from relation exists on all the table cells.

      When I say table cell though, I really do mean the deepest object in that table cell that has the caret.

      So really, the question is: is the flowsTo/flowsFrom relation really to show where the caret moves? If so this is good, and this is what we would wish to happen. But if flowsTo/flowsFrom was created for a different purpose, then we perhaps should make some new relations specific to the caret.

      At the end of the day, screen readers such as NVDA need a way to ask any given object, for the next or previous object that would contain the caret, if it were to move there directly from this object.

    • Pending more input from Malte regarding an assessment of the burden on app developers.
  11. QueryService and QueryInterface
    • Mick commented on the IA2 list that IA2 indicates that QueryService should be supported such that an AT can QS between any two IA2 interfaces. Conversations with other developers during the last two weeks indicates that there is a preference to limit the use of QS between IAccessible and IAccessible2 and between IAccessible2 and IAccessibleApplication, but that only QI need be supported between any of the rest of the IA2 interfaces.
      • Note: requiring QS support to get to IAApplication allows that interface to be implemented on a single object rather than over and over again on each object.
      • Are there any objections?
      • Does supporting QS from IAccessible to IAccessible2 or from IAccessible2 to IAApplication imply that the reverse is automatically possible?
  12. Deprecation of role EDITBAR?
    • In the spirit of simplification we've been asked to consider removing the edit bar role which is a text area in a tool bar. If for some reason an AT needed to know the text area is in a tool bar the parent could be queried. Are there any objections for this change in IA2 and ATK?
  13. Removal of trailing text in boundary fetches
  14. Access to document revisions - from the ODF AccSC
    • This was reviewed by the AIA Interop group. The following issues were raised.
      1. What is the solution for non-text attributes, e.g. tables, images, charts, cells, spreadsheets?
        • From Oliver-Rainer Wittmann at Sun: Currently, the OOo Writer does not support change tracking for tables, table rows, table cells and anchored objects (text frames, graphics, embedded objects and drawing objects).
        • From Niklas Nebel at Sun: Recorded changes in spreadsheets are somewhat different from text documents: The spreadsheet cell structure only contains the current state. Changes are not part of a cell's content, but separate. Possible changes are:
          1. Content changes
          2. Inserting/deleting columns/rows
          3. Inserting sheets
          4. Moving cell ranges
          • Pending response from Niklas to some questions:
            1. Is there a link to the spec that describes those changes?
            2. What if a sheet is removed? Only insertion is mentioned.
            3. What is a cell range and what does it mean to move it? An example / use case would probably be enough to describe this.
        • The current proposed set of a11y interfaces and methods won't work for a spreadsheet. It will take some time to work through this. Pending requirements from applications developers, the team has agreed to attempt to work toward a spec that will work with a wider range of applications.
        • Pending response from Malte regarding requirements from OOo.
        • From Larry Weiss: UIA doesn’t have direct support for revisions (as such). But it does support “find” of “next” element with specific properties. So for compatibility, IA2 (and ATK) should expose a revision as a property of an element. As I recall, the proposal you referenced didn’t support all of the revision scenarios available in Word: comment only revisions; revisions with one or more comments; style revisions (font, color, bullet style, etc.); adding/removing/changing a link (or image). I don’t know of a list of all possible revisions supported by Word.
      2. How are comment only revisions handled?
        • Malte Timmerman doesn't think this is a feature of OpenOffice.
      3. Probably need more kinds of format changes besides insertion, deletion, and format change.
        • Malte wasn't supportive of this.
      4. Is more granularity needed for format changes, i.e. is it enough to just say there was a format change or should the kind of format change be indicated?
        • Malte said that as far as he knows this was discussed and the decision was to keep it at the current level of granularity.
      5. getSegmentAtOffset (singular) needs to be getSegmentsAtOffset (plural) because unlike links there could be overlapping insertions and deletions.
        • From Oliver-Rainer Wittmann at Sun: In OOo Writer there are no overlapping revisions/change trackings. The OOo Writer breaks a certain change tracking into corresponding pieces, if the user creates overlapping revisions/change trackings. Thus, revisions/change trackings are properly nested in OOo Writer. But nevertheless, there can be several change trackings at a certain cursor position. Thus, the proposed change is reasonable.
    • Once these issues are resolved Li Yuan, the committer for ATK/AT-SPI will develop a patch.

enum IA2RevisionType {
  IA2_REVTYPE_INSERTION, 
  IA2_REVTYPE_DELETION,
  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;

IARevisionText:
 
// 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 );

IARevisionSegment:
 
// 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( IA2RevisionInformation *revision_info );
 
// returns a set of name value pairs describing additional application
// specific attributes in the format "name:value;name:value"
get_extraAttributes( BSTR* extraAttributes );

No progress on the following

  1. 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.
  2. 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?
  3. IA2 issues from Calvin Gaisford, opened on the behalf of AIA.
  4. 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.
  5. 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.
  6. Eclipse
  7. Wikipedia
  8. 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.
  9. Oleacc.idl
    • No new status on when it will be back in the SDK.
  10. FAQ


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