forked from enlightenment/efl
atspi: add accessible default relations and attributes
Summary: Tests added for accessibile interface Differential Revision: https://phab.enlightenment.org/D900
This commit is contained in:
parent
044b99a2f1
commit
39eb7acec6
|
@ -16,8 +16,21 @@ extern Eina_List *_elm_win_list;
|
||||||
static Eo *_atspi_root;
|
static Eo *_atspi_root;
|
||||||
static int _init;
|
static int _init;
|
||||||
|
|
||||||
|
typedef struct _Elm_Atspi_App_Object_Data Elm_Atspi_App_Object_Data;
|
||||||
|
|
||||||
|
struct _Elm_Atspi_App_Object_Data
|
||||||
|
{
|
||||||
|
const char *descr;
|
||||||
|
};
|
||||||
|
|
||||||
|
EOLIAN static void
|
||||||
|
_elm_atspi_app_object_eo_base_destructor(Eo *obj EINA_UNUSED, Elm_Atspi_App_Object_Data *_pd)
|
||||||
|
{
|
||||||
|
if (_pd->descr) eina_stringshare_del(_pd->descr);
|
||||||
|
}
|
||||||
|
|
||||||
EOLIAN static Eina_List*
|
EOLIAN static Eina_List*
|
||||||
_elm_atspi_app_object_elm_interface_atspi_accessible_children_get(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED)
|
_elm_atspi_app_object_elm_interface_atspi_accessible_children_get(Eo *obj EINA_UNUSED, Elm_Atspi_App_Object_Data *_pd EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Eina_List *l, *accs = NULL;
|
Eina_List *l, *accs = NULL;
|
||||||
Evas_Object *win;
|
Evas_Object *win;
|
||||||
|
@ -33,19 +46,25 @@ _elm_atspi_app_object_elm_interface_atspi_accessible_children_get(Eo *obj EINA_U
|
||||||
}
|
}
|
||||||
|
|
||||||
EOLIAN static const char*
|
EOLIAN static const char*
|
||||||
_elm_atspi_app_object_elm_interface_atspi_accessible_name_get(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED)
|
_elm_atspi_app_object_elm_interface_atspi_accessible_name_get(Eo *obj EINA_UNUSED, Elm_Atspi_App_Object_Data *_pd EINA_UNUSED)
|
||||||
{
|
{
|
||||||
return elm_app_name_get();
|
return elm_app_name_get();
|
||||||
}
|
}
|
||||||
|
|
||||||
EOLIAN static const char*
|
EOLIAN static const char*
|
||||||
_elm_atspi_app_object_elm_interface_atspi_accessible_description_get(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED)
|
_elm_atspi_app_object_elm_interface_atspi_accessible_description_get(Eo *obj EINA_UNUSED, Elm_Atspi_App_Object_Data *_pd)
|
||||||
{
|
{
|
||||||
return NULL;
|
return _pd->descr;
|
||||||
|
}
|
||||||
|
|
||||||
|
EOLIAN static void
|
||||||
|
_elm_atspi_app_object_elm_interface_atspi_accessible_description_set(Eo *obj EINA_UNUSED, Elm_Atspi_App_Object_Data *_pd EINA_UNUSED, const char *descr)
|
||||||
|
{
|
||||||
|
eina_stringshare_replace(&_pd->descr, descr);
|
||||||
}
|
}
|
||||||
|
|
||||||
EOLIAN static Elm_Atspi_Role
|
EOLIAN static Elm_Atspi_Role
|
||||||
_elm_atspi_app_object_elm_interface_atspi_accessible_role_get(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED)
|
_elm_atspi_app_object_elm_interface_atspi_accessible_role_get(Eo *obj EINA_UNUSED, Elm_Atspi_App_Object_Data *_pd EINA_UNUSED)
|
||||||
{
|
{
|
||||||
return ELM_ATSPI_ROLE_APPLICATION;
|
return ELM_ATSPI_ROLE_APPLICATION;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
class Elm_Atspi_App_Object (Eo_Base, Elm_Interface_Atspi_Accessible)
|
class Elm_Atspi_App_Object (Eo_Base, Elm_Interface_Atspi_Accessible)
|
||||||
{
|
{
|
||||||
data: null;
|
data: Elm_Atspi_App_Object_Data;
|
||||||
implements {
|
implements {
|
||||||
|
Eo_Base::destructor;
|
||||||
Elm_Interface_Atspi_Accessible::name::get;
|
Elm_Interface_Atspi_Accessible::name::get;
|
||||||
Elm_Interface_Atspi_Accessible::description::get;
|
Elm_Interface_Atspi_Accessible::description::get;
|
||||||
|
Elm_Interface_Atspi_Accessible::description::set;
|
||||||
Elm_Interface_Atspi_Accessible::role::get;
|
Elm_Interface_Atspi_Accessible::role::get;
|
||||||
Elm_Interface_Atspi_Accessible::children::get;
|
Elm_Interface_Atspi_Accessible::children::get;
|
||||||
}
|
}
|
||||||
|
|
|
@ -435,6 +435,33 @@ _accessible_get_application(const Eldbus_Service_Interface *iface EINA_UNUSED, c
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Eldbus_Message *
|
||||||
|
_accessible_attributes_get(const Eldbus_Service_Interface *iface, const Eldbus_Message *msg)
|
||||||
|
{
|
||||||
|
Eina_List *attrs, *l;
|
||||||
|
Elm_Atspi_Attribute *attr;
|
||||||
|
Eldbus_Message_Iter *iter, *iter_array;
|
||||||
|
|
||||||
|
Eldbus_Message *ret = eldbus_message_method_return_new(msg);
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(ret, NULL);
|
||||||
|
|
||||||
|
const char *obj_path = eldbus_service_object_path_get(iface);
|
||||||
|
Eo *obj = _access_object_from_path(obj_path);
|
||||||
|
|
||||||
|
eo_do(obj, attrs = elm_interface_atspi_accessible_attributes_get());
|
||||||
|
|
||||||
|
iter = eldbus_message_iter_get(ret);
|
||||||
|
iter_array = eldbus_message_iter_container_new(iter, 'a', "ss");
|
||||||
|
|
||||||
|
EINA_LIST_FOREACH(attrs, l, attr)
|
||||||
|
eldbus_message_iter_arguments_get(iter_array, "ss", attr->key, attr->value);
|
||||||
|
|
||||||
|
eldbus_message_iter_container_close(iter, iter_array);
|
||||||
|
elm_atspi_attributes_list_free(attrs);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
static uint64_t
|
static uint64_t
|
||||||
_elm_atspi_state_set_to_atspi_state_set(Elm_Atspi_State_Set states)
|
_elm_atspi_state_set_to_atspi_state_set(Elm_Atspi_State_Set states)
|
||||||
{
|
{
|
||||||
|
@ -552,7 +579,7 @@ static const Eldbus_Method accessible_methods[] = {
|
||||||
{ "GetLocalizedRoleName", NULL, ELDBUS_ARGS({"s", "LocalizedName"}), _accessible_get_localized_role_name, 0},
|
{ "GetLocalizedRoleName", NULL, ELDBUS_ARGS({"s", "LocalizedName"}), _accessible_get_localized_role_name, 0},
|
||||||
{ "GetState", NULL, ELDBUS_ARGS({"au", NULL}), _accessible_get_state, 0},
|
{ "GetState", NULL, ELDBUS_ARGS({"au", NULL}), _accessible_get_state, 0},
|
||||||
{ "GetApplication", NULL, ELDBUS_ARGS({"(so)", NULL}), _accessible_get_application, 0},
|
{ "GetApplication", NULL, ELDBUS_ARGS({"(so)", NULL}), _accessible_get_application, 0},
|
||||||
//{ "GetAttributes", NULL, ELDBUS_ARGS({"a{ss}", NULL}), NULL, 0},
|
{ "GetAttributes", NULL, ELDBUS_ARGS({"a{ss}", NULL}), _accessible_attributes_get, 0},
|
||||||
{ NULL, NULL, NULL, NULL, 0 }
|
{ NULL, NULL, NULL, NULL, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -166,11 +166,12 @@ _elm_interface_atspi_accessible_parent_set(Eo *obj, void *priv EINA_UNUSED, Eo *
|
||||||
eo_class_name_get(eo_class_get(obj)));
|
eo_class_name_get(eo_class_get(obj)));
|
||||||
}
|
}
|
||||||
|
|
||||||
EOLIAN void
|
EOLIAN Eina_List*
|
||||||
_elm_interface_atspi_accessible_attributes_get(Eo *obj EINA_UNUSED, void *pd EINA_UNUSED)
|
_elm_interface_atspi_accessible_attributes_get(Eo *obj EINA_UNUSED, void *pd EINA_UNUSED)
|
||||||
{
|
{
|
||||||
WRN("The %s object does not implement the \"accessible_attributes_set\" function.",
|
WRN("The %s object does not implement the \"accessible_attributes_set\" function.",
|
||||||
eo_class_name_get(eo_class_get(obj)));
|
eo_class_name_get(eo_class_get(obj)));
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
EOLIAN static Elm_Atspi_Role
|
EOLIAN static Elm_Atspi_Role
|
||||||
|
@ -264,4 +265,22 @@ _elm_interface_atspi_accessible_state_set_get(Eo *obj EINA_UNUSED, void *pd EINA
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EOLIAN Eina_List*
|
||||||
|
_elm_interface_atspi_accessible_relation_set_get(Eo *obj EINA_UNUSED, void *pd EINA_UNUSED)
|
||||||
|
{
|
||||||
|
WRN("The %s object does not implement the \"accessible_relation_set\" function.",
|
||||||
|
eo_class_name_get(eo_class_get(obj)));
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void elm_atspi_attributes_list_free(Eina_List *list)
|
||||||
|
{
|
||||||
|
Elm_Atspi_Attribute *attr;
|
||||||
|
EINA_LIST_FREE(list, attr)
|
||||||
|
{
|
||||||
|
eina_stringshare_del(attr->key);
|
||||||
|
eina_stringshare_del(attr->value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#include "elm_interface_atspi_accessible.eo.c"
|
#include "elm_interface_atspi_accessible.eo.c"
|
||||||
|
|
|
@ -24,7 +24,11 @@ mixin Elm_Interface_Atspi_Accessible ()
|
||||||
}
|
}
|
||||||
protected relation_set {
|
protected relation_set {
|
||||||
get {
|
get {
|
||||||
/*@ Gets an string describing ATSPI widget role name. */
|
/*@ Gets an string describing ATSPI widget role name. Lists and
|
||||||
|
* elements Should be free by a user. */
|
||||||
|
}
|
||||||
|
values {
|
||||||
|
Eina_List *relations;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
protected role {
|
protected role {
|
||||||
|
@ -56,8 +60,11 @@ mixin Elm_Interface_Atspi_Accessible ()
|
||||||
}
|
}
|
||||||
protected attributes {
|
protected attributes {
|
||||||
get {
|
get {
|
||||||
/*@ Gets human-readable string indentifying widget accessibility
|
/*@ Gets key-value pairs indentifying widget extra
|
||||||
* role. */
|
* attributes. Must be free by a user. */
|
||||||
|
}
|
||||||
|
values {
|
||||||
|
Eina_List *attributes;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
protected index_in_parent {
|
protected index_in_parent {
|
||||||
|
@ -99,9 +106,6 @@ mixin Elm_Interface_Atspi_Accessible ()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
implements {
|
|
||||||
virtual::relation_set::get;
|
|
||||||
}
|
|
||||||
events {
|
events {
|
||||||
property,changed (const char *);
|
property,changed (const char *);
|
||||||
children,changed (Elm_Atspi_Event_Children_Changed_Data);
|
children,changed (Elm_Atspi_Event_Children_Changed_Data);
|
||||||
|
|
|
@ -186,6 +186,31 @@ enum _Elm_Atspi_State_Type
|
||||||
ELM_ATSPI_STATE_LAST_DEFINED,
|
ELM_ATSPI_STATE_LAST_DEFINED,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
typedef enum _Elm_Atspi_Relation_Type Elm_Atspi_Relation_Type;
|
||||||
|
|
||||||
|
enum _Elm_Atspi_Relation_Type {
|
||||||
|
ELM_ATSPI_RELATION_NULL,
|
||||||
|
ELM_ATSPI_RELATION_LABEL_FOR,
|
||||||
|
ELM_ATSPI_RELATION_LABELLED_BY,
|
||||||
|
ELM_ATSPI_RELATION_CONTROLLER_FOR,
|
||||||
|
ELM_ATSPI_RELATION_CONTROLLED_BY,
|
||||||
|
ELM_ATSPI_RELATION_MEMBER_OF,
|
||||||
|
ELM_ATSPI_RELATION_TOOLTIP_FOR,
|
||||||
|
ELM_ATSPI_RELATION_NODE_CHILD_OF,
|
||||||
|
ELM_ATSPI_RELATION_NODE_PARENT_OF,
|
||||||
|
ELM_ATSPI_RELATION_EXTENDED,
|
||||||
|
ELM_ATSPI_RELATION_FLOWS_TO,
|
||||||
|
ELM_ATSPI_RELATION_FLOWS_FROM,
|
||||||
|
ELM_ATSPI_RELATION_SUBWINDOW_OF,
|
||||||
|
ELM_ATSPI_RELATION_EMBEDS,
|
||||||
|
ELM_ATSPI_RELATION_EMBEDDED_BY,
|
||||||
|
ELM_ATSPI_RELATION_POPUP_FOR,
|
||||||
|
ELM_ATSPI_RELATION_PARENT_WINDOW_OF,
|
||||||
|
ELM_ATSPI_RELATION_DESCRIPTION_FOR,
|
||||||
|
ELM_ATSPI_RELATION_DESCRIBED_BY,
|
||||||
|
ELM_ATSPI_RELATION_LAST_DEFINED,
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
typedef struct _Elm_Atspi_Event_State_Changed_Data Elm_Atspi_Event_State_Changed_Data;
|
typedef struct _Elm_Atspi_Event_State_Changed_Data Elm_Atspi_Event_State_Changed_Data;
|
||||||
|
|
||||||
|
@ -203,6 +228,27 @@ struct _Elm_Atspi_Event_Children_Changed_Data
|
||||||
Eo *child;
|
Eo *child;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
typedef struct _Elm_Atspi_Attribute Elm_Atspi_Attribute;
|
||||||
|
|
||||||
|
struct _Elm_Atspi_Attribute
|
||||||
|
{
|
||||||
|
const char *key;
|
||||||
|
const char *value;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct _Elm_Atspi_Relation Elm_Atspi_Relation;
|
||||||
|
|
||||||
|
struct _Elm_Atspi_Relation
|
||||||
|
{
|
||||||
|
Elm_Atspi_Relation_Type type;
|
||||||
|
const Eo *obj;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free Elm_Atspi_Attributes_List
|
||||||
|
*/
|
||||||
|
void elm_atspi_attributes_list_free(Eina_List *list);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Emits ATSPI 'StateChanged' dbus signal.
|
* Emits ATSPI 'StateChanged' dbus signal.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -34,11 +34,11 @@ _elm_interface_atspi_component_position_set(Eo *obj EINA_UNUSED, void *_pd EINA_
|
||||||
EOLIAN static Eina_Bool
|
EOLIAN static Eina_Bool
|
||||||
_elm_interface_atspi_component_size_set(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, int w, int h)
|
_elm_interface_atspi_component_size_set(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, int w, int h)
|
||||||
{
|
{
|
||||||
Eina_Bool ret = EINA_FALSE;
|
Eina_Bool ret;
|
||||||
int c_x = 0, c_y = 0;
|
int c_x = 0, c_y = 0;
|
||||||
|
|
||||||
eo_do(obj, elm_interface_atspi_component_extents_get(EINA_FALSE, &c_x, &c_y, NULL, NULL));
|
eo_do(obj, elm_interface_atspi_component_extents_get(EINA_FALSE, &c_x, &c_y, NULL, NULL));
|
||||||
eo_do(obj, elm_interface_atspi_component_extents_set(EINA_FALSE, c_x, c_y, w, h));
|
eo_do(obj, ret = elm_interface_atspi_component_extents_set(EINA_FALSE, c_x, c_y, w, h));
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -155,4 +155,54 @@ _elm_interface_atspi_widget_elm_interface_atspi_accessible_state_set_get(Eo *obj
|
||||||
return states;
|
return states;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EOLIAN static Eina_List*
|
||||||
|
_elm_interface_atspi_widget_elm_interface_atspi_accessible_attributes_get(Eo *obj, Elm_Interface_Atspi_Widget_Data *pd EINA_UNUSED)
|
||||||
|
{
|
||||||
|
Eina_List *ret = NULL;
|
||||||
|
Elm_Atspi_Attribute *attr = calloc(1, sizeof(Elm_Atspi_Attribute));
|
||||||
|
if (!attr) return NULL;
|
||||||
|
|
||||||
|
attr->key = eina_stringshare_add("type");
|
||||||
|
attr->value = eina_stringshare_add(evas_object_type_get(obj));
|
||||||
|
|
||||||
|
ret = eina_list_append(ret, attr);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static Elm_Atspi_Relation*
|
||||||
|
_relation_new(Elm_Atspi_Relation_Type type, Eo *obj)
|
||||||
|
{
|
||||||
|
Elm_Atspi_Relation *rel = calloc(1, sizeof(Elm_Atspi_Relation));
|
||||||
|
if (!rel) return NULL;
|
||||||
|
|
||||||
|
rel->type = type;
|
||||||
|
rel->obj = obj;
|
||||||
|
|
||||||
|
return rel;
|
||||||
|
}
|
||||||
|
|
||||||
|
EOLIAN static Eina_List*
|
||||||
|
_elm_interface_atspi_widget_elm_interface_atspi_accessible_relation_set_get(Eo *obj, Elm_Interface_Atspi_Widget_Data *pd EINA_UNUSED)
|
||||||
|
{
|
||||||
|
Eina_List *list = NULL;
|
||||||
|
Elm_Atspi_Relation *rel;
|
||||||
|
Evas_Object *rel_obj;
|
||||||
|
|
||||||
|
rel_obj = elm_object_focus_next_object_get(obj, ELM_FOCUS_NEXT);
|
||||||
|
if (eo_isa(rel_obj, ELM_INTERFACE_ATSPI_ACCESSIBLE_CLASS))
|
||||||
|
{
|
||||||
|
rel = _relation_new(ELM_ATSPI_RELATION_FLOWS_TO, rel_obj);
|
||||||
|
list = eina_list_append(list, rel);
|
||||||
|
}
|
||||||
|
|
||||||
|
rel_obj = elm_object_focus_next_object_get(obj, ELM_FOCUS_PREVIOUS);
|
||||||
|
if (eo_isa(rel_obj, ELM_INTERFACE_ATSPI_ACCESSIBLE_CLASS))
|
||||||
|
{
|
||||||
|
rel = _relation_new(ELM_ATSPI_RELATION_FLOWS_FROM, rel_obj);
|
||||||
|
list = eina_list_append(list, rel);
|
||||||
|
}
|
||||||
|
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
#include "elm_interface_atspi_widget.eo.c"
|
#include "elm_interface_atspi_widget.eo.c"
|
||||||
|
|
|
@ -12,6 +12,8 @@ mixin Elm_Interface_Atspi_Widget (Elm_Interface_Atspi_Accessible, Elm_Interface_
|
||||||
Elm_Interface_Atspi_Accessible::role::set;
|
Elm_Interface_Atspi_Accessible::role::set;
|
||||||
Elm_Interface_Atspi_Accessible::state_set::get;
|
Elm_Interface_Atspi_Accessible::state_set::get;
|
||||||
Elm_Interface_Atspi_Accessible::children::get;
|
Elm_Interface_Atspi_Accessible::children::get;
|
||||||
|
Elm_Interface_Atspi_Accessible::attributes::get;
|
||||||
|
Elm_Interface_Atspi_Accessible::relation_set::get;
|
||||||
Elm_Interface_Atspi_Component::focus_grab;
|
Elm_Interface_Atspi_Component::focus_grab;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@ TESTS = elm_suite
|
||||||
check_PROGRAMS = elm_suite
|
check_PROGRAMS = elm_suite
|
||||||
elm_suite_SOURCES = \
|
elm_suite_SOURCES = \
|
||||||
elm_suite.c \
|
elm_suite.c \
|
||||||
|
elm_test_atspi.c \
|
||||||
elm_test_check.c \
|
elm_test_check.c \
|
||||||
elm_test_colorselector.c \
|
elm_test_colorselector.c \
|
||||||
elm_test_entry.c \
|
elm_test_entry.c \
|
||||||
|
|
|
@ -18,6 +18,7 @@ static const Elementary_Test_Case etc[] = {
|
||||||
{ "elm_check", elm_test_check },
|
{ "elm_check", elm_test_check },
|
||||||
{ "elm_colorselector", elm_test_colorselector },
|
{ "elm_colorselector", elm_test_colorselector },
|
||||||
{ "elm_entry", elm_test_entry},
|
{ "elm_entry", elm_test_entry},
|
||||||
|
{ "elm_atspi", elm_test_atspi},
|
||||||
{ NULL, NULL }
|
{ NULL, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -7,5 +7,6 @@ void elm_test_init(TCase *tc);
|
||||||
void elm_test_check(TCase *tc);
|
void elm_test_check(TCase *tc);
|
||||||
void elm_test_colorselector(TCase *tc);
|
void elm_test_colorselector(TCase *tc);
|
||||||
void elm_test_entry(TCase *tc);
|
void elm_test_entry(TCase *tc);
|
||||||
|
void elm_test_atspi(TCase *tc);
|
||||||
|
|
||||||
#endif /* _ELM_SUITE_H */
|
#endif /* _ELM_SUITE_H */
|
||||||
|
|
|
@ -0,0 +1,419 @@
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
# include "elementary_config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define ELM_INTERNAL_API_ARGESFSDFEFC
|
||||||
|
|
||||||
|
#include <Elementary.h>
|
||||||
|
#include "elm_priv.h"
|
||||||
|
#include "elm_suite.h"
|
||||||
|
|
||||||
|
#define ELM_INTERFACE_ATSPI_ACCESSIBLE_PROTECTED
|
||||||
|
#include "elm_interface_atspi_accessible.h"
|
||||||
|
#include "elm_interface_atspi_accessible.eo.h"
|
||||||
|
|
||||||
|
#define ELM_INTERFACE_ATSPI_COMPONENT_PROTECTED
|
||||||
|
#include "elm_interface_atspi_component.eo.h"
|
||||||
|
|
||||||
|
static Evas_Object *g_win, *g_btn, *g_bg;
|
||||||
|
|
||||||
|
Eo* generate_app(void)
|
||||||
|
{
|
||||||
|
g_win = elm_win_add(NULL, "Title", ELM_WIN_BASIC);
|
||||||
|
evas_object_geometry_set(g_win, 100, 100, 100, 100);
|
||||||
|
|
||||||
|
g_bg = elm_bg_add(g_win);
|
||||||
|
|
||||||
|
g_btn = elm_button_add(g_win);
|
||||||
|
|
||||||
|
evas_object_show(g_btn);
|
||||||
|
evas_object_show(g_bg);
|
||||||
|
evas_object_show(g_win);
|
||||||
|
|
||||||
|
Eo *obj = NULL;
|
||||||
|
|
||||||
|
_elm_atspi_init();
|
||||||
|
|
||||||
|
obj = _elm_atspi_root_get();
|
||||||
|
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
START_TEST (elm_atspi_root_get)
|
||||||
|
{
|
||||||
|
elm_init(0, NULL);
|
||||||
|
|
||||||
|
Eo* obj = generate_app();
|
||||||
|
|
||||||
|
ck_assert(obj != NULL);
|
||||||
|
|
||||||
|
elm_shutdown();
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
|
START_TEST (elm_atspi_name_get)
|
||||||
|
{
|
||||||
|
elm_init(0, NULL);
|
||||||
|
|
||||||
|
Eo* obj = generate_app();
|
||||||
|
|
||||||
|
const char *ret = NULL;
|
||||||
|
|
||||||
|
elm_app_name_set("Test name");
|
||||||
|
|
||||||
|
eo_do(obj, ret = elm_interface_atspi_accessible_name_get());
|
||||||
|
|
||||||
|
ck_assert_str_eq(ret, "Test name");
|
||||||
|
|
||||||
|
elm_shutdown();
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
|
START_TEST (elm_atspi_role_get)
|
||||||
|
{
|
||||||
|
elm_init(0, NULL);
|
||||||
|
|
||||||
|
Eo *obj = generate_app();
|
||||||
|
|
||||||
|
Elm_Atspi_Role role;
|
||||||
|
|
||||||
|
eo_do(obj, role = elm_interface_atspi_accessible_role_get());
|
||||||
|
|
||||||
|
ck_assert(role == ELM_ATSPI_ROLE_APPLICATION);
|
||||||
|
|
||||||
|
elm_shutdown();
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
|
|
||||||
|
START_TEST (elm_atspi_role_name_get)
|
||||||
|
{
|
||||||
|
elm_init(0, NULL);
|
||||||
|
|
||||||
|
Eo *obj = generate_app();
|
||||||
|
|
||||||
|
const char *ret = NULL;
|
||||||
|
|
||||||
|
eo_do(obj, ret = elm_interface_atspi_accessible_role_name_get());
|
||||||
|
|
||||||
|
ck_assert(ret != NULL);
|
||||||
|
|
||||||
|
elm_shutdown();
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
|
START_TEST (elm_atspi_localized_role_name_get)
|
||||||
|
{
|
||||||
|
elm_init(0, NULL);
|
||||||
|
|
||||||
|
Eo *obj = generate_app();
|
||||||
|
|
||||||
|
const char *ret = NULL;
|
||||||
|
|
||||||
|
eo_do(obj, ret = elm_interface_atspi_accessible_localized_role_name_get());
|
||||||
|
|
||||||
|
ck_assert(ret != NULL);
|
||||||
|
|
||||||
|
elm_shutdown();
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
|
START_TEST (elm_atspi_description_set)
|
||||||
|
{
|
||||||
|
elm_init(0, NULL);
|
||||||
|
|
||||||
|
Eo *obj = generate_app();
|
||||||
|
|
||||||
|
const char *ret = NULL;
|
||||||
|
|
||||||
|
const char *desc = "Test description";
|
||||||
|
|
||||||
|
eo_do(obj, ret = elm_interface_atspi_accessible_description_get());
|
||||||
|
|
||||||
|
ck_assert(ret == NULL);
|
||||||
|
|
||||||
|
eo_do(obj, elm_interface_atspi_accessible_description_set(desc));
|
||||||
|
|
||||||
|
eo_do(obj, ret = elm_interface_atspi_accessible_description_get());
|
||||||
|
|
||||||
|
ck_assert(ret != NULL);
|
||||||
|
ck_assert_str_eq(ret, "Test description");
|
||||||
|
|
||||||
|
elm_shutdown();
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
|
START_TEST (elm_atspi_children_and_parent)
|
||||||
|
{
|
||||||
|
elm_init(0, NULL);
|
||||||
|
|
||||||
|
Eo *root = generate_app();
|
||||||
|
|
||||||
|
Eina_List *child_list = NULL;
|
||||||
|
|
||||||
|
eo_do(root, child_list = elm_interface_atspi_accessible_children_get());
|
||||||
|
|
||||||
|
//eo_do(eina_list_nth(child_list, 0), bg_child_list = elm_interface_atspi_accessible_children_get());
|
||||||
|
|
||||||
|
ck_assert(eina_list_count(child_list) == 1);
|
||||||
|
|
||||||
|
Eo *win = NULL;
|
||||||
|
|
||||||
|
win = eina_list_nth(child_list, 0);
|
||||||
|
|
||||||
|
ck_assert(win != NULL);
|
||||||
|
ck_assert(win == g_win);
|
||||||
|
|
||||||
|
Eo *win_parent = NULL;
|
||||||
|
|
||||||
|
eo_do(win, win_parent = elm_interface_atspi_accessible_parent_get());
|
||||||
|
|
||||||
|
ck_assert(root == win_parent);
|
||||||
|
|
||||||
|
elm_shutdown();
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
|
START_TEST (elm_atspi_component_position)
|
||||||
|
{
|
||||||
|
Eina_List *child_list = NULL;
|
||||||
|
elm_init(0, NULL);
|
||||||
|
|
||||||
|
Eo *root = generate_app();
|
||||||
|
|
||||||
|
Eo *win = NULL;
|
||||||
|
|
||||||
|
eo_do(root, child_list = elm_interface_atspi_accessible_children_get());
|
||||||
|
|
||||||
|
win = eina_list_nth(child_list, 0);
|
||||||
|
|
||||||
|
Eina_Bool ret = EINA_FALSE;
|
||||||
|
|
||||||
|
eo_do(win, ret = elm_interface_atspi_component_position_set(EINA_TRUE, 100, 100));
|
||||||
|
|
||||||
|
ck_assert(ret == EINA_TRUE);
|
||||||
|
|
||||||
|
int x, y;
|
||||||
|
|
||||||
|
eo_do(win, elm_interface_atspi_component_position_get(EINA_TRUE, &x, &y));
|
||||||
|
|
||||||
|
ck_assert((x == 100) && (y == 100));
|
||||||
|
|
||||||
|
elm_shutdown();
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
|
START_TEST (elm_atspi_component_size)
|
||||||
|
{
|
||||||
|
Eina_List *child_list = NULL;
|
||||||
|
elm_init(0, NULL);
|
||||||
|
|
||||||
|
Eo *root = generate_app();
|
||||||
|
|
||||||
|
Eo *win = NULL;
|
||||||
|
|
||||||
|
eo_do(root, child_list = elm_interface_atspi_accessible_children_get());
|
||||||
|
|
||||||
|
win = eina_list_nth(child_list, 0);
|
||||||
|
|
||||||
|
Eina_Bool ret = EINA_FALSE;
|
||||||
|
|
||||||
|
eo_do(win, ret = elm_interface_atspi_component_size_set(100, 100));
|
||||||
|
|
||||||
|
ck_assert(ret == EINA_TRUE);
|
||||||
|
|
||||||
|
int w, h;
|
||||||
|
|
||||||
|
eo_do(win, elm_interface_atspi_component_size_get(&w, &h));
|
||||||
|
|
||||||
|
ck_assert((w == 100) && (h == 100));
|
||||||
|
|
||||||
|
elm_shutdown();
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
|
START_TEST (elm_atspi_component_focus)
|
||||||
|
{
|
||||||
|
Eina_List *child_list = NULL;
|
||||||
|
elm_init(0, NULL);
|
||||||
|
|
||||||
|
Eo *root = generate_app();
|
||||||
|
|
||||||
|
Eo *win = NULL;
|
||||||
|
|
||||||
|
eo_do(root, child_list = elm_interface_atspi_accessible_children_get());
|
||||||
|
|
||||||
|
win = eina_list_nth(child_list, 0);
|
||||||
|
|
||||||
|
Eina_Bool ret = EINA_FALSE;
|
||||||
|
|
||||||
|
eo_do(win, ret = elm_interface_atspi_component_focus_grab());
|
||||||
|
|
||||||
|
ck_assert(ret == EINA_TRUE);
|
||||||
|
|
||||||
|
elm_shutdown();
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
|
START_TEST (elm_test_atspi_object_children_get)
|
||||||
|
{
|
||||||
|
elm_init(0, NULL);
|
||||||
|
|
||||||
|
Eo *root = _elm_atspi_root_get();
|
||||||
|
|
||||||
|
Eina_List *children = NULL;
|
||||||
|
eo_do(root, children = elm_interface_atspi_accessible_children_get());
|
||||||
|
|
||||||
|
ck_assert(children == NULL);
|
||||||
|
|
||||||
|
eina_list_free(children);
|
||||||
|
|
||||||
|
elm_shutdown();
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
|
START_TEST (elm_test_atspi_obj_index_in_parent_get)
|
||||||
|
{
|
||||||
|
elm_init(0, NULL);
|
||||||
|
|
||||||
|
Eo *root = generate_app();
|
||||||
|
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
|
Eina_List *children = NULL;
|
||||||
|
eo_do(root, children = elm_interface_atspi_accessible_children_get());
|
||||||
|
|
||||||
|
Evas_Object *win = eina_list_nth(children, 0);
|
||||||
|
ck_assert(win != NULL);
|
||||||
|
|
||||||
|
eo_do(win, ret = elm_interface_atspi_accessible_index_in_parent_get());
|
||||||
|
|
||||||
|
ck_assert(ret == 0);
|
||||||
|
|
||||||
|
elm_shutdown();
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
|
START_TEST (elm_atspi_component_z_order)
|
||||||
|
{
|
||||||
|
elm_init(0, NULL);
|
||||||
|
|
||||||
|
Eo *root = generate_app();
|
||||||
|
|
||||||
|
Eo *win = NULL;
|
||||||
|
|
||||||
|
Eina_List *children;
|
||||||
|
eo_do(root, children = elm_interface_atspi_accessible_children_get());
|
||||||
|
|
||||||
|
win = eina_list_nth(children, 0);
|
||||||
|
int z_order = -1;
|
||||||
|
|
||||||
|
eo_do(win, z_order = elm_interface_atspi_component_z_order_get());
|
||||||
|
|
||||||
|
ck_assert(z_order != -1);
|
||||||
|
|
||||||
|
elm_shutdown();
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
|
START_TEST (elm_atspi_component_layer)
|
||||||
|
{
|
||||||
|
elm_init(0, NULL);
|
||||||
|
|
||||||
|
Eo *root = generate_app();
|
||||||
|
|
||||||
|
Eo *win = NULL;
|
||||||
|
|
||||||
|
Eina_List *children;
|
||||||
|
eo_do(root, children = elm_interface_atspi_accessible_children_get());
|
||||||
|
|
||||||
|
win = eina_list_nth(children, 0);
|
||||||
|
|
||||||
|
int layer = -1;
|
||||||
|
|
||||||
|
eo_do(win, layer = elm_interface_atspi_component_layer_get());
|
||||||
|
|
||||||
|
ck_assert(layer != -1);
|
||||||
|
|
||||||
|
elm_shutdown();
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
|
START_TEST (elm_atspi_component_alpha)
|
||||||
|
{
|
||||||
|
elm_init(0, NULL);
|
||||||
|
|
||||||
|
Eo *root = generate_app();
|
||||||
|
|
||||||
|
Eo *win = NULL;
|
||||||
|
|
||||||
|
Eina_List *children;
|
||||||
|
eo_do(root, children = elm_interface_atspi_accessible_children_get());
|
||||||
|
win = eina_list_nth(children, 0);
|
||||||
|
|
||||||
|
double alpha = -1.0;
|
||||||
|
|
||||||
|
eo_do(win, alpha = elm_interface_atspi_component_alpha_get());
|
||||||
|
|
||||||
|
ck_assert(alpha >= 0.0);
|
||||||
|
ck_assert(alpha <= 1.0);
|
||||||
|
|
||||||
|
elm_shutdown();
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
|
START_TEST (elm_atspi_children_and_parent2)
|
||||||
|
{
|
||||||
|
elm_init(0, NULL);
|
||||||
|
|
||||||
|
Eo *root = generate_app();
|
||||||
|
|
||||||
|
Eo *win = NULL;
|
||||||
|
|
||||||
|
Eina_List *root_children;
|
||||||
|
eo_do(root, root_children = elm_interface_atspi_accessible_children_get());
|
||||||
|
win = eina_list_nth(root_children, 0);
|
||||||
|
|
||||||
|
Eina_List *win_children;
|
||||||
|
eo_do(win, win_children = elm_interface_atspi_accessible_children_get());
|
||||||
|
|
||||||
|
ck_assert(eina_list_count(win_children) == 2);
|
||||||
|
|
||||||
|
Eo *btn = NULL;
|
||||||
|
|
||||||
|
btn = eina_list_nth(win_children, 1);
|
||||||
|
ck_assert(btn != NULL);
|
||||||
|
ck_assert(btn == g_btn);
|
||||||
|
|
||||||
|
elm_shutdown();
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
|
void elm_test_atspi(TCase *tc)
|
||||||
|
{
|
||||||
|
tcase_add_test(tc, elm_atspi_root_get);
|
||||||
|
tcase_add_test(tc, elm_atspi_name_get);
|
||||||
|
tcase_add_test(tc, elm_atspi_role_get);
|
||||||
|
tcase_add_test(tc, elm_atspi_role_name_get);
|
||||||
|
tcase_add_test(tc, elm_atspi_localized_role_name_get);
|
||||||
|
tcase_add_test(tc, elm_atspi_description_set);
|
||||||
|
tcase_add_test(tc, elm_atspi_children_and_parent);
|
||||||
|
tcase_add_test(tc, elm_atspi_component_position);
|
||||||
|
tcase_add_test(tc, elm_atspi_component_size);
|
||||||
|
tcase_add_test(tc, elm_atspi_component_focus);
|
||||||
|
tcase_add_test(tc, elm_test_atspi_object_children_get);
|
||||||
|
tcase_add_test(tc, elm_test_atspi_obj_index_in_parent_get);
|
||||||
|
tcase_add_test(tc, elm_atspi_component_z_order);
|
||||||
|
tcase_add_test(tc, elm_atspi_component_layer);
|
||||||
|
tcase_add_test(tc, elm_atspi_component_alpha);
|
||||||
|
tcase_add_test(tc, elm_atspi_children_and_parent2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TO DO
|
||||||
|
* elm_interface_atspi_accessible_relation_set_get
|
||||||
|
* elm_interface_atspi_accessible_relation_set_set
|
||||||
|
* elm_interface_atspi_accessible_state_get
|
||||||
|
* elm_interface_atspi_accessible_attributes_get
|
||||||
|
* elm_interface_atspi_component_contains
|
||||||
|
*/
|
Loading…
Reference in New Issue