Re: Understanding the AT-SPI D-BUS protocol



Hi Yann,

I'm sorry for the delay in responding--I didn't notice your email until now.

Is there any doc/spec somewhere that would document the whole AT-SPI
protocol in terms of D-BUS, and who's expecting to send/receive what ?

Yeah, it isn't very well documented, and it would be good to have a specification written out, but then that begs the question of whether the interface should stay as it is; I think that some of the gtk developers wouldn't mind trying to simplify it. Some things are more or less the way they are for historical reasons (ie, all events having two ints, whether the particular event uses them or not).

I'm particularly interested in the org.a11y.atspi.Event.Object
interface, and I have only gathered inconsistent data for now, eg.
for the ChildrenChanged signal:

* the interface is not exposed to the D-BUS Introspection API, so we need
 to find in another place the metadata to make sense out of it
* the XML, whether in at-spi-core2 or gtk4 trees, declares a signature
 or "(suuv)"

Oh, I'd consider that a bug--I'll want to clean that up for 2.42. It isn't what the code in libatspi is expecting.

* a gtk2/gtk3 the desktop (org.a11y.atspi.Registry /org/a11y/atspi/accessible/root)
 emits ChildrenChanged with signature "siiv(so)", the "(so)" part refering to the
 desktop
* a gtk2/gtk3 non-desktop org.a11y.atspi.Accessible emits ChildrenChanged
 with signature "siiva{sv}", with the "a{sv}" part usually empty.  What can
 we expect to find there ?

The siiv(so) was the original signature. The (so) was intended to specify the application (with a dbus address and object path), but in reality it always contained the root object, so it seemed superfluous and was mainly left over from the old CORBA implementation. A while back, I replaced it with the a{sv} that you're seeing, but it looks as though I forgot to update the code in the registry daemon. The libatspi code will handle either signature for backwards compatibility. I meant for the a{sv} to allow for properties to be sent along with the event for caching purposes, but it isn't really being used for anything.

* in Qt there is some code to emit ChildrenChanged, but it looks like it
 was never called in any version.  I've started to work on a patch to
 activate this, and notice the existing code emits the "siiv(so)" version.
* in gtk4 the code, having migrated from atk, is simpler and is there,
 but it seems not to trigger.

Thanks for working on the qt code. The gtk 4 code is new and might still be being worked on.

Anyway, I'm sorry for the trouble, and it looks as though you've found a few bugs in AT-SPI.

Hth,
-Mike


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