#include <atk/atk.h>
#include <droute/droute.h>
-#include "common/spi-dbus.h"
+#include "spi-dbus.h"
#include "object.h"
+#include "introspection.h"
static dbus_bool_t
impl_get_NRows (DBusMessageIter * iter, void *user_data)
{
AtkTable *table = (AtkTable *) user_data;
dbus_int32_t row, column;
+ DBusMessage *reply;
DBusError error;
AtkObject *obj;
return droute_invalid_arguments_error (message);
}
obj = atk_table_ref_at (table, row, column);
- return spi_object_return_reference (message, obj);
+ reply = spi_object_return_reference (message, obj);
+ g_object_unref (obj);
+
+ return reply;
}
static DBusMessage *
return reply;
}
+static const gchar *
+validate_unallocated_string (const gchar *str)
+{
+ if (!str)
+ return "";
+ if (!g_utf8_validate (str, -1, NULL))
+ {
+ g_warning ("atk-bridge: received bad UTF-8 string from a table function");
+ return "";
+ }
+ return str;
+}
+
static DBusMessage *
impl_GetRowDescription (DBusConnection * bus, DBusMessage * message,
void *user_data)
return droute_invalid_arguments_error (message);
}
description = atk_table_get_row_description (table, row);
- if (!description)
- description = "";
+ description = validate_unallocated_string (description);
reply = dbus_message_new_method_return (message);
if (reply)
{
return droute_invalid_arguments_error (message);
}
description = atk_table_get_column_description (table, column);
- if (!description)
- description = "";
+ description = validate_unallocated_string (description);
reply = dbus_message_new_method_return (message);
if (reply)
{
return droute_invalid_arguments_error (message);
}
obj = atk_table_get_column_header (table, column);
- obj = atk_table_get_column_header (table, column);
return spi_object_return_reference (message, obj);
}
{impl_get_NColumns, NULL, "NColumns"},
{impl_get_Caption, NULL, "Caption"},
{impl_get_Summary, NULL, "Summary"},
- {impl_get_NSelectedRows, NULL, "nSelectedRows"},
- {impl_get_NSelectedColumns, NULL, "nSelectedColumns"},
+ {impl_get_NSelectedRows, NULL, "NSelectedRows"},
+ {impl_get_NSelectedColumns, NULL, "NSelectedColumns"},
{NULL, NULL, NULL}
};
spi_initialize_table (DRoutePath * path)
{
droute_path_add_interface (path,
- SPI_DBUS_INTERFACE_TABLE, methods, properties);
+ ATSPI_DBUS_INTERFACE_TABLE, spi_org_a11y_atspi_Table, methods, properties);
};