Accessibility/DOMTreeMapping: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 43: Line 43:


==Algorithms==
==Algorithms==
===Content insertion===
Each accessible is responsible for their children.
#How to find insertion point of the inserted subtree (DOM tree and accessible tree ordering is different)
#How to find adopted DOM nodes in the inserted subtree (DOM nodes adoption)
===Tree creation===
Fire related events like menupopup_start/alert
===Content removal===
#Traverse whole removed subtree to find adopted case? Should they have own mechanism to handle adopted things?
#Find root accessibles within removed subtree, unattach from tree, and shutdown (don't rely on events in this). Fire related events like menupopup_end, alert, hide, reorder events.
===DOM point to text offset===
How we should proceed the case of adopted children and changed order?

Revision as of 08:37, 28 October 2011

What is this

This document describes the mapping between DOM and accessibles trees.

Current state

Existing problems are:

  1. Tree update bugs
    1. imagemap
    2. listbox
  2. Unoptimal tree update.

Details

What we need that for?

The mapping of DOM tree to accessible tree is performed for following proposes:

  1. content insertion
    1. find insertion point
    2. traverse extended DOM tree
  2. content removal
    1. find removal point or find removed accessible
  3. DOM point to offset
    1. convert DOM selection into accessible text selection and caret

Accessible tree

Accessible object manages its children. There are several types of accessibles:

  1. Extended DOM tree traversal
  2. Not based on DOM tree traversal
    1. outerdoc accessible
    2. leaf accessibles
    3. HTML combobox (combobox list accessible)
    4. XUL trees
  3. DOM nodes adoption
    1. imagemap
    2. HTML selects, get accessible from optgroups
  4. change insertion point relative DOM tree order
    1. HTML table moves HTML caption
  5. Based on DOM tree traversal and own accessible
    1. listitem (listbullet and listitem content)

Notifications

  1. standard notifications (standard processing)
  2. XUL menu notifications (standard processing)
  3. XUL listbox notifications (needs to implement)
  4. XUL tree notifications (processed by XUL tree accessible)

Algorithms

Content insertion

Each accessible is responsible for their children.

  1. How to find insertion point of the inserted subtree (DOM tree and accessible tree ordering is different)
  2. How to find adopted DOM nodes in the inserted subtree (DOM nodes adoption)

Tree creation

Fire related events like menupopup_start/alert

Content removal

  1. Traverse whole removed subtree to find adopted case? Should they have own mechanism to handle adopted things?
  2. Find root accessibles within removed subtree, unattach from tree, and shutdown (don't rely on events in this). Fire related events like menupopup_end, alert, hide, reorder events.

DOM point to text offset

How we should proceed the case of adopted children and changed order?