atspi: handle atspi proxy connection at runtime 02/135102/8
authorShinwoo Kim <cinoo.kim@samsung.com>
Wed, 21 Jun 2017 02:39:18 +0000 (11:39 +0900)
committerjunsu choi <jsuya.choi@samsung.com>
Thu, 29 Jun 2017 00:11:02 +0000 (00:11 +0000)
commit6618afe68c1d110649fb0fae4bacb2e69a649eaf
tree308c24d093e6791aef33262009037f6329e02ec3
parent34d42a6109150a5a09c7a1aeb8542aeac816797b
atspi: handle atspi proxy connection at runtime

The following cases make atspi proxy work incorrectly.

[case 1]
1. screen reader on, then a11y order would be
   A1(embedding, deputy) - B1(embedded) - B2(embedded) - A2(embedding)
2. make A2 grab highlight
3. go previous, then A1 grabs highlight.
   but expected result is that the B2 grabs highlight

[case 2]
1. screen reader on, then a11y order would be
   A1(embedding, deputy) - B1(embedded) - B2(embedded) - A2(embedding)
2. make A1 grab highlight
3. go next, then B1 grabs highlight.
   This means that the proxy connection is made properly.
4. screen reader off
5. screen reader on, then a11y order is
   A1(embedding, deputy) -  A2(embedding)
   but the following is expected result as step 1
   A1(embedding, deputy) - B1(embedded) - B2(embedded) - A2(embedding)

So far the pory connects if elm_interface_atspi_children_get is called.
So there is no chance to make connection for the [case 1].

When atspi is disabled, then all atspi related interface is closed.
But the proxy related resources are not removed.
If atspi is enabled again, then newly created interface is used on new BUS.
And the proxy related resources are reused.
So the [case 2]  happens.

This patch set depends on screen-connector to use "widget,create" signal to
connect proxy on elementary side. This should be removed, and we have to
provide proper API to be used on screen-connector side to connect proxy.

Change-Id: I86f610504848db816e6db355316f8da06db513df
src/lib/elm_atspi_bridge.c
src/lib/elm_atspi_proxy.c
src/lib/elm_atspi_proxy.eo
src/lib/elm_layout.c
src/lib/elm_priv.h
src/lib/elm_widget.c
src/lib/elm_widget.eo
src/lib/elm_widget.h
src/lib/elm_win.c