Closed Bug 1787283 Opened 2 years ago Closed 2 years ago

Cache NODE_CHILD_OF and NODE_PARENT_OF relations


(Core :: Disability Access APIs, task)




108 Branch
Tracking Status
firefox108 --- fixed


(Reporter: eeejay, Assigned: nlapre)



(Whiteboard: [ctw-m3])


(1 file)

Marking as m3 because this is needed for Mac ctw.

Assignee: nobody → mreschenberg
Type: defect → task
Summary: Cache NODE_CHILD_OF relation → Cache NODE_CHILD_OF and NODE_PARENT_OF relations

ETA: we also need the "parent" version of this

:Jamie are these supposed to be reciprocal relations? It looks like they parent/child relationship gets mirrored for tree-related accs, but not for accs that hit this clause

Flags: needinfo?(jteh)

As discussed on Zoom, they should probably be reciprocal strictly speaking. However, since this is now only used to deal with a very specific obscure case with legacy window emulation on Windows, it isn't really worth the implementation effort. We should just handle this special case in a similar way in DocAccessibleParent.

Flags: needinfo?(jteh)
Assignee: mreschenberg → eitan
Assignee: eitan → nlapre

Expanding on comment 3, I mean that the NODE_CHILD_OF relation that we implement primarily for JAWS does not need a reciprocal NODE_PARENT_OF relation. For the JAWS case, we would implement this in a DocAccessibleParent::RelationByType overide, which would just return Parent() for NODE_CHILD_OF but only if IsTopLevel().

We'd like to provide NODE_CHILD_OF and NODE_PARENT_OF relations in the parent
process, relying on cached information, to avoid sync IPDL messages. This
revision implements most of the use cases for this relation for remote
accessibles, notably setting aside handling of MathML's <mroot> parent/child
relation. ARIA trees, treegrids, lists, and so on are handled in the remote
accessible largely identically to how they were handled in LocalAccessible.
Rather than define a new rule for walking the tree to find children, this
revision unifies the ItemIterator so it works on generic Accessibles, and uses
it in RemoteAccessibleBase the same way it's used in LocalAccessible. The
special case carve-out for MSAA clients now exists as a simpler IsTopLevel
check in DocAccessibleParent.

Pushed by
Provide NODE_CHILD_OF, NODE_PARENT_OF relations in remote acc, r=morgan,Jamie
Closed: 2 years ago
Resolution: --- → FIXED
Target Milestone: --- → 108 Branch
You need to log in before you can comment on or make changes to this bug.