#include "common/spi-dbus.h"
#include "object.h"
+#include "introspection.h"
static dbus_bool_t
impl_get_CharacterCount (DBusMessageIter * iter, void *user_data)
return droute_return_v_int32 (iter, atk_text_get_caret_offset (text));
}
+static gchar *
+validate_allocated_string (gchar *str)
+{
+ if (!str)
+ return g_strdup ("");
+ if (!g_utf8_validate (str, -1, NULL))
+ {
+ g_warning ("atk-bridge: received bad UTF-8 string from a get_text function");
+ g_free (str);
+ return g_strdup ("");
+ }
+ return str;
+}
+
static DBusMessage *
impl_GetText (DBusConnection * bus, DBusMessage * message, void *user_data)
{
return droute_invalid_arguments_error (message);
}
txt = atk_text_get_text (text, startOffset, endOffset);
- if (!txt)
- txt = g_strdup ("");
+ txt = validate_allocated_string (txt);
reply = dbus_message_new_method_return (message);
if (reply)
{
&intstart_offset, &intend_offset);
startOffset = intstart_offset;
endOffset = intend_offset;
- if (!txt)
- txt = g_strdup ("");
+ txt = validate_allocated_string (txt);
reply = dbus_message_new_method_return (message);
if (reply)
{
&intstart_offset, &intend_offset);
startOffset = intstart_offset;
endOffset = intend_offset;
- if (!txt)
- txt = g_strdup ("");
+ txt = validate_allocated_string (txt);
reply = dbus_message_new_method_return (message);
if (reply)
{
&intstart_offset, &intend_offset);
startOffset = intstart_offset;
endOffset = intend_offset;
- if (!txt)
- txt = g_strdup ("");
+ txt = validate_allocated_string (txt);
reply = dbus_message_new_method_return (message);
if (reply)
{
if (reply)
{
dbus_message_iter_init_append (reply, &iter);
- spi_atk_append_attribute_set (&iter, set);
+ spi_object_append_attribute_set (&iter, set);
dbus_message_append_args (reply, DBUS_TYPE_INT32, &startOffset,
DBUS_TYPE_INT32, &endOffset,
DBUS_TYPE_INVALID);
if (reply)
{
dbus_message_iter_init_append (reply, &iter);
- spi_atk_append_attribute_set (&iter, set);
+ spi_object_append_attribute_set (&iter, set);
}
atk_attribute_set_free (set);
return reply;
if (reply)
{
dbus_message_iter_init_append (reply, &iter);
- spi_atk_append_attribute_set (&iter, attributes);
+ spi_object_append_attribute_set (&iter, attributes);
}
if (attributes)
spi_initialize_text (DRoutePath * path)
{
droute_path_add_interface (path,
- SPI_DBUS_INTERFACE_TEXT, methods, properties);
+ SPI_DBUS_INTERFACE_TEXT, spi_org_a11y_atspi_Text, methods, properties);
};