Re: Understanding the AT-SPI D-BUS protocol

2021-05-16 Thread Mike Gorse via gnome-accessibility-list

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
___
gnome-accessibility-list mailing list
gnome-accessibility-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gnome-accessibility-list


Understanding the AT-SPI D-BUS protocol

2021-05-02 Thread Yann Dirson via gnome-accessibility-list
Hi there,

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 ?

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)"
* 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 ?
* 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.

Any clues as to what general direction should be used to patch what needs
to be would be appreciated :)

Best regards,
-- 
Yann
___
gnome-accessibility-list mailing list
gnome-accessibility-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gnome-accessibility-list