summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukasz Stanislawski <l.stanislaws@samsung.com>2017-06-16 14:58:22 +0200
committerLukasz Stanislawski <l.stanislaws@samsung.com>2017-06-26 15:56:08 +0200
commite9871da2793c24e097b631596486f6c2af86daf1 (patch)
treef7fed63a14645ce131ef448bd5481e6139bdc2c0
parent56b1843ac11258bc1ce9ecfa66eeb1bb47a29b21 (diff)
elementary: move cache implementation of bridgedevs/stanluk/refactor2
Change-Id: Iabcfd7d4828be92b99b6f0a2153c5fb143353baf
-rw-r--r--src/Makefile_Elementary.am10
-rw-r--r--src/lib/elementary/elm_atspi_adaptor.c66
-rw-r--r--src/lib/elementary/elm_atspi_adaptor.eo16
-rw-r--r--src/lib/elementary/elm_atspi_bridge.c10
-rw-r--r--src/lib/elementary/elm_atspi_cache.c211
-rw-r--r--src/lib/elementary/elm_atspi_cache.eo25
-rw-r--r--src/lib/elementary/elm_atspi_dbus_reference_private.c54
-rw-r--r--src/lib/elementary/elm_atspi_dbus_reference_private.h4
-rw-r--r--src/lib/elementary/elm_interface_accessible_observer.eo8
-rw-r--r--src/lib/elementary/elm_interface_atspi_accessible.eo10
10 files changed, 398 insertions, 16 deletions
diff --git a/src/Makefile_Elementary.am b/src/Makefile_Elementary.am
index 4f20a7e935..4aaf725534 100644
--- a/src/Makefile_Elementary.am
+++ b/src/Makefile_Elementary.am
@@ -32,6 +32,7 @@ elm_public_eolian_files = \
32 lib/elementary/elm_index.eo \ 32 lib/elementary/elm_index.eo \
33 lib/elementary/elm_interface_accessible_observer.eo \ 33 lib/elementary/elm_interface_accessible_observer.eo \
34 lib/elementary/elm_interface_atspi_accessible.eo \ 34 lib/elementary/elm_interface_atspi_accessible.eo \
35 lib/elementary/elm_atspi_adaptor.eo \
35 lib/elementary/elm_interface_atspi_action.eo \ 36 lib/elementary/elm_interface_atspi_action.eo \
36 lib/elementary/elm_interface_atspi_component.eo \ 37 lib/elementary/elm_interface_atspi_component.eo \
37 lib/elementary/elm_interface_atspi_text_editable.eo \ 38 lib/elementary/elm_interface_atspi_text_editable.eo \
@@ -136,6 +137,10 @@ elm_public_eolian_files = \
136elm_private_eolian_files = \ 137elm_private_eolian_files = \
137 lib/elementary/elm_atspi_bridge.eo \ 138 lib/elementary/elm_atspi_bridge.eo \
138 lib/elementary/elm_interface_accessible_observer.eo \ 139 lib/elementary/elm_interface_accessible_observer.eo \
140 lib/elementary/elm_atspi_status_monitor.eo \
141 lib/elementary/elm_atspi_adaptor.eo \
142 lib/elementary/elm_atspi_cache.eo \
143 lib/elementary/elm_atspi_device_event_controller.eo \
139 lib/elementary/efl_ui_internal_text_interactive.eo \ 144 lib/elementary/efl_ui_internal_text_interactive.eo \
140 lib/elementary/efl_ui_win_internal_part.eo \ 145 lib/elementary/efl_ui_win_internal_part.eo \
141 tests/elementary/focus_test.eo \ 146 tests/elementary/focus_test.eo \
@@ -146,8 +151,6 @@ elm_private_eolian_files = \
146elm_legacy_eolian_files = \ 151elm_legacy_eolian_files = \
147 lib/elementary/elm_access.eo \ 152 lib/elementary/elm_access.eo \
148 lib/elementary/elm_actionslider.eo \ 153 lib/elementary/elm_actionslider.eo \
149 lib/elementary/elm_atspi_status_monitor.eo \
150 lib/elementary/elm_atspi_device_event_controller.eo \
151 lib/elementary/elm_box.eo \ 154 lib/elementary/elm_box.eo \
152 lib/elementary/elm_bubble.eo \ 155 lib/elementary/elm_bubble.eo \
153 lib/elementary/elm_diskselector.eo \ 156 lib/elementary/elm_diskselector.eo \
@@ -565,7 +568,6 @@ lib_elementary_libelementary_la_SOURCES = \
565 lib/elementary/elc_scrolled_entry.c \ 568 lib/elementary/elc_scrolled_entry.c \
566 lib/elementary/elm_access.c \ 569 lib/elementary/elm_access.c \
567 lib/elementary/elm_actionslider.c \ 570 lib/elementary/elm_actionslider.c \
568 lib/elementary/elm_atspi_adaptor.c \
569 lib/elementary/elm_atspi_app_object.c \ 571 lib/elementary/elm_atspi_app_object.c \
570 lib/elementary/elm_atspi_bridge.c \ 572 lib/elementary/elm_atspi_bridge.c \
571 lib/elementary/elm_atspi_cache.c \ 573 lib/elementary/elm_atspi_cache.c \
@@ -573,7 +575,9 @@ lib_elementary_libelementary_la_SOURCES = \
573 lib/elementary/elm_atspi_plug.c \ 575 lib/elementary/elm_atspi_plug.c \
574 lib/elementary/elm_atspi_proxy.c \ 576 lib/elementary/elm_atspi_proxy.c \
575 lib/elementary/elm_atspi_socket.c \ 577 lib/elementary/elm_atspi_socket.c \
578 lib/elementary/elm_atspi_adaptor.c \
576 lib/elementary/elm_atspi_status_monitor.c \ 579 lib/elementary/elm_atspi_status_monitor.c \
580 lib/elementary/elm_atspi_dbus_reference_private.c \
577 lib/elementary/elm_bg.c \ 581 lib/elementary/elm_bg.c \
578 lib/elementary/elm_box.c \ 582 lib/elementary/elm_box.c \
579 lib/elementary/elm_bubble.c \ 583 lib/elementary/elm_bubble.c \
diff --git a/src/lib/elementary/elm_atspi_adaptor.c b/src/lib/elementary/elm_atspi_adaptor.c
index 090f2f0791..2df02f1730 100644
--- a/src/lib/elementary/elm_atspi_adaptor.c
+++ b/src/lib/elementary/elm_atspi_adaptor.c
@@ -2,3 +2,69 @@
2# include "elementary_config.h" 2# include "elementary_config.h"
3#endif 3#endif
4 4
5#define ELM_INTERFACE_ATSPI_ACCESSIBLE_PROTECTED
6#include <Elementary.h>
7
8#include "elm_atspi_cache.eo.h"
9#include "elm_atspi_cache.eo.legacy.h"
10#include "elm_atspi_adaptor.eo.h"
11
12typedef struct _Elm_Atspi_Adaptor_Data
13{
14 Eldbus_Connection *conn;
15
16 Eldbus_Signal_Handler *register_hdl;
17 Eldbus_Signal_Handler *unregister_hdl;
18
19 unsigned long object_broadcast_mask;
20 unsigned long object_property_broadcast_mask;
21 unsigned long object_children_broadcast_mask;
22 unsigned long long object_state_broadcast_mask;
23 unsigned long long window_signal_broadcast_mask;
24
25 struct {
26 Eldbus_Service_Interface *accessible;
27 Eldbus_Service_Interface *application;
28 Eldbus_Service_Interface *action;
29 Eldbus_Service_Interface *component;
30 Eldbus_Service_Interface *collection;
31 Eldbus_Service_Interface *editable_text;
32 Eldbus_Service_Interface *image;
33 Eldbus_Service_Interface *selection;
34 Eldbus_Service_Interface *text;
35 Eldbus_Service_Interface *value;
36 Eldbus_Service_Interface *socket;
37 } interfaces;
38} Elm_Atspi_Adaptor_Data;
39
40EOLIAN static void
41_elm_atspi_adaptor_event_handle(Elm_Atspi_Adaptor *adaptor, Elm_Atspi_Adaptor_Data *data, const Elm_Accessible_Event *accessible_event)
42{
43}
44
45EOLIAN static Eo*
46_elm_atspi_adaptor_efl_object_constructor(Elm_Atspi_Adaptor *adaptor, Elm_Atspi_Adaptor_Data *pd)
47{
48 return adaptor;
49}
50
51EOLIAN static void
52_elm_atspi_adaptor_constructor(Elm_Atspi_Adaptor *adaptor, Elm_Atspi_Adaptor_Data *pd, Eldbus_Connection *conn)
53{
54 pd->conn = eldbus_connection_ref(conn);
55 assert (pd->conn != NULL);
56
57 //_register_interfaces();
58 //_register_update_handlers();
59}
60
61EOLIAN static void
62_elm_atspi_adaptor_efl_object_destructor(Elm_Atspi_Adaptor *adaptor, Elm_Atspi_Adaptor_Data *pd)
63{
64 //_unregister_interfaces();
65 //unregister_update_handlers();
66 eldbus_connection_unref(pd->conn);
67 //efl_unref(pd->cache);
68}
69
70#include "elm_atspi_adaptor.eo.c"
diff --git a/src/lib/elementary/elm_atspi_adaptor.eo b/src/lib/elementary/elm_atspi_adaptor.eo
new file mode 100644
index 0000000000..1017bc47bd
--- /dev/null
+++ b/src/lib/elementary/elm_atspi_adaptor.eo
@@ -0,0 +1,16 @@
1import elm_interface_atspi_accessible;
2
3class Elm.Atspi.Adaptor (Efl.Object)
4{
5 methods {
6 event_handle {
7 params {
8 @in event: const(ptr(Elm.Accessible.Event));
9 }
10 }
11 }
12 implements {
13 Efl.Object.constructor;
14 Efl.Object.destructor;
15 }
16}
diff --git a/src/lib/elementary/elm_atspi_bridge.c b/src/lib/elementary/elm_atspi_bridge.c
index 6c32834901..7d73ce47a2 100644
--- a/src/lib/elementary/elm_atspi_bridge.c
+++ b/src/lib/elementary/elm_atspi_bridge.c
@@ -23,6 +23,8 @@
23#include "elm_atspi_status_monitor.eo.legacy.h" 23#include "elm_atspi_status_monitor.eo.legacy.h"
24#include "elm_atspi_device_event_controller.eo.h" 24#include "elm_atspi_device_event_controller.eo.h"
25#include "elm_atspi_device_event_controller.eo.legacy.h" 25#include "elm_atspi_device_event_controller.eo.legacy.h"
26#include "elm_atspi_adaptor.eo.h"
27#include "elm_atspi_adaptor.eo.legacy.h"
26 28
27/* 29/*
28 * Accessibility Bus info not defined in atspi-constants.h 30 * Accessibility Bus info not defined in atspi-constants.h
@@ -61,12 +63,12 @@
61 63
62typedef struct _Elm_Atspi_Bridge_Data 64typedef struct _Elm_Atspi_Bridge_Data
63{ 65{
64 Elm_Atspi_Status_Monitor *monitor;
65 Elm_Atspi_Device_Event_Controller *device_event_controller;
66
67 // connection 66 // connection
68 Eldbus_Connection *a11y_bus; 67 Eldbus_Connection *a11y_bus;
69 68
69 Elm_Atspi_Status_Monitor *monitor;
70 Elm_Atspi_Device_Event_Controller *device_event_controller;
71
70 Eldbus_Signal_Handler *register_hdl; 72 Eldbus_Signal_Handler *register_hdl;
71 Eldbus_Signal_Handler *unregister_hdl; 73 Eldbus_Signal_Handler *unregister_hdl;
72 74
@@ -4897,7 +4899,7 @@ _bridge_plug_unregister(Eo *bridge, Elm_Atspi_Plug *plug)
4897 ELM_ATSPI_BRIDGE_DATA_GET_OR_RETURN(bridge, pd); 4899 ELM_ATSPI_BRIDGE_DATA_GET_OR_RETURN(bridge, pd);
4898 Eina_List *node; 4900 Eina_List *node;
4899 4901
4900 if ((node = eina_list_data_find_list(pd->plugs, plug))) 4902 if (node = eina_list_data_find_list(pd->plugs, plug))
4901 { 4903 {
4902 if (pd->connected) 4904 if (pd->connected)
4903 _bridge_object_unregister(bridge, plug); 4905 _bridge_object_unregister(bridge, plug);
diff --git a/src/lib/elementary/elm_atspi_cache.c b/src/lib/elementary/elm_atspi_cache.c
index e69de29bb2..57e2f79563 100644
--- a/src/lib/elementary/elm_atspi_cache.c
+++ b/src/lib/elementary/elm_atspi_cache.c
@@ -0,0 +1,211 @@
1#ifdef HAVE_CONFIG_H
2# include "elementary_config.h"
3#endif
4
5#include <Elementary.h>
6#include <assert.h>
7
8typedef struct _Elm_Atspi_Cache_Data {
9 Eldbus_Connection *conn;
10 Eldbus_Service_Interface *cache_ifc;
11 Eina_Hash *cache;
12} Elm_Atspi_Cache_Data;
13
14#include "atspi/atspi-constants.h"
15#include "elm_priv.h"
16#include "elm_atspi_cache.eo.h"
17
18#define CACHE_ITEM_SIGNATURE "((so)(so)(so)a(so)assusau)"
19#define CACHE_INTERFACE_PATH "/org/a11y/atspi/cache"
20
21typedef enum _Atspi_Cache_Event_Type
22{
23 ATSPI_CACHE_EVENT_ACCESSIBLE_ADDED = 0,
24 ATSPI_CACHE_EVENT_ACCESSIBLE_REMOVED
25} Atspi_Cache_Event_Type;
26
27static void
28_iter_interfaces_append(Eldbus_Message_Iter *iter, const Eo *obj)
29{
30}
31
32static void
33_cache_item_reference_append(Eldbus_Connection *conn, Elm_Interface_Atspi_Accessible *object, Eldbus_Message_Iter *iter_array)
34{
35 Eldbus_Message_Iter *iter_struct, *iter_sub_array;
36 Elm_Atspi_State_Set states;
37 Elm_Atspi_Role role;
38
39 role = elm_interface_atspi_accessible_role_get(object);
40
41 iter_struct = eldbus_message_iter_container_new(iter_array, 'r', NULL);
42 EINA_SAFETY_ON_NULL_RETURN(iter_struct);
43
44 /* Marshall object path */
45 elm_atspi_dbus_object_reference_append(conn, iter_struct, object);
46
47 /* Marshall root */
48 elm_atspi_dbus_object_reference_append(conn, iter_struct, elm_interface_atspi_accessible_root_get(ELM_INTERFACE_ATSPI_ACCESSIBLE_MIXIN));
49
50 /* Marshall parent */
51 Eo *parent = elm_interface_atspi_accessible_parent_get(object);
52 elm_atspi_dbus_object_reference_append(conn, iter_struct, parent);
53
54 /* Marshall children */
55 Eina_List *children_list = NULL, *l;
56 Eo *child;
57
58 children_list = elm_interface_atspi_accessible_children_get(object);
59 iter_sub_array = eldbus_message_iter_container_new(iter_struct, 'a', "(so)");
60 EINA_SAFETY_ON_NULL_GOTO(iter_sub_array, fail);
61
62 EINA_LIST_FOREACH(children_list, l, child)
63 elm_atspi_dbus_object_reference_append(conn, iter_sub_array, child);
64
65 eldbus_message_iter_container_close(iter_struct, iter_sub_array);
66 eina_list_free(children_list);
67
68 /* Marshall interfaces */
69 elm_atspi_dbus_object_interfaces_append(iter_struct, object);
70
71 /* Marshall name */
72 const char *name = NULL;
73 name = elm_interface_atspi_accessible_name_get(object);
74 if (!name)
75 name = "";
76
77 eldbus_message_iter_basic_append(iter_struct, 's', name);
78
79 /* Marshall role */
80 eldbus_message_iter_basic_append(iter_struct, 'u', role);
81
82 /* Marshall description */
83 const char* descritpion = NULL;
84 descritpion = elm_interface_atspi_accessible_description_get(object);
85 if (!descritpion)
86 descritpion = "";
87 eldbus_message_iter_basic_append(iter_struct, 's', descritpion);
88
89 /* Marshall state set */
90 iter_sub_array = eldbus_message_iter_container_new(iter_struct, 'a', "u");
91 EINA_SAFETY_ON_NULL_GOTO(iter_sub_array, fail);
92
93 states = elm_interface_atspi_accessible_state_set_get(object);
94
95 unsigned int s1 = states & 0xFFFFFFFF;
96 unsigned int s2 = (states >> 32) & 0xFFFFFFFF;
97 eldbus_message_iter_basic_append(iter_sub_array, 'u', s1);
98 eldbus_message_iter_basic_append(iter_sub_array, 'u', s2);
99
100 eldbus_message_iter_container_close(iter_struct, iter_sub_array);
101 eldbus_message_iter_container_close(iter_array, iter_struct);
102
103 return;
104
105fail:
106 if (iter_struct) eldbus_message_iter_del(iter_struct);
107}
108
109static Eldbus_Message *
110_cache_get_items(const Eldbus_Service_Interface *iface, const Eldbus_Message *msg)
111{
112 Eldbus_Message_Iter *iter, *iter_array;
113 Eldbus_Message *ret;
114 Eina_Iterator *cache_iterator;
115 Elm_Interface_Atspi_Accessible *accessible;
116
117 Elm_Atspi_Cache_Data *cache_data = eldbus_service_object_data_get(iface, "data");
118 if (!cache_data) return NULL;
119
120 ret = eldbus_message_method_return_new(msg);
121 EINA_SAFETY_ON_NULL_RETURN_VAL(ret, NULL);
122
123 iter = eldbus_message_iter_get(ret);
124 iter_array = eldbus_message_iter_container_new(iter, 'a', CACHE_ITEM_SIGNATURE);
125 EINA_SAFETY_ON_NULL_GOTO(iter_array, fail);
126
127 cache_iterator = eina_hash_iterator_data_new(cache_data->cache);
128 EINA_SAFETY_ON_NULL_GOTO(iter_array, fail);
129
130 if (eina_iterator_next(cache_iterator, &accessible))
131 {
132 _cache_item_reference_append(cache_data->conn, accessible, iter_array);
133 }
134
135 eina_iterator_free(cache_iterator);
136 eldbus_message_iter_container_close(iter, iter_array);
137
138 return ret;
139fail:
140 if (ret) eldbus_message_unref(ret);
141 return NULL;
142}
143
144static const Eldbus_Method cache_methods[] = {
145 { "GetItems", NULL, ELDBUS_ARGS({CACHE_ITEM_SIGNATURE, "items"}), _cache_get_items, 0 },
146 { NULL, NULL, NULL, NULL, 0 }
147};
148
149static const Eldbus_Signal cache_signals[] = {
150 [ATSPI_CACHE_EVENT_ACCESSIBLE_ADDED] = { "AddAccessible", ELDBUS_ARGS({"((so)(so)a(so)assusau)", "added"}), 0},
151 [ATSPI_CACHE_EVENT_ACCESSIBLE_REMOVED] = { "RemoveAccessible", ELDBUS_ARGS({ "(so)", "removed" }), 0},
152 {NULL, NULL, 0}
153};
154
155static const Eldbus_Service_Interface_Desc cache_iface_desc = {
156 ATSPI_DBUS_INTERFACE_CACHE, cache_methods, cache_signals, NULL, NULL, NULL
157};
158
159EOLIAN static Elm_Atspi_Cache*
160_elm_atspi_cache_efl_object_constructor(Elm_Atspi_Cache *cache, Elm_Atspi_Cache_Data *pd)
161{
162 efl_constructor(efl_super(cache, ELM_ATSPI_CACHE_CLASS));
163
164 pd->cache_ifc = eldbus_service_interface_fallback_register(pd->conn,
165 CACHE_INTERFACE_PATH,
166 &cache_iface_desc);
167 eldbus_service_object_data_set(pd->cache_ifc, "data", pd);
168
169 if (!pd->cache_ifc)
170 return NULL;
171
172 pd->cache = eina_hash_pointer_new(NULL);
173 assert (pd->cache != NULL);
174
175 return cache;
176}
177
178EOLIAN static void
179_elm_atspi_cache_constructor(Elm_Atspi_Cache *cache, Elm_Atspi_Cache_Data *pd, Eldbus_Connection *conn)
180{
181 pd->conn = elbus_connection_ref(conn);
182 assert (pd->conn != NULL);
183}
184
185EOLIAN static void
186_elm_atspi_cache_efl_object_destructor(Elm_Atspi_Cache *cache, Elm_Atspi_Cache_Data *pd)
187{
188 eina_hash_free(pd->cache);
189 eldbus_connection_unref(pd->conn);
190 efl_destructor(efl_super(cache, ELM_ATSPI_CACHE_CLASS));
191}
192
193EOLIAN static void
194_elm_atspi_cache_add(Elm_Atspi_Cache *cache, Elm_Atspi_Cache_Data *pd, Elm_Interface_Atspi_Accessible *object)
195{
196 eina_hash_add(pd->cache, &object, object);
197}
198
199EOLIAN static void
200_elm_atspi_cache_remove(Elm_Atspi_Cache *cache, Elm_Atspi_Cache_Data *pd, Elm_Interface_Atspi_Accessible *object)
201{
202 eina_hash_del(pd->cache, &object, object);
203}
204
205EOLIAN static Eina_Bool
206_elm_atspi_cache_object_contains(Elm_Atspi_Cache *cache EINA_UNUSED, Elm_Atspi_Cache_Data *pd, Elm_Interface_Atspi_Accessible *obj)
207{
208 return eina_hash_find(pd->cache, &obj) != NULL ? EINA_TRUE : EINA_FALSE;
209}
210
211#include "elm_atspi_cache.eo.c"
diff --git a/src/lib/elementary/elm_atspi_cache.eo b/src/lib/elementary/elm_atspi_cache.eo
new file mode 100644
index 0000000000..a65fa8a711
--- /dev/null
+++ b/src/lib/elementary/elm_atspi_cache.eo
@@ -0,0 +1,25 @@
1class Elm.Atspi.Cache (Efl.Object)
2{
3 methods {
4 add {
5 params {
6 @in access: Elm.Interface.Atspi_Accessible;
7 }
8 }
9 remove {
10 params {
11 @in access: Elm.Interface.Atspi_Accessible;
12 }
13 }
14 object_contains {
15 params {
16 @in access: Elm.Interface.Atspi_Accessible;
17 }
18 return: bool;
19 }
20 }
21 implements {
22 Efl.Object.constructor;
23 Efl.Object.destructor;
24 }
25}
diff --git a/src/lib/elementary/elm_atspi_dbus_reference_private.c b/src/lib/elementary/elm_atspi_dbus_reference_private.c
new file mode 100644
index 0000000000..84916572a5
--- /dev/null
+++ b/src/lib/elementary/elm_atspi_dbus_reference_private.c
@@ -0,0 +1,54 @@
1#ifdef HAVE_CONFIG_H
2# include "elementary_config.h"
3#endif
4
5#include <Elementary.h>
6
7#include "elm_priv.h"
8#include "atspi/atspi-constants.h"
9
10void elm_atspi_dbus_object_reference_append(Eldbus_Connection *conn, Eldbus_Message_Iter *iter, Elm_Interface_Atspi_Accessible *accessible)
11{
12 struct dbus_address addr;
13 ELM_ATSPI_BRIDGE_DATA_GET_OR_RETURN(bridge, pd);
14 Eldbus_Message_Iter *iter_struct = eldbus_message_iter_container_new(iter, 'r', NULL);
15 EINA_SAFETY_ON_NULL_RETURN(iter);
16
17 _bridge_address_from_object(bridge, obj, &addr);
18
19 eldbus_message_iter_basic_append(iter_struct, 's', addr.bus);
20 eldbus_message_iter_basic_append(iter_struct, 'o', addr.path);
21 eldbus_message_iter_container_close(iter, iter_struct);
22}
23
24void elm_atspi_dbus_object_interfaces_append(Eldbus_Message_Iter *iter, const Eo *obj)
25{
26 Eldbus_Message_Iter *iter_array;
27 iter_array = eldbus_message_iter_container_new(iter, 'a', "s");
28 if (!iter_array) return;
29
30 if (efl_isa(obj, ELM_INTERFACE_ATSPI_ACCESSIBLE_MIXIN))
31 {
32 eldbus_message_iter_basic_append(iter_array, 's', ATSPI_DBUS_INTERFACE_ACCESSIBLE);
33 eldbus_message_iter_basic_append(iter_array, 's', ATSPI_DBUS_INTERFACE_COLLECTION);
34 }
35 if (efl_isa(obj, ELM_INTERFACE_ATSPI_ACTION_MIXIN))
36 eldbus_message_iter_basic_append(iter_array, 's', ATSPI_DBUS_INTERFACE_ACTION);
37 if (efl_isa(obj, ELM_ATSPI_APP_OBJECT_CLASS))
38 eldbus_message_iter_basic_append(iter_array, 's', ATSPI_DBUS_INTERFACE_APPLICATION);
39 if (efl_isa(obj, ELM_INTERFACE_ATSPI_COMPONENT_MIXIN))
40 eldbus_message_iter_basic_append(iter_array, 's', ATSPI_DBUS_INTERFACE_COMPONENT);
41 if (efl_isa(obj, ELM_INTERFACE_ATSPI_TEXT_EDITABLE_INTERFACE))
42 eldbus_message_iter_basic_append(iter_array, 's', ATSPI_DBUS_INTERFACE_EDITABLE_TEXT);
43 if (efl_isa(obj, ELM_INTERFACE_ATSPI_IMAGE_MIXIN))
44 eldbus_message_iter_basic_append(iter_array, 's', ATSPI_DBUS_INTERFACE_IMAGE);
45 if (efl_isa(obj, ELM_INTERFACE_ATSPI_SELECTION_INTERFACE))
46 eldbus_message_iter_basic_append(iter_array, 's', ATSPI_DBUS_INTERFACE_SELECTION);
47 if (efl_isa(obj, ELM_INTERFACE_ATSPI_TEXT_INTERFACE))
48 eldbus_message_iter_basic_append(iter_array, 's', ATSPI_DBUS_INTERFACE_TEXT);
49 if (efl_isa(obj, ELM_INTERFACE_ATSPI_VALUE_INTERFACE))
50 eldbus_message_iter_basic_append(iter_array, 's', ATSPI_DBUS_INTERFACE_VALUE);
51
52 eldbus_message_iter_container_close(iter, iter_array);
53}
54
diff --git a/src/lib/elementary/elm_atspi_dbus_reference_private.h b/src/lib/elementary/elm_atspi_dbus_reference_private.h
new file mode 100644
index 0000000000..fbd48e1f67
--- /dev/null
+++ b/src/lib/elementary/elm_atspi_dbus_reference_private.h
@@ -0,0 +1,4 @@
1void elm_atspi_dbus_object_reference_append(Eldbus_Connection *conn, Eldbus_Message_Iter *iter, Elm_Interface_Atspi_Accessible *accessible);
2
3void elm_atspi_dbus_object_interfaces_append(Eldbus_Message_Iter *iter, const Eo *obj);
4
diff --git a/src/lib/elementary/elm_interface_accessible_observer.eo b/src/lib/elementary/elm_interface_accessible_observer.eo
index 55fbc82159..c804eeb215 100644
--- a/src/lib/elementary/elm_interface_accessible_observer.eo
+++ b/src/lib/elementary/elm_interface_accessible_observer.eo
@@ -1,11 +1,3 @@
1struct Elm.Accessible.Event
2{
3 [[Accessibility event]]
4 object: Elm.Interface.Atspi_Accessible;
5 desc: const(ptr(Efl.Event.Description));
6 info: void_ptr;
7}
8
9interface Elm.Interface.Accessible_Observer () 1interface Elm.Interface.Accessible_Observer ()
10{ 2{
11 [[Interface should be implemented by any object that requires listening 3 [[Interface should be implemented by any object that requires listening
diff --git a/src/lib/elementary/elm_interface_atspi_accessible.eo b/src/lib/elementary/elm_interface_atspi_accessible.eo
index 5b806a3942..a75ea7afbe 100644
--- a/src/lib/elementary/elm_interface_atspi_accessible.eo
+++ b/src/lib/elementary/elm_interface_atspi_accessible.eo
@@ -220,6 +220,14 @@ struct Elm.Atspi.Relation
220 objects: list<Efl.Object>; [[List with relation objects]] 220 objects: list<Efl.Object>; [[List with relation objects]]
221} 221}
222 222
223struct Elm.Accessible.Event
224{
225 [[Accessibility event]]
226 object: Elm.Interface.Atspi_Accessible;
227 desc: const(ptr(Efl.Event.Description));
228 info: void_ptr;
229}
230
223type Elm.Atspi.Relation_Set: list<ptr(Elm.Atspi.Relation)>; [[Elementary AT-SPI relation set type]] 231type Elm.Atspi.Relation_Set: list<ptr(Elm.Atspi.Relation)>; [[Elementary AT-SPI relation set type]]
224 232
225mixin Elm.Interface.Atspi_Accessible (Efl.Interface, Efl.Object) 233mixin Elm.Interface.Atspi_Accessible (Efl.Interface, Efl.Object)
@@ -337,7 +345,7 @@ mixin Elm.Interface.Atspi_Accessible (Efl.Interface, Efl.Object)
337 } 345 }
338 } 346 }
339 event_emit @class @protected { 347 event_emit @class @protected {
340 [[Emit event]] 348 [[Emit event]]
341 params { 349 params {
342 @in accessible: Elm.Interface.Atspi_Accessible; [[Accessibility object.]] 350 @in accessible: Elm.Interface.Atspi_Accessible; [[Accessibility object.]]
343 @in event: ptr(const(Efl.Event.Description)); [[Accessibility event type.]] 351 @in event: ptr(const(Efl.Event.Description)); [[Accessibility event type.]]