summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Gorse <mgorse@novell.com>2011-06-16 16:17:18 -0500
committerMike Gorse <mgorse@novell.com>2011-06-16 16:17:18 -0500
commit3f7c0954a404c23cdbc1ae49f0811195809ab713 (patch)
tree4d677f635ec70d89f13e733d98715f84ff367540
parentc2f52177b77cc70b02c898fb7b5e5908eb891bfb (diff)
downloadat-spi2-atk-cache-refactor.tar.gz
Modify for the new caching APIcache-refactor
Send an object's index and child count in the cache data rather than a list of children.
-rw-r--r--atk-adaptor/adaptors/application-adaptor.c2
-rw-r--r--atk-adaptor/adaptors/cache-adaptor.c240
-rw-r--r--atk-adaptor/introspection.c4
3 files changed, 108 insertions, 138 deletions
diff --git a/atk-adaptor/adaptors/application-adaptor.c b/atk-adaptor/adaptors/application-adaptor.c
index 897ed55..b514c2c 100644
--- a/atk-adaptor/adaptors/application-adaptor.c
+++ b/atk-adaptor/adaptors/application-adaptor.c
@@ -46,7 +46,7 @@ impl_get_Version (DBusMessageIter * iter, void *user_data)
static dbus_bool_t
impl_get_AtspiVersion (DBusMessageIter * iter, void *user_data)
{
- return droute_return_v_string (iter, "2.0");
+ return droute_return_v_string (iter, "2.1");
}
static dbus_int32_t id;
diff --git a/atk-adaptor/adaptors/cache-adaptor.c b/atk-adaptor/adaptors/cache-adaptor.c
index 3b6b28c..b2e1d71 100644
--- a/atk-adaptor/adaptors/cache-adaptor.c
+++ b/atk-adaptor/adaptors/cache-adaptor.c
@@ -49,8 +49,8 @@
SPI_OBJECT_REFERENCE_SIGNATURE \
SPI_OBJECT_REFERENCE_SIGNATURE \
SPI_OBJECT_REFERENCE_SIGNATURE \
- DBUS_TYPE_ARRAY_AS_STRING \
- SPI_OBJECT_REFERENCE_SIGNATURE \
+ DBUS_TYPE_INT32_AS_STRING \
+ DBUS_TYPE_INT32_AS_STRING \
DBUS_TYPE_ARRAY_AS_STRING \
DBUS_TYPE_STRING_AS_STRING \
DBUS_TYPE_STRING_AS_STRING \
@@ -66,153 +66,123 @@
* Marshals the given AtkObject into the provided D-Bus iterator.
*
* The object is marshalled including all its client side cache data.
- * The format of the structure is (o(so)a(so)assusau).
+ * The format of the structure is (o(so)iiassusau).
*/
static void
append_cache_item (AtkObject * obj, gpointer data)
{
DBusMessageIter iter_struct, iter_sub_array;
dbus_uint32_t states[2];
- int count;
+ dbus_int32_t count, index;
AtkStateSet *set;
DBusMessageIter *iter_array = (DBusMessageIter *) data;
-
const char *name, *desc;
dbus_uint32_t role;
+ AtkObject *application, *parent;
g_object_ref (G_OBJECT (obj));
set = atk_object_ref_state_set (obj);
- {
- AtkObject *application, *parent;
-
- dbus_message_iter_open_container (iter_array, DBUS_TYPE_STRUCT, NULL,
- &iter_struct);
-
- /* Marshall object path */
- spi_object_append_reference (&iter_struct, obj);
-
- role = spi_accessible_role_from_atk_role (atk_object_get_role (obj));
-
- /* Marshall application */
- application = spi_global_app_data->root;
- spi_object_append_reference (&iter_struct, application);
-
- /* Marshall parent */
- parent = atk_object_get_parent (obj);
- if (parent == NULL)
- {
- /* TODO, move in to a 'Plug' wrapper. */
- if (ATK_IS_PLUG (obj))
- {
- char *id = g_object_get_data (G_OBJECT (obj), "dbus-plug-parent");
- char *bus_parent;
- char *path_parent;
-
- if (id)
- {
- bus_parent = g_strdup (id);
- if (bus_parent && (path_parent = g_utf8_strchr (bus_parent + 1, -1, ':')))
- {
- DBusMessageIter iter_parent;
- *(path_parent++) = '\0';
- dbus_message_iter_open_container (&iter_struct, DBUS_TYPE_STRUCT, NULL,
- &iter_parent);
- dbus_message_iter_append_basic (&iter_parent, DBUS_TYPE_STRING, &bus_parent);
- dbus_message_iter_append_basic (&iter_parent, DBUS_TYPE_OBJECT_PATH, &path_parent);
- dbus_message_iter_close_container (&iter_struct, &iter_parent);
- }
- else
- {
- spi_object_append_null_reference (&iter_struct);
- }
- }
- else
- {
- spi_object_append_null_reference (&iter_struct);
- }
- }
- else if (role != Accessibility_ROLE_APPLICATION)
- spi_object_append_null_reference (&iter_struct);
- else
- spi_object_append_desktop_reference (&iter_struct);
- }
- else
- {
- spi_object_append_reference (&iter_struct, parent);
- }
-
- /* Marshall children */
- dbus_message_iter_open_container (&iter_struct, DBUS_TYPE_ARRAY, "(so)",
- &iter_sub_array);
- if (!atk_state_set_contains_state (set, ATK_STATE_MANAGES_DESCENDANTS))
- {
- gint childcount, i;
-
- childcount = atk_object_get_n_accessible_children (obj);
- for (i = 0; i < childcount; i++)
- {
- AtkObject *child;
- gchar *child_path;
-
- child = atk_object_ref_accessible_child (obj, i);
- spi_object_append_reference (&iter_sub_array, child);
- g_object_unref (G_OBJECT (child));
- }
- }
- if (ATK_IS_SOCKET (obj) && atk_socket_is_occupied (ATK_SOCKET (obj)))
- {
- AtkSocket *socket = ATK_SOCKET (obj);
- gchar *child_name, *child_path;
- child_name = g_strdup (socket->embedded_plug_id);
- child_path = g_utf8_strchr (child_name + 1, -1, ':');
- if (child_path)
- {
- DBusMessageIter iter_socket;
- *(child_path++) = '\0';
- dbus_message_iter_open_container (&iter_sub_array, DBUS_TYPE_STRUCT, NULL,
- &iter_socket);
- dbus_message_iter_append_basic (&iter_socket, DBUS_TYPE_STRING, &child_name);
- dbus_message_iter_append_basic (&iter_socket, DBUS_TYPE_OBJECT_PATH, &child_path);
- dbus_message_iter_close_container (&iter_sub_array, &iter_socket);
- }
- g_free (child_name);
- }
-
- dbus_message_iter_close_container (&iter_struct, &iter_sub_array);
-
- /* Marshall interfaces */
- dbus_message_iter_open_container (&iter_struct, DBUS_TYPE_ARRAY, "s",
- &iter_sub_array);
- spi_object_append_interfaces (&iter_sub_array, obj);
- dbus_message_iter_close_container (&iter_struct, &iter_sub_array);
-
- /* Marshall name */
- name = atk_object_get_name (obj);
- if (!name)
- name = "";
- dbus_message_iter_append_basic (&iter_struct, DBUS_TYPE_STRING, &name);
-
- /* Marshall role */
- dbus_message_iter_append_basic (&iter_struct, DBUS_TYPE_UINT32, &role);
-
- /* Marshall description */
- desc = atk_object_get_description (obj);
- if (!desc)
- desc = "";
- dbus_message_iter_append_basic (&iter_struct, DBUS_TYPE_STRING, &desc);
-
- /* Marshall state set */
- spi_atk_state_set_to_dbus_array (set, states);
- dbus_message_iter_open_container (&iter_struct, DBUS_TYPE_ARRAY, "u",
- &iter_sub_array);
- for (count = 0; count < 2; count++)
- {
- dbus_message_iter_append_basic (&iter_sub_array, DBUS_TYPE_UINT32,
- &states[count]);
- }
- dbus_message_iter_close_container (&iter_struct, &iter_sub_array);
- }
+
+ dbus_message_iter_open_container (iter_array, DBUS_TYPE_STRUCT, NULL,
+ &iter_struct);
+
+ /* Marshal object path */
+ spi_object_append_reference (&iter_struct, obj);
+
+ role = spi_accessible_role_from_atk_role (atk_object_get_role (obj));
+
+ /* Marshal application */
+ application = spi_global_app_data->root;
+ spi_object_append_reference (&iter_struct, application);
+
+ /* Marshal parent */
+ parent = atk_object_get_parent (obj);
+ if (parent == NULL)
+ {
+ /* TODO, move in to a 'Plug' wrapper. */
+ if (ATK_IS_PLUG (obj))
+ {
+ char *id = g_object_get_data (G_OBJECT (obj), "dbus-plug-parent");
+ char *bus_parent;
+ char *path_parent;
+
+ if (id)
+ {
+ bus_parent = g_strdup (id);
+ if (bus_parent && (path_parent = g_utf8_strchr (bus_parent + 1, -1, ':')))
+ {
+ DBusMessageIter iter_parent;
+ *(path_parent++) = '\0';
+ dbus_message_iter_open_container (&iter_struct, DBUS_TYPE_STRUCT, NULL,
+ &iter_parent);
+ dbus_message_iter_append_basic (&iter_parent, DBUS_TYPE_STRING, &bus_parent);
+ dbus_message_iter_append_basic (&iter_parent, DBUS_TYPE_OBJECT_PATH, &path_parent);
+ dbus_message_iter_close_container (&iter_struct, &iter_parent);
+ }
+ else
+ {
+ spi_object_append_null_reference (&iter_struct);
+ }
+ }
+ else
+ {
+ spi_object_append_null_reference (&iter_struct);
+ }
+ }
+ else if (role != Accessibility_ROLE_APPLICATION)
+ spi_object_append_null_reference (&iter_struct);
+ else
+ spi_object_append_desktop_reference (&iter_struct);
+ }
+ else
+ {
+ spi_object_append_reference (&iter_struct, parent);
+ }
+
+ /* Marshal index in parent */
+ index = (atk_state_set_contains_state (set, ATK_STATE_TRANSIENT)
+ ? -1 : atk_object_get_index_in_parent (obj));
+ dbus_message_iter_append_basic (&iter_struct, DBUS_TYPE_INT32, &index);
+
+ /* marshal child count */
+ count = (atk_state_set_contains_state (set, ATK_STATE_MANAGES_DESCENDANTS)
+ ? -1 : atk_object_get_n_accessible_children (obj));
+ if (ATK_IS_SOCKET (obj) && atk_socket_is_occupied (ATK_SOCKET (obj)))
+ count = 1;
+ dbus_message_iter_append_basic (&iter_struct, DBUS_TYPE_INT32, &count);
+
+ /* Marshal interfaces */
+ dbus_message_iter_open_container (&iter_struct, DBUS_TYPE_ARRAY, "s",
+ &iter_sub_array);
+ spi_object_append_interfaces (&iter_sub_array, obj);
+ dbus_message_iter_close_container (&iter_struct, &iter_sub_array);
+
+ /* Marshal name */
+ name = atk_object_get_name (obj);
+ if (!name)
+ name = "";
+ dbus_message_iter_append_basic (&iter_struct, DBUS_TYPE_STRING, &name);
+
+ /* Marshal role */
+ dbus_message_iter_append_basic (&iter_struct, DBUS_TYPE_UINT32, &role);
+
+ /* Marshal description */
+ desc = atk_object_get_description (obj);
+ if (!desc)
+ desc = "";
+ dbus_message_iter_append_basic (&iter_struct, DBUS_TYPE_STRING, &desc);
+
+ /* Marshal state set */
+ spi_atk_state_set_to_dbus_array (set, states);
+ dbus_message_iter_open_container (&iter_struct, DBUS_TYPE_ARRAY, "u",
+ &iter_sub_array);
+ for (count = 0; count < 2; count++)
+ {
+ dbus_message_iter_append_basic (&iter_sub_array, DBUS_TYPE_UINT32,
+ &states[count]);
+ }
+ dbus_message_iter_close_container (&iter_struct, &iter_sub_array);
dbus_message_iter_close_container (iter_array, &iter_struct);
g_object_unref (set);
g_object_unref (obj);
diff --git a/atk-adaptor/introspection.c b/atk-adaptor/introspection.c
index 22c3115..bab43d2 100644
--- a/atk-adaptor/introspection.c
+++ b/atk-adaptor/introspection.c
@@ -696,12 +696,12 @@ const char *spi_org_a11y_atspi_Cache =
"<interface name=\"org.a11y.atspi.Cache\" version=\"0.1.7\">"
""
" <method name=\"GetItems\">"
-" <arg direction=\"out\" name=\"nodes\" type=\"a((so)(so)a(so)assusau)\" />"
+" <arg direction=\"out\" name=\"nodes\" type=\"a((so)(so)iiassusau)\" />"
" "
" </method>"
""
" <signal name=\"AddAccessible\">"
-" <arg name=\"nodeAdded\" type=\"((so)(so)a(so)assusau)\" />"
+" <arg name=\"nodeAdded\" type=\"((so)(so)iiassusau)\" />"
" "
" </signal>"
""