static void global_listener_cb (const AccessibleEvent *event, void *user_data) { TestWindow *win = user_data; Accessible *desktop; AccessibleApplication *application; g_assert (win->magic == WINDOW_MAGIC); g_assert (!strcmp (event->type, "focus:")); fprintf (stderr, "Fielded focus event ...\n"); if (!do_poke) { desktop = SPI_getDesktop (0); application = Accessible_getChildAtIndex (desktop, 0); g_assert (application != NULL); Accessible_unref (desktop); test_application (application); AccessibleApplication_unref (application); print_tree = FALSE; validate_accessible (event->source, TRUE, TRUE); fprintf (stderr, "quitting mainloop.\n"); gtk_main_quit (); } print_tree = TRUE; validate_accessible (event->source, TRUE, TRUE); }
static void test_desktop (void) { Accessible *desktop; Accessible *application; Accessible **list; fprintf (stderr, "Testing desktop...\n"); g_assert (SPI_getDesktop (-1) == NULL); desktop = SPI_getDesktop (0); g_assert (desktop != NULL); g_assert ((SPI_getDesktopList (&list)) > 0); g_assert (list[0] == desktop); SPI_freeDesktopList (list); validate_accessible (desktop, FALSE, FALSE); application = Accessible_getChildAtIndex (desktop, 0); g_assert (application != NULL); AccessibleApplication_unref (application); Accessible_unref (desktop); }
static void test_application (Accessible *application) { char *str; fprintf (stderr, "Testing application ...\n"); g_assert (Accessible_isApplication (application)); g_assert (Accessible_getApplication (application) == application); AccessibleApplication_unref (application); str = AccessibleApplication_getToolkitName (application); g_assert (str != NULL); g_assert (!strcmp (str, "GAIL")); SPI_freeString (str); str = AccessibleApplication_getLocale (application, LC_MESSAGES); g_assert (!strcmp (str, setlocale (LC_MESSAGES, NULL))); SPI_freeString (str); str = AccessibleApplication_getVersion (application); g_assert (str != NULL); SPI_freeString (str); AccessibleApplication_getID (application); }
int windows_process_id ( SQByteArray * _pointer ) { Accessible * accessibleObject = windows_to_accessible(_pointer); AccessibleApplication * application = Accessible_getHostApplication(accessibleObject); long ret = AccessibleApplication_getID ( application ); AccessibleApplication_unref ( application ); return ret; }
static void validate_accessible (Accessible *accessible, gboolean has_parent, gboolean recurse_down) { Accessible *tmp; char *name, *descr; AccessibleRole role; AccessibleRelation **relations; char *role_name; GString *item_str = g_string_new (""); int i; name = Accessible_getName (accessible); g_assert (name != NULL); descr = Accessible_getDescription (accessible); g_assert (descr != NULL); role = Accessible_getRole (accessible); g_assert (role != SPI_ROLE_INVALID); role_name = Accessible_getRoleName (accessible); g_assert (role_name != NULL); relations = Accessible_getRelationSet (accessible); g_assert (relations != NULL); for (i = 0; relations [i]; i++) { AccessibleRelationType type; int targets; fprintf (stderr, "relation %d\n", i); type = AccessibleRelation_getRelationType (relations [i]); g_assert (type != SPI_RELATION_NULL); targets = AccessibleRelation_getNTargets (relations [i]); g_assert (targets != -1); AccessibleRelation_unref (relations [i]); relations [i] = NULL; } free (relations); if (print_tree) { int i; for (i = 0; i < print_tree_depth; i++) fputc (' ', stderr); fputs ("|-> [ ", stderr); } if (Accessible_isAction (accessible)) { tmp = Accessible_getAction (accessible); g_assert (tmp != NULL); if (print_tree) fprintf (stderr, "At"); else test_action (tmp); AccessibleAction_unref (tmp); } if (Accessible_isApplication (accessible)) { tmp = Accessible_getApplication (accessible); if (print_tree) fprintf (stderr, "Ap"); else test_application (tmp); AccessibleApplication_unref (tmp); } if (Accessible_isComponent (accessible)) { tmp = Accessible_getComponent (accessible); g_assert (tmp != NULL); if (print_tree) fprintf (stderr, "Co"); else test_component (tmp); AccessibleComponent_unref (tmp); } if (Accessible_isEditableText (accessible)) { tmp = Accessible_getEditableText (accessible); g_assert (tmp != NULL); if (print_tree) fprintf (stderr, "Et"); else test_editable_text (tmp); AccessibleEditableText_unref (tmp); } if (Accessible_isHypertext (accessible)) { tmp = Accessible_getHypertext (accessible); g_assert (tmp != NULL); if (print_tree) fprintf (stderr, "Ht"); AccessibleHypertext_unref (tmp); } if (Accessible_isImage (accessible)) { tmp = Accessible_getImage (accessible); g_assert (tmp != NULL); if (print_tree) { char *desc; fprintf (stderr, "Im"); desc = AccessibleImage_getImageDescription (tmp); g_string_append_printf ( item_str, " image descr: '%s'", desc); SPI_freeString (desc); } else test_image (tmp); AccessibleImage_unref (tmp); } if (Accessible_isSelection (accessible)) { tmp = Accessible_getSelection (accessible); g_assert (tmp != NULL); if (print_tree) fprintf (stderr, "Se"); AccessibleSelection_unref (tmp); } if (Accessible_isTable (accessible)) { tmp = Accessible_getTable (accessible); g_assert (tmp != NULL); if (print_tree) fprintf (stderr, "Ta"); else test_table (tmp); AccessibleTable_unref (tmp); } if (Accessible_isText (accessible)) { tmp = Accessible_getText (accessible); g_assert (tmp != NULL); if (print_tree) fprintf (stderr, "Te"); else { if (strcmp (name, TEST_STRING_A_OBJECT) == 0) test_text (tmp); } AccessibleText_unref (tmp); } if (Accessible_isValue (accessible)) { tmp = Accessible_getValue (accessible); g_assert (tmp != NULL); if (print_tree) fprintf (stderr, "Va"); else test_value (tmp); AccessibleValue_unref (tmp); } if (print_tree) fprintf (stderr, " ] '%s' (%s) - %s: %s\n", name, descr, role_name, item_str->str); SPI_freeString (name); SPI_freeString (descr); SPI_freeString (role_name); g_string_free (item_str, TRUE); validate_tree (accessible, has_parent, recurse_down); }