static DBusMessage * impl_Embedded (DBusConnection *bus, DBusMessage *message, void *user_data) { AtkObject *object = (AtkObject *) user_data; char *path; gchar *id; if (!dbus_message_get_args (message, NULL, DBUS_TYPE_STRING, &path, DBUS_TYPE_INVALID)) { return droute_invalid_arguments_error (message); } id = g_strconcat (dbus_message_get_sender (message), ":", path, NULL); g_object_set_data_full (G_OBJECT (object), "dbus-plug-parent", id, (GDestroyNotify)g_free); if (ATK_IS_COMPONENT (object)) { AtkComponent *component = ATK_COMPONENT (object); AtkComponentIface *iface = ATK_COMPONENT_GET_IFACE (component); iface->get_extents = atspi_plug_component_get_extents; iface->get_size = atspi_plug_component_get_size; iface->get_position = atspi_plug_component_get_position; } /* Retrieve some info about the children, if they exist, when embedding the plug to ensure the a11y subtree is generated. https://bugzilla.gnome.org/show_bug.cgi?id=663876 */ atk_object_get_n_accessible_children (object); return dbus_message_new_method_return (message); }
static AtkObject* _find_object (AtkObject *obj, AtkRole role) { /* * Find the first object which is a descendant of the specified object * which matches the specified role. * * This function returns a reference to the AtkObject which should be * removed when finished with the object. */ gint i; gint n_children; AtkObject *child; n_children = atk_object_get_n_accessible_children (obj); for (i = 0; i < n_children; i++) { AtkObject* found_obj; child = atk_object_ref_accessible_child (obj, i); if (atk_object_get_role (child) == role) { return child; } found_obj = _find_object (child, role); g_object_unref (child); if (found_obj) { return found_obj; } } return NULL; }
int AccessibilityUIElement::childrenCount() { if (!ATK_IS_OBJECT(m_element.get())) return 0; return atk_object_get_n_accessible_children(ATK_OBJECT(m_element.get())); }
static void _test_selection (AtkObject *obj) { gint count; gint n_children; AtkObject *list; count = atk_selection_get_selection_count (ATK_SELECTION (obj)); g_return_if_fail (count == 0); list = atk_object_ref_accessible_child (obj, 0); n_children = atk_object_get_n_accessible_children (list); g_object_unref (G_OBJECT (list)); atk_selection_add_selection (ATK_SELECTION (obj), n_children - 1); count = atk_selection_get_selection_count (ATK_SELECTION (obj)); g_return_if_fail (count == 1); g_return_if_fail (atk_selection_is_child_selected (ATK_SELECTION (obj), n_children - 1)); atk_selection_add_selection (ATK_SELECTION (obj), 0); count = atk_selection_get_selection_count (ATK_SELECTION (obj)); g_return_if_fail (count == 1); g_return_if_fail (atk_selection_is_child_selected (ATK_SELECTION (obj), 0)); atk_selection_clear_selection (ATK_SELECTION (obj)); count = atk_selection_get_selection_count (ATK_SELECTION (obj)); g_return_if_fail (count == 0); }
void _do_test(AtkObject *obj) { const char *type_name = g_type_name(G_TYPE_FROM_INSTANCE(obj)); g_assert(ATK_IS_OBJECT(obj)); g_assert_cmpstr(type_name, ==, "EailFlipselector"); g_assert(atk_object_get_n_accessible_children(obj) == ITEMS_COUNT); /* * AtkSelection tests */ g_assert(ATK_IS_SELECTION(obj)); /* atk_selection_add_selection test */ g_assert(atk_selection_add_selection(ATK_SELECTION(obj), ITEM_SEL_EINA)); g_assert(atk_selection_is_child_selected(ATK_SELECTION(obj), ITEM_SEL_EINA)); /* atk_selection_clear_selection test */ g_assert(atk_selection_clear_selection(ATK_SELECTION(obj)) == FALSE); /* eail_flipselector_ref_selection test */ g_assert(atk_selection_is_child_selected(ATK_SELECTION(obj), ITEM_SEL_EINA)); /* atk_selection_get_selection_count test */ g_assert(atk_selection_get_selection_count(ATK_SELECTION(obj)) == MAX_SELECTIONS); /* atk_selection_is_child_selected test */ g_assert(atk_selection_is_child_selected(ATK_SELECTION(obj), ITEM_SEL_EINA)); /* atk_selection_remove_selection test */ g_assert(atk_selection_remove_selection(ATK_SELECTION(obj), ITEM_SEL_EINA)); g_assert(atk_selection_is_child_selected(ATK_SELECTION(obj), ITEM_SEL_ELM)); /* atk_selection_select_all_selection test */ g_assert(atk_selection_select_all_selection(ATK_SELECTION(obj)) == FALSE); /* * AtkAction tests */ g_assert(ATK_IS_ACTION(obj)); /* atk_action_get_n_actions test */ g_assert(atk_action_get_n_actions(ATK_ACTION(obj)) == ACTIONS_COUNT); /* test existing actions */ g_assert(atk_selection_add_selection(ATK_SELECTION(obj), ITEM_SEL_EINA)); eailu_test_action_activate(ATK_ACTION(obj), "next"); g_assert(atk_selection_is_child_selected(ATK_SELECTION(obj), ITEM_SEL_EDJE)); eailu_test_action_activate(ATK_ACTION(obj), "prev"); g_assert(atk_selection_is_child_selected(ATK_SELECTION(obj), ITEM_SEL_EINA)); /* test for non-existing action */ g_assert((eailu_get_action_number(ATK_ACTION(obj), "typo")) == -1); /* test set/get action description */ eailu_test_action_description_all(ATK_ACTION(obj)); }
static void _do_test(AtkObject *obj) { const char *type_name = g_type_name(G_TYPE_FROM_INSTANCE(obj)); const char *type_name_child; AtkObject *xobj; _printf("type_name: %s\n", type_name); g_assert_cmpstr(type_name, ==, "EailBubble"); // test children g_assert(2 == atk_object_get_n_accessible_children(obj)); for (int count = 0; 2 > count; count++) { xobj = atk_object_ref_accessible_child(obj, count); g_assert(xobj); type_name_child = g_type_name(G_TYPE_FROM_INSTANCE(xobj)); _printf(" child num: %d, type_name: %s\n", count, type_name_child); g_assert(!strcmp(type_name_child, "EailIcon") || !strcmp(type_name_child, "EailLabel")); } // test AtkAction g_assert(ACTIONS_NUMBER == atk_action_get_n_actions(ATK_ACTION(obj))); eailu_test_action_activate(ATK_ACTION(obj), "click"); g_assert(-1 == (eailu_get_action_number(ATK_ACTION(obj), "typo"))); eailu_test_action_description_all(ATK_ACTION(obj)); /* bubble object does not support focus */ eailu_test_atk_focus(obj, FALSE); }
static void _test_layout_object(AtkObject *object) { int child_count; eail_test_code_called++; child_count = atk_object_get_n_accessible_children(object); if (eail_test_code_called == 1) g_assert(2 == child_count); else g_assert(3 == child_count); for(int i =0; i < child_count; i++) { AtkObject *child = atk_object_ref_accessible_child(object, i); gboolean success = FALSE; if (eail_test_code_called == 1) success = eailu_is_object_with_role(child, ATK_ROLE_ICON); else success = eailu_is_object_with_role(child, ATK_ROLE_PUSH_BUTTON); g_object_unref(child); g_assert(success); } g_assert(eailu_is_object_with_role(object, ATK_ROLE_FILLER)); }
static G_CONST_RETURN gchar* jaw_object_get_name (AtkObject *atk_obj) { JawObject *jaw_obj = JAW_OBJECT(atk_obj); jobject ac = jaw_obj->acc_context; JNIEnv *jniEnv = jaw_util_get_jni_env(); if (atk_object_get_role(atk_obj) == ATK_ROLE_COMBO_BOX && atk_object_get_n_accessible_children(atk_obj) == 1) { AtkSelection *selection = ATK_SELECTION(atk_obj); if (selection != NULL) { AtkObject *child = atk_selection_ref_selection(selection, 0); if (child != NULL) { return atk_object_get_name(child); } } } jclass classAccessibleContext = (*jniEnv)->FindClass( jniEnv, "javax/accessibility/AccessibleContext" ); jmethodID jmid = (*jniEnv)->GetMethodID( jniEnv, classAccessibleContext, "getAccessibleName", "()Ljava/lang/String;" ); jstring jstr = (*jniEnv)->CallObjectMethod( jniEnv, ac, jmid ); if (atk_obj->name != NULL) { (*jniEnv)->ReleaseStringUTFChars(jniEnv, jaw_obj->jstrName, atk_obj->name); (*jniEnv)->DeleteGlobalRef(jniEnv, jaw_obj->jstrName); } if (jstr != NULL) { jaw_obj->jstrName = (*jniEnv)->NewGlobalRef(jniEnv, jstr); atk_obj->name = (gchar*)(*jniEnv)->GetStringUTFChars(jniEnv, jaw_obj->jstrName, NULL); } return atk_obj->name; }
static DBusMessage * impl_GetChildren (DBusConnection * bus, DBusMessage * message, void *user_data) { AtkObject *object = (AtkObject *) user_data; gint i; gint count; DBusMessage *reply; DBusMessageIter iter, iter_array; g_return_val_if_fail (ATK_IS_OBJECT (user_data), droute_not_yet_handled_error (message)); count = atk_object_get_n_accessible_children (object); reply = dbus_message_new_method_return (message); if (!reply) goto oom; dbus_message_iter_init_append (reply, &iter); if (!dbus_message_iter_open_container (&iter, DBUS_TYPE_ARRAY, "(so)", &iter_array)) goto oom; for (i = 0; i < count; i++) { AtkObject *child = atk_object_ref_accessible_child (object, i); spi_object_append_reference (&iter_array, child); if (child) g_object_unref (child); } if (!dbus_message_iter_close_container (&iter, &iter_array)) goto oom; return reply; oom: // TODO: handle out-of-memory return reply; }
static void _do_test(AtkObject *obj) { const char *type_name = g_type_name(G_TYPE_FROM_INSTANCE(obj)); const char *name = atk_object_get_name(ATK_OBJECT(obj)); const char *type_name_child; AtkStateSet *state_set; AtkObject *xobj; _printf("type_name: %s\n", type_name ? type_name : "NULL"); g_assert(name); _printf("name: %s\n", name); g_assert_cmpstr(type_name, ==, "EailCheck"); g_assert(ATK_IS_OBJECT(obj)); g_assert(ATK_IS_ACTION(obj)); g_assert(ATK_IS_TEXT(obj)); state_set = atk_object_ref_state_set(obj); if (!strcmp(name, CHECK_TEXT1)) { _printf("check test: %s\n", CHECK_TEXT1); g_assert(atk_state_set_contains_state(state_set, ATK_STATE_CHECKED)); // test children g_assert(0 == atk_object_get_n_accessible_children(obj)); } else if (!strcmp(name, CHECK_TEXT2)) { _printf("check test: %s\n", CHECK_TEXT2); g_assert(!atk_state_set_contains_state(state_set, ATK_STATE_CHECKED)); // test children g_assert(1 == atk_object_get_n_accessible_children(obj)); xobj = atk_object_ref_accessible_child(obj, 0); g_assert(NULL != xobj); type_name_child = g_type_name(G_TYPE_FROM_INSTANCE(xobj)); _printf("type_name_child: %s\n", type_name_child); g_assert_cmpstr(type_name_child, ==, "EailIcon"); }
static void _do_test(AtkObject *obj) { AtkObject *child; const char *type_name = g_type_name(G_TYPE_FROM_INSTANCE(obj)); int i; g_assert_cmpstr(type_name, ==, "EailPrefs"); g_assert(atk_object_get_n_accessible_children(obj) == CHILDREN_COUNT); for (i = 0; i < atk_object_get_n_accessible_children(obj); ++i) { child = atk_object_ref_accessible_child(obj, i); g_assert(child); g_object_unref(child); } }
static void _check_children (AtkObject *obj) { gint n_children, i, j; AtkObject *child; AtkObject *grand_child; n_children = atk_object_get_n_accessible_children (obj); if (n_children > 1) { g_print ("*** Unexpected number of children for combo box: %d\n", n_children); return; } if (n_children == 2) { child = atk_object_ref_accessible_child (obj, 1); g_return_if_fail (atk_object_get_role (child) == ATK_ROLE_TEXT); j = atk_object_get_index_in_parent (child); if (j != 1) g_print ("*** inconsistency between parent and children %d %d ***\n", 1, j); g_object_unref (G_OBJECT (child)); } child = atk_object_ref_accessible_child (obj, 0); g_return_if_fail (atk_object_get_role (child) == ATK_ROLE_LIST); j = atk_object_get_index_in_parent (child); if (j != 0) g_print ("*** inconsistency between parent and children %d %d ***\n", 0, j); n_children = atk_object_get_n_accessible_children (child); for (i = 0; i < n_children; i++) { G_CONST_RETURN gchar *name; grand_child = atk_object_ref_accessible_child (child, i); name = atk_object_get_name (grand_child); g_print ("Index: %d Name: %s\n", i, name ? name : "<NULL>"); g_object_unref (G_OBJECT (grand_child)); } g_object_unref (G_OBJECT (child)); }
/* * CORBA Accessibility::Accessible::get_childCount method implementation */ static CORBA_long impl_accessibility_accessible_get_child_count (PortableServer_Servant servant, CORBA_Environment *ev) { AtkObject *object = get_atkobject_from_servant (servant); g_return_val_if_fail (object != NULL, 0); return atk_object_get_n_accessible_children (object); }
static gint gtk_widget_accessible_get_index_in_parent (AtkObject *accessible) { GtkWidget *widget; GtkWidget *parent_widget; gint index; GList *children; widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (accessible)); if (widget == NULL) return -1; if (accessible->accessible_parent) { AtkObject *parent; parent = accessible->accessible_parent; if (GTK_IS_NOTEBOOK_PAGE_ACCESSIBLE (parent)) return 0; else { gint n_children, i; gboolean found = FALSE; n_children = atk_object_get_n_accessible_children (parent); for (i = 0; i < n_children; i++) { AtkObject *child; child = atk_object_ref_accessible_child (parent, i); if (child == accessible) found = TRUE; g_object_unref (child); if (found) return i; } } } if (!GTK_IS_WIDGET (widget)) return -1; parent_widget = gtk_widget_get_parent (widget); if (!GTK_IS_CONTAINER (parent_widget)) return -1; children = gtk_container_get_children (GTK_CONTAINER (parent_widget)); index = g_list_index (children, widget); g_list_free (children); return index; }
static dbus_bool_t impl_get_ChildCount (DBusMessageIter * iter, void *user_data) { AtkObject *object = (AtkObject *) user_data; int childCount; g_return_val_if_fail (ATK_IS_OBJECT (user_data), FALSE); childCount = (ATK_IS_SOCKET (object) && atk_socket_is_occupied (ATK_SOCKET (object))) ? 1 : atk_object_get_n_accessible_children (object); return droute_return_v_int32 (iter, childCount); }
static void _traverse_children (AtkObject *obj) { gint n_children, i; n_children = atk_object_get_n_accessible_children (obj); for (i = 0; i < n_children; i++) { AtkObject *child; child = atk_object_ref_accessible_child (obj, i); _print_image_info(child); _traverse_children (child); g_object_unref (G_OBJECT (child)); } }
static G_CONST_RETURN gchar* jaw_toplevel_get_name (AtkObject *obj) { gint i; for(i = 0; i < atk_object_get_n_accessible_children(obj); i++) { AtkObject* child = atk_object_ref_accessible_child(obj, i); const gchar* name = atk_object_get_name(child); if (name && strlen(name) > 0) { g_object_unref(G_OBJECT(child)); return name; } g_object_unref(G_OBJECT(child)); } return "Java Application"; }
static void _do_test(AtkObject *aobj) { int child_amount = 0; g_assert(ATK_IS_OBJECT(aobj)); g_assert(atk_object_get_role(aobj) == ATK_ROLE_LIST); child_amount = atk_object_get_n_accessible_children(aobj); g_assert(N_ITEMS == child_amount); eailu_test_atk_focus(aobj, TRUE); eailu_test_code_called = 1; }
static gint goo_canvas_item_accessible_get_index_in_parent (AtkObject *accessible) { GooCanvasItem *item, *parent; GooCanvas *canvas; GObject *object; g_return_val_if_fail (GOO_IS_CANVAS_ITEM_ACCESSIBLE (accessible), -1); if (accessible->accessible_parent) { gint n_children, i; gboolean found = FALSE; n_children = atk_object_get_n_accessible_children (accessible->accessible_parent); for (i = 0; i < n_children; i++) { AtkObject *child; child = atk_object_ref_accessible_child (accessible->accessible_parent, i); if (child == accessible) found = TRUE; g_object_unref (child); if (found) return i; } return -1; } object = atk_gobject_accessible_get_object (ATK_GOBJECT_ACCESSIBLE (accessible)); if (object == NULL) return -1; item = GOO_CANVAS_ITEM (object); parent = goo_canvas_item_get_parent (item); if (parent) return goo_canvas_item_find_child (parent, item); canvas = goo_canvas_item_get_canvas (item); if (canvas) return 0; return -1; }
static void _test_index_object(AtkObject *obj) { int n_children = 0, i = 0; printf("Testing index instance\n"); eailu_test_atk_focus(obj, FALSE); n_children = atk_object_get_n_accessible_children(obj); /* there should be 13 index entries */ g_assert(13 == n_children); for (i = 0; i < n_children; ++i) { _test_index_child_for_object(obj, i); } printf("DONE. All index test passed successfully \n"); }
static void _do_test(AtkObject *obj) { int child_count = 0; g_assert(ATK_IS_OBJECT(obj)); atk_object_set_description(obj, "test"); g_assert_cmpstr(atk_object_get_description(obj), ==, "test"); g_object_ref(obj); child_count = atk_object_get_n_accessible_children(obj); g_assert(child_count == 0); g_assert(atk_object_get_role(obj) == ATK_ROLE_PAGE_TAB_LIST); g_object_unref(obj); eailu_test_code_called = 1; }
static gboolean my_atk_selection_clear_selection (AtkSelection *selection) { MyAtkSelection *self = MY_ATK_SELECTION(selection); if (!self) return FALSE; AtkObject *child = NULL; AtkStateSet *states = NULL; int i; int childs = atk_object_get_n_accessible_children (ATK_OBJECT (selection)); for (i=0; i<childs; i++) { child = atk_object_ref_accessible_child (ATK_OBJECT (selection), i); states = atk_object_ref_state_set (child); atk_state_set_remove_state (states, ATK_STATE_SELECTED); } return TRUE; }
/** * @brief Initializer for AtkObjectClass * * @param obj an AtkObject to be initialized * @param data additional initialization data (Evas_Object*) */ static void eail_app_initialize(AtkObject *obj, gpointer data) { int argc; char **argv; EailApp *eail_app = NULL; ATK_OBJECT_CLASS(eail_app_parent_class)->initialize(obj, data); ecore_app_args_get(&argc, &argv); obj->name = argv ? g_strdup((gchar *)ecore_file_file_get(argv[0])) : NULL; obj->role = ATK_ROLE_APPLICATION; obj->accessible_parent = NULL; /* storing last numbers of children to be for checking if children-changed * signal has to be propagated */ eail_app = EAIL_APP(obj); eail_app->child_count_last = atk_object_get_n_accessible_children(obj); }
static void _do_test(AtkObject *obj) { int child_count = 0; atk_object_set_description(obj, "test"); g_assert_cmpstr(atk_object_get_description(obj), ==, "test"); atk_object_set_name(obj, "test name"); g_assert_cmpstr(atk_object_get_name(obj), ==, "test name"); child_count = atk_object_get_n_accessible_children(obj); g_assert(child_count == 0); eailu_test_atk_focus(obj, TRUE); _printf("DONE. All WEB tests passed successfully \n"); eailu_test_code_called = 1; }
static void _test_gengrid_object(AtkObject *obj) { int child_count = atk_object_get_n_accessible_children(obj); int rows, cols, row_at_index, column_at_index, index_at; gboolean success; AtkTable *table; AtkObject *table_child; for (int i = 0; i < child_count; i++) { AtkObject *child = atk_object_ref_accessible_child(obj, i); _print_object_info(child); g_object_unref(child); } g_assert(ATK_IS_TABLE(obj)); table = ATK_TABLE(obj); rows = atk_table_get_n_rows(table); g_assert(rows == 3); cols = atk_table_get_n_columns(table); g_assert(cols == 3); row_at_index = atk_table_get_row_at_index(table, 4); g_assert(row_at_index == 1); column_at_index = atk_table_get_column_at_index(table, 2); g_assert(column_at_index == 0); index_at = atk_table_get_index_at(table, 2, 2); g_assert(index_at == 8); table_child = atk_table_ref_at(table, 1, 1); g_assert(ATK_IS_OBJECT(table_child)); _print_object_info(table_child); success = atk_table_add_column_selection(table, 1); g_assert(success); success = atk_table_is_column_selected(table, 1); g_assert(success); success = atk_table_remove_column_selection(table, 1); g_assert(success); success = atk_table_add_row_selection(table, 1); g_assert(success); success = atk_table_is_row_selected(table, 1); g_assert(success); success = atk_table_remove_row_selection(table, 0); g_assert(success); }
static gint my_atk_selection_get_selection_count (AtkSelection *selection) { MyAtkSelection *self = MY_ATK_SELECTION(selection); if (!self) return FALSE; AtkObject *child = NULL; AtkStateSet *states = NULL; int i, ret=0; int childs = atk_object_get_n_accessible_children (ATK_OBJECT (selection)); for (i=0; i<childs; i++) { child = atk_object_ref_accessible_child (ATK_OBJECT (selection), i); states = atk_object_ref_state_set (child); if (atk_state_set_contains_state (states, ATK_STATE_SELECTED)) ret++; } return ret; }
static void menu_item_selection (GtkItem *item, gboolean selected) { AtkObject *obj, *parent; gint i; obj = gtk_widget_get_accessible (GTK_WIDGET (item)); atk_object_notify_state_change (obj, ATK_STATE_SELECTED, selected); for (i = 0; i < atk_object_get_n_accessible_children (obj); i++) { AtkObject *child; child = atk_object_ref_accessible_child (obj, i); atk_object_notify_state_change (child, ATK_STATE_SHOWING, selected); g_object_unref (child); } parent = atk_object_get_parent (obj); g_signal_emit_by_name (parent, "selection_changed"); }
static gint _close_combo_list (gpointer data) { AtkObject *obj = ATK_OBJECT (data); gint count; gint n_children; AtkObject *list; count = atk_selection_get_selection_count (ATK_SELECTION (obj)); g_return_val_if_fail (count == 0, FALSE); list = atk_object_ref_accessible_child (obj, 0); n_children = atk_object_get_n_accessible_children (list); g_object_unref (G_OBJECT (list)); atk_selection_add_selection (ATK_SELECTION (obj), n_children - 1); atk_action_do_action (ATK_ACTION (obj), 0); return FALSE; }
static AtkObject* my_atk_selection_ref_selection (AtkSelection *selection, gint no) { MyAtkSelection *self = MY_ATK_SELECTION(selection); if (!self) return FALSE; AtkObject *child = NULL; AtkStateSet *states = NULL; GArray *array = g_array_new (FALSE, FALSE, sizeof (AtkObject *)); int i; int childs = atk_object_get_n_accessible_children (ATK_OBJECT (selection)); for (i=0; i<childs; i++) { child = atk_object_ref_accessible_child (ATK_OBJECT (selection), i); states = atk_object_ref_state_set (child); if (atk_state_set_contains_state (states, ATK_STATE_SELECTED)) g_array_append_val (array, child); } return g_array_index (array, AtkObject *, no); }
static gint gail_window_get_index_in_parent (AtkObject *accessible) { GtkWidget* widget = GTK_ACCESSIBLE (accessible)->widget; AtkObject* atk_obj = atk_get_root (); gint index = -1; if (widget == NULL) /* * State is defunct */ return -1; gail_return_val_if_fail (GTK_IS_WIDGET (widget), -1); index = ATK_OBJECT_CLASS (gail_window_parent_class)->get_index_in_parent (accessible); if (index != -1) return index; if (GTK_IS_WINDOW (widget)) { GtkWindow *window = GTK_WINDOW (widget); if (GAIL_IS_TOPLEVEL (atk_obj)) { GailToplevel* toplevel = GAIL_TOPLEVEL (atk_obj); index = g_list_index (toplevel->window_list, window); } else { int i, sibling_count = atk_object_get_n_accessible_children (atk_obj); for (i = 0; i < sibling_count && index == -1; ++i) { AtkObject *child = atk_object_ref_accessible_child (atk_obj, i); if (accessible == child) index = i; g_object_unref (G_OBJECT (child)); } } } return index; }