Changes to introspection generation to remove DOCTYPE and XML
[platform/core/uifw/at-spi2-atk.git] / test / event-listener-test.c
index cbede93..1571d40 100644 (file)
@@ -21,6 +21,7 @@
  * Boston, MA 02111-1307, USA.
  */
 
+#include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
 #include "../cspi/spi-private.h" /* A hack for now */
 static void traverse_accessible_tree (Accessible *accessible);
 
 static void report_event  (const AccessibleEvent *event, void *user_data);
+static void report_caret_event  (const AccessibleEvent *event, void *user_data);
+static void report_bounds_event  (const AccessibleEvent *event, void *user_data);
 static void report_detail_event  (const AccessibleEvent *event, void *user_data);
 static void report_detail1_event  (const AccessibleEvent *event, void *user_data);
 static void report_text_event  (const AccessibleEvent *event, void *user_data);
 static void report_text_selection_event  (const AccessibleEvent *event, void *user_data);
-static void report_active_descendant_event  (const AccessibleEvent *event, void *user_data);
+static void report_active_descendant_changed_event  (const AccessibleEvent *event, void *user_data);
 static void report_children_changed_event (const AccessibleEvent *event, void *user_data);
 static void report_name_changed_event (const AccessibleEvent *event, void *user_data);
 static void report_description_changed_event (const AccessibleEvent *event, void *user_data);
