Re: Understanding the AT-SPI D-BUS protocol
- From: Mike Gorse <mgorse alum wpi edu>
- To: ydirson free fr
- Cc: gnome-accessibility-list gnome org
- Subject: Re: Understanding the AT-SPI D-BUS protocol
- Date: Sun, 16 May 2021 12:55:45 -0500 (CDT)
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]