Collection: Fix an infinite loop when encountering a NULL parent
[platform/core/uifw/at-spi2-atk.git] / atk-adaptor / adaptors / document-adaptor.c
index de83a0d..020512b 100644 (file)
 
 #include <atk/atk.h>
 #include <droute/droute.h>
+#include "bridge.h"
 
-#include "common/spi-dbus.h"
+#include "spi-dbus.h"
+#include "object.h"
+#include "introspection.h"
 
-#include "accessible-marshaller.h"
+static dbus_bool_t
+impl_get_CurrentPageNumber (DBusMessageIter * iter, void *user_data)
+{
+  AtkDocument *document = (AtkDocument *) user_data;
+  g_return_val_if_fail (ATK_IS_DOCUMENT (user_data), FALSE);
+  return droute_return_v_int32 (iter, atk_document_get_current_page_number (document));
+}
+
+static dbus_bool_t
+impl_get_PageCount (DBusMessageIter * iter, void *user_data)
+{
+  AtkDocument *document = (AtkDocument *) user_data;
+  g_return_val_if_fail (ATK_IS_DOCUMENT (user_data), FALSE);
+  return droute_return_v_int32 (iter, atk_document_get_page_count (document));
+}
 
 static DBusMessage *
 impl_GetLocale (DBusConnection * bus, DBusMessage * message, void *user_data)
@@ -55,16 +72,14 @@ impl_GetAttributeValue (DBusConnection * bus, DBusMessage * message,
                         void *user_data)
 {
   AtkDocument *document = (AtkDocument *) user_data;
-  DBusError error;
   gchar *attributename;
   const gchar *atr;
   DBusMessage *reply;
 
   g_return_val_if_fail (ATK_IS_DOCUMENT (user_data),
                         droute_not_yet_handled_error (message));
-  dbus_error_init (&error);
   if (!dbus_message_get_args
-      (message, &error, DBUS_TYPE_STRING, &attributename, DBUS_TYPE_INVALID))
+      (message, NULL, DBUS_TYPE_STRING, &attributename, DBUS_TYPE_INVALID))
     {
       return droute_invalid_arguments_error (message);
     }
@@ -98,7 +113,7 @@ impl_GetAttributes (DBusConnection * bus, DBusMessage * message,
   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)
@@ -113,9 +128,15 @@ static DRouteMethod methods[] = {
   {NULL, NULL}
 };
 
+static DRouteProperty properties[] = {
+  {impl_get_CurrentPageNumber, NULL, "CurrentPageNumber"},
+  {impl_get_PageCount, NULL, "PageCount"},
+  {NULL, NULL, NULL}
+};
+
 void
 spi_initialize_document (DRoutePath * path)
 {
   droute_path_add_interface (path,
-                             SPI_DBUS_INTERFACE_DOCUMENT, methods, NULL);
+                             ATSPI_DBUS_INTERFACE_DOCUMENT, spi_org_a11y_atspi_Document, methods, properties);
 };