@@ -48,11 +51,13 @@ static SPIBoolean report_mouse_event  (const AccessibleDeviceEvent *event, void
 
 static AccessibleEventListener *generic_listener;
 static AccessibleEventListener *specific_listener;
+static AccessibleEventListener *bounds_listener;
 static AccessibleEventListener *detail1_listener;
 static AccessibleEventListener *test_listener;
 static AccessibleEventListener *text_listener;
+static AccessibleEventListener *caret_listener;
 static AccessibleEventListener *text_selection_listener;
-static AccessibleEventListener *active_descendant_listener;
+static AccessibleEventListener *active_descendant_changed_listener;
 static AccessibleEventListener *children_changed_listener;
 static AccessibleEventListener *name_changed_listener;
 static AccessibleEventListener *description_changed_listener;
@@ -82,14 +87,7 @@ usage_and_exit( void )
 int
 main (int argc, char **argv)
 {
-  int i, j, c;
-  int n_desktops;
-  int n_apps;
-  char *s;
-  gdouble elapsed_time;
-  Accessible *desktop;
-  Accessible *application;
-  const char *modules;
+  int c;
 
   /* Parse Command-line */
   if ( argc > 1 ) {
@@ -116,12 +114,16 @@ main (int argc, char **argv)
          report_event, NULL); 
   specific_listener = SPI_createAccessibleEventListener (
          report_detail_event, NULL); 
+  bounds_listener = SPI_createAccessibleEventListener (
+         report_bounds_event, NULL);
   text_listener = SPI_createAccessibleEventListener (
          report_text_event, NULL);
+  caret_listener = SPI_createAccessibleEventListener (
+         report_caret_event, NULL);
   text_selection_listener = SPI_createAccessibleEventListener (
          report_text_selection_event, NULL);
-  active_descendant_listener = SPI_createAccessibleEventListener (
-         report_active_descendant_event, NULL);
+  active_descendant_changed_listener = SPI_createAccessibleEventListener (
+         report_active_descendant_changed_event, NULL);
   children_changed_listener = SPI_createAccessibleEventListener (
          report_children_changed_event, NULL);
   name_changed_listener = SPI_createAccessibleEventListener (
@@ -150,7 +152,7 @@ main (int argc, char **argv)
          report_detail1_event, NULL); 
 
   SPI_registerGlobalEventListener (generic_listener,
-                                  "focus:");
+                                   "focus:");
   if ( report_mouse_events ) {
       SPI_registerGlobalEventListener (specific_listener,
                                       "mouse:rel");
@@ -164,6 +166,7 @@ main (int argc, char **argv)
                                   NULL);
   SPI_registerGlobalEventListener (specific_listener,
                                   "keyboard:modifiers");
+
   SPI_registerGlobalEventListener (generic_listener,
                                   "object:property-change");
   SPI_registerGlobalEventListener (name_changed_listener,
@@ -178,16 +181,16 @@ main (int argc, char **argv)
     "object:state-changed:focused"); */
   SPI_registerGlobalEventListener (generic_listener,
                                   "object:selection-changed"); 
+
   SPI_registerGlobalEventListener (children_changed_listener,
                                   "object:children-changed"); 
-  SPI_registerGlobalEventListener (active_descendant_listener,
-                                  "object:active-descendant"); 
+  SPI_registerGlobalEventListener (active_descendant_changed_listener,
+                                  "object:active-descendant-changed"); 
   SPI_registerGlobalEventListener (generic_listener,
                                   "object:visible-data-changed"); 
   SPI_registerGlobalEventListener (text_selection_listener,
                                   "object:text-selection-changed"); 
-
-  SPI_registerGlobalEventListener (generic_listener,
+  SPI_registerGlobalEventListener (caret_listener,
                                   "object:text-caret-moved"); 
   SPI_registerGlobalEventListener (text_listener,
                                   "object:text-changed"); 
@@ -207,6 +210,10 @@ main (int argc, char **argv)
                                   "object:model-changed"); 
   SPI_registerGlobalEventListener (detail1_listener,
                                   "object:link-selected"); 
+#if 0
+  SPI_registerGlobalEventListener (bounds_listener,
+                                  "object:bounds-changed");
+#endif
   SPI_registerGlobalEventListener (window_listener,
                                   "window:minimize");
   SPI_registerGlobalEventListener (window_listener,
@@ -216,6 +223,8 @@ main (int argc, char **argv)
   SPI_registerGlobalEventListener (window_listener,
                                   "window:activate");
   SPI_registerGlobalEventListener (window_listener,
+                                  "window:create");
+  SPI_registerGlobalEventListener (window_listener,
                                   "window:deactivate");
   SPI_registerGlobalEventListener (window_listener,
                                   "window:close");
@@ -321,17 +330,75 @@ report_event (const AccessibleEvent *event, void *user_data)
   }
   ++count;
   if ((count % 100) == 0) {
-         g_print ("%d events received, %f events/sec\n",
+         g_print ("%ld events received, %f events/sec\n",
                   count,
                   count/g_timer_elapsed(timer, NULL));
   }
+
+  /* check for Table interface - if present, query selections */
+  if (Accessible_isTable (event->source)) 
+  {
+      gint n_selected_rows = 0;
+      gint n_selected_cols = 0;
+      long int *rows, *cols;
+      AccessibleTable *table = Accessible_getTable (event->source);
+
+      n_selected_rows = AccessibleTable_getSelectedRows (table, &rows);
+      n_selected_cols  = AccessibleTable_getSelectedColumns (table, &cols);
+
+      g_print ("TABLE interface: selectedRows=%d, selectedCols = %d\n",
+              n_selected_rows, n_selected_cols);
+  }
+}
+
+void
+report_caret_event (const AccessibleEvent *event, void *user_data)
+{
+  char *s = Accessible_getName (event->source);
+  long int start, end, offset, line_start_begin;
+  long int line_start_end, line_end_begin, line_end_end;
+
+  AccessibleText *text = Accessible_getText (event->source);
+  offset = event->detail1;
+  AccessibleText_getTextAtOffset (text, offset, 
+                                 SPI_TEXT_BOUNDARY_SENTENCE_START,
+                                 &start, &end);
+  fprintf (stderr, 
+          "caret event from %s %s: offset %ld, SENTENCE_START offsets start=%ld, end=%ld\n", 
+          event->type, s, offset, start, end);
+  AccessibleText_getTextAtOffset (text, offset, 
+                                 SPI_TEXT_BOUNDARY_SENTENCE_END,
+                                 &start, &end);
+  AccessibleText_getTextAtOffset (text, offset, 
+                                 SPI_TEXT_BOUNDARY_LINE_START,
+                                 &line_start_begin, &line_start_end);
+  AccessibleText_getTextAtOffset (text, offset, 
+                                 SPI_TEXT_BOUNDARY_LINE_END,
+                                 &line_end_begin, &line_end_end);
+  fprintf (stderr, 
+          "SENTENCE_END: %ld - %ld; LINE_START: %ld - %ld; LINE_END: %ld - %ld\n", 
+          start, end, line_start_begin, line_start_end,
+          line_end_begin, line_end_end);
+
+  AccessibleText_getTextAtOffset (text, offset, 
+                                 SPI_TEXT_BOUNDARY_WORD_START,
+                                 &line_start_begin, &line_start_end);
+  AccessibleText_getTextAtOffset (text, offset, 
+                                 SPI_TEXT_BOUNDARY_WORD_END,
+                                 &line_end_begin, &line_end_end);
+  fprintf (stderr, 
+          "WORD_START: %ld - %ld; WORD_END: %ld - %ld\n", 
+          line_start_begin, line_start_end,
+          line_end_begin, line_end_end);
+
+  if (s) SPI_freeString (s);
 }
 
 void
 report_detail_event (const AccessibleEvent *event, void *user_data)
 {
   char *s = Accessible_getName (event->source);
-  fprintf (stderr, "(detail) %s %s %d %d\n", event->type, s,
+  fprintf (stderr, "(detail) %s %s %ld %ld\n", event->type, s,
           event->detail1, event->detail2);
   if (s) SPI_freeString (s);
 }
@@ -340,28 +407,40 @@ void
 report_detail1_event (const AccessibleEvent *event, void *user_data)
 {
   char *s = Accessible_getName (event->source);
-  fprintf (stderr, "(detail) %s %s %d\n", event->type, s,
+  fprintf (stderr, "(detail) %s %s %ld\n", event->type, s,
           event->detail1);
   if (s) SPI_freeString (s);
 }
 
 void
+report_bounds_event (const AccessibleEvent *event, void *user_data)
+{
+  char *s = Accessible_getName (event->source);
+  SPIRect *bounds = AccessibleBoundsChangedEvent_getNewBounds (event);
+  if (!bounds) fprintf (stderr, "bounds-changed event with no bounds?\n");
+  fprintf (stderr, "(bounds-changed) %s %s %ld,%ld - %ld,%ld\n", event->type, s,
+          bounds->x, bounds->y, bounds->x + bounds->width, bounds->y + bounds->height);
+  SPI_freeRect (bounds);
+  if (s) SPI_freeString (s);
+}
+
+void
 report_text_event (const AccessibleEvent *event, void *user_data)
 {
   char *s = Accessible_getName (event->source);
-  fprintf (stderr, "(detail) %s %s %d %d\n", event->type, s,
+  fprintf (stderr, "(detail) %s %s %ld %ld\n", event->type, s,
           event->detail1, event->detail2);
   SPI_freeString (s);
   s = AccessibleTextChangedEvent_getChangeString (event);
   fprintf (stderr, "context string %s\n", (s) ? s : "<nil>");
-  SPI_freeString (s);
+  if (s) SPI_freeString (s);
 }
 
 void
 report_text_selection_event (const AccessibleEvent *event, void *user_data)
 {
   char *s = Accessible_getName (event->source);
-  fprintf (stderr, "(detail) %s %s %d %d\n", event->type, s,
+  fprintf (stderr, "(detail) %s %s %ld %ld\n", event->type, s,
           event->detail1, event->detail2);
   SPI_freeString (s);
   s = AccessibleTextSelectionChangedEvent_getSelectionString (event);
@@ -370,7 +449,7 @@ report_text_selection_event (const AccessibleEvent *event, void *user_data)
 }
 
 void
-report_active_descendant_event (const AccessibleEvent *event, void *user_data)
+report_active_descendant_changed_event (const AccessibleEvent *event, void *user_data)
 {
   char *s = Accessible_getName (event->source);
   char *s1;
@@ -378,7 +457,7 @@ report_active_descendant_event (const AccessibleEvent *event, void *user_data)
 
   ao = AccessibleActiveDescendantChangedEvent_getActiveDescendant (event);
   s1 = Accessible_getName (ao);
-  fprintf (stderr, "(detail) %s parent: %s child: %s %d %d\n", event->type, 
+  fprintf (stderr, "(detail) %s parent: %s child: %s %ld %ld\n", event->type, 
            s ? s : "<null>", s1 ? s1 : "<null>",
           event->detail1, event->detail2);
   SPI_freeString (s);
@@ -389,16 +468,24 @@ void
 report_children_changed_event (const AccessibleEvent *event, void *user_data)
 {
   char *s = Accessible_getName (event->source);
-  char *s1;
+  char *s1 = NULL, *s2, *s3 = NULL;
   Accessible *ao;
 
   ao = AccessibleChildChangedEvent_getChildAccessible (event);
-  s1 = Accessible_getName (ao);
-  fprintf (stderr, "(detail) %s parent: %s child: %s %d %d\n", event->type, 
-           s ? s : "<null>", s1 ? s1 : "<null>",
+  if (ao) s1 = Accessible_getName (ao);
+  s2 = Accessible_getRoleName (event->source);
+  if (ao) s3 = Accessible_getRoleName (ao);
+  fprintf (stderr, "(detail) %s parent: %s [%s] child: %s [%s] %ld %ld\n", 
+           event->type, 
+           s ? s : "<null>", 
+          s2,
+           s1 ? s1 : "<null>",
+          s3 ? s3 : "<null>",
           event->detail1, event->detail2);
   SPI_freeString (s);
   SPI_freeString (s1);
+  SPI_freeString (s2);
+  SPI_freeString (s3);
   Accessible_unref (ao);
 }
 
@@ -406,7 +493,7 @@ void
 report_name_changed_event (const AccessibleEvent *event, void *user_data)
 {
   char *s = Accessible_getName (event->source);
-  fprintf (stderr, "(detail) %s %s %d %d\n", event->type, s,
+  fprintf (stderr, "(detail) %s %s %ld %ld\n", event->type, s,
           event->detail1, event->detail2);
   SPI_freeString (s);
   s = AccessibleNameChangedEvent_getNameString (event);
@@ -418,7 +505,7 @@ void
 report_description_changed_event (const AccessibleEvent *event, void *user_data)
 {
   char *s = Accessible_getName (event->source);
-  fprintf (stderr, "(detail) %s %s %d %d\n", event->type, s,
+  fprintf (stderr, "(detail) %s %s %ld %ld\n", event->type, s,
           event->detail1, event->detail2);
   SPI_freeString (s);
   s = AccessibleDescriptionChangedEvent_getDescriptionString (event);
@@ -435,7 +522,7 @@ report_parent_changed_event (const AccessibleEvent *event, void *user_data)
 
   ao = AccessibleParentChangedEvent_getParentAccessible (event);
   s1 = Accessible_getName (ao);
-  fprintf (stderr, "(detail) %s parent: %s child: %s %d %d\n", event->type, 
+  fprintf (stderr, "(detail) %s parent: %s child: %s %ld %ld\n", event->type, 
            s ? s : "<null>", s1 ? s1 : "<null>",
           event->detail1, event->detail2);
   SPI_freeString (s);
@@ -447,7 +534,7 @@ void
 report_window_event (const AccessibleEvent *event, void *user_data)
 {
   char *s = Accessible_getName (event->source);
-  fprintf (stderr, "(detail) %s %s %d %d\n", event->type, s,
+  fprintf (stderr, "(detail) %s %s %ld %ld\n", event->type, s,
           event->detail1, event->detail2);
   SPI_freeString (s);
   s = AccessibleWindowEvent_getTitleString (event);
@@ -464,7 +551,7 @@ report_table_summary_event (const AccessibleEvent *event, void *user_data)
 
   ao = AccessibleTableSummaryChangedEvent_getSummaryAccessible (event);
   s1 = Accessible_getName (ao);
-  fprintf (stderr, "(detail) %s parent: %s child: %s %d %d\n", event->type, 
+  fprintf (stderr, "(detail) %s parent: %s child: %s %ld %ld\n", event->type, 
            s ? s : "<null>", s1 ? s1 : "<null>",
           event->detail1, event->detail2);
   SPI_freeString (s);
@@ -481,7 +568,7 @@ report_table_header_event (const AccessibleEvent *event, void *user_data)
 
   ao = AccessibleTableHeaderChangedEvent_getHeaderAccessible (event);
   s1 = Accessible_getName (ao);
-  fprintf (stderr, "(detail) %s parent: %s child: %s %d %d\n", event->type, 
+  fprintf (stderr, "(detail) %s parent: %s child: %s %ld %ld\n", event->type, 
            s ? s : "<null>", s1 ? s1 : "<null>",
           event->detail1, event->detail2);
   SPI_freeString (s);
@@ -493,7 +580,7 @@ void
 report_table_caption_event (const AccessibleEvent *event, void *user_data)
 {
   char *s = Accessible_getName (event->source);
-  fprintf (stderr, "(detail) %s %s %d %d\n", event->type, s,
+  fprintf (stderr, "(detail) %s %s %ld %ld\n", event->type, s,
           event->detail1, event->detail2);
   SPI_freeString (s);
   s = AccessibleTableCaptionChangedEvent_getCaptionString (event);
@@ -505,7 +592,7 @@ void
 report_table_row_description_event (const AccessibleEvent *event, void *user_data)
 {
   char *s = Accessible_getName (event->source);
-  fprintf (stderr, "(detail) %s %s %d %d\n", event->type, s,
+  fprintf (stderr, "(detail) %s %s %ld %ld\n", event->type, s,
           event->detail1, event->detail2);
   SPI_freeString (s);
   s = AccessibleTableRowDescriptionChangedEvent_getDescriptionString (event);
@@ -517,7 +604,7 @@ void
 report_table_column_description_event (const AccessibleEvent *event, void *user_data)
 {
   char *s = Accessible_getName (event->source);
-  fprintf (stderr, "(detail) %s %s %d %d\n", event->type, s,
+  fprintf (stderr, "(detail) %s %s %ld %ld\n", event->type, s,
           event->detail1, event->detail2);
   SPI_freeString (s);
   s = AccessibleTableColumnDescriptionChangedEvent_getDescriptionString (event);
@@ -543,14 +630,14 @@ timing_test_event (const AccessibleEvent *event, void *user_data)
        if (count == 0) g_timer_start (timer);
        ++count;
        if ((count % 500) == 0) {
-               g_print ("%d events received, %f events/sec\n",
+               g_print ("%ld events received, %f events/sec\n",
                         count,
                         count/g_timer_elapsed(timer, NULL));
        }
 }
 
 void
-test_exit ()
+test_exit (void)
 {
   SPI_deregisterGlobalEventListenerAll (generic_listener);
   AccessibleEventListener_unref (generic_listener);