[g-a-devel] Proposal: Out of Process Accessibles with AtSpiDbus


[Ed.: This was also sent to accessibility-atspi, but it seems to be
stuck in the moderators queue, so I'm sending it here to get some
traction.  I figure most of you are on both lists anyway]

Many applications (browsers mostly at this time) are beginning to
consider implementing portions of their GUI in separate processes, but
the accessibility of their out-of-process (OOP) controls hasn't really
been discussed thus far.

One proposed solution would be for every application to develop a custom
remoting layer which proxies OOP accessibles to a wrapper in the main
process, but it would be silly for every application that wanted to do
this to have to roll their own solution.  Additionally, such a remoting
layer duplicates much of the work that atk-bridge and at-spi-registry.d

Instead, I propose the addition of two new interfaces -- AtkSocket and
AtkPlug -- to Atk, and corresponding Plug and Socket interfaces to

Similar to GtkPlug[1] and GtkSocket[2], AtkPlug would become the
top-level item of the out-of-process tree, and AtkSocket would reside in
the main process, indicating where the accessibles should be attached.
In my head, I'm imagining that AtkSocket would be a Filler role, and its
children would become the children of the remote AtkPlug-implementing

Of course, all the magic would need to happen in at-spi2 and in
atk-adaptor.  In particular, atk-adaptor would need a method to provide
the bus name of an accessible.  This would be used by AtkPlug to "plug
it in" to AtkSocket.  at-spi2 would then need a way to indicate that the
accessibles returned from getChildAtIndex (and the like) come from a
different bus than the host application.

I've attached a diagram for those who may find it useful, but the
diagram doesn't add any new information to the discussion.

Before we go off and implement this, I'd like to get any feedback,
positive or negative, about the approach.

The use case of this would be to allow Firefox to have their plugins
provide accessibility information, but also have them out of process.
If anyone has any other interesting use cases, I'd love to hear about



[1] http://library.gnome.org/devel/gtk/unstable/GtkPlug.html
[2] http://library.gnome.org/devel/gtk/unstable/GtkSocket.html

Attachment: diagram.jpg
Description: JPEG image

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]