[atspi] change accessible name to const char* - it is same with accessible description
authorShinwoo Kim <cinoo.kim@samsung.com>
Fri, 4 Nov 2016 13:04:00 +0000 (22:04 +0900)
committerJunsuChoi <jsuya.choi@samsung.com>
Thu, 17 Nov 2016 08:07:48 +0000 (17:07 +0900)
Please refer to following review

https://phab.enlightenment.org/D4378

Change-Id: Id32c83a44f8e5830553b1b439cef172e73e2d62a

22 files changed:
src/lib/elc_ctxpopup.c
src/lib/elc_multibuttonentry.c
src/lib/elc_popup.c
src/lib/elm_access.c
src/lib/elm_atspi_app_object.c
src/lib/elm_atspi_bridge.c
src/lib/elm_colorselector.c
src/lib/elm_entry.c
src/lib/elm_gengrid.c
src/lib/elm_genlist.c
src/lib/elm_index.c
src/lib/elm_interface_atspi_accessible.c
src/lib/elm_interface_atspi_accessible.eo
src/lib/elm_list.c
src/lib/elm_spinner.c
src/lib/elm_toolbar.c
src/lib/elm_widget.c
src/lib/elm_widget.h
src/lib/elm_win.c
src/mobile_lib/elc_ctxpopup.c
src/mobile_lib/elm_genlist.c
src/tests/elm_test_atspi.c

index 0cd222bc02bfd073d1dca1309bd1a315a57d3e4d..2383897535d603de9803d379a65470c1c2338fb0 100644 (file)
@@ -1607,10 +1607,10 @@ _elm_ctxpopup_elm_interface_atspi_component_highlight_clear(Eo *obj EINA_UNUSED,
 //
 
 //TIZEN ONLY(20150710)ctxpopup: Accessible methods for children_get, extents_get and item name_get
-EOLIAN char *
+EOLIAN const char *
 _elm_ctxpopup_item_elm_interface_atspi_accessible_name_get(Eo *eo_it EINA_UNUSED, Elm_Ctxpopup_Item_Data *item)
 {
-   return strdup(elm_object_item_text_get(item->list_item));
+   return elm_object_item_text_get(item->list_item);
 }
 //
 
index 7284e854f1aab23f8d6c01ea82f9ffe0d725ff7a..8fb018d44ce2306f7ecfe99201d38f7a881b0f82 100644 (file)
@@ -2232,14 +2232,14 @@ _elm_multibuttonentry_item_elm_interface_atspi_widget_action_elm_actions_get(Eo
    return &atspi_actions[0];
 }
 
-EOLIAN static char*
+EOLIAN static const char*
 _elm_multibuttonentry_item_elm_interface_atspi_accessible_name_get(Eo *eo_it, Elm_Multibuttonentry_Item_Data *it)
 {
-   char *ret;
+   const char *ret;
    eo_do_super(eo_it, ELM_MULTIBUTTONENTRY_ITEM_CLASS, ret = elm_interface_atspi_accessible_name_get());
    if (ret) return ret;
-   ret = (char *)elm_object_part_text_get(VIEW(it), "elm.btn.text");
-   return ret ? strdup(ret) : NULL;
+   ret = elm_object_part_text_get(VIEW(it), "elm.btn.text");
+   return ret;
 }
 
 EOLIAN static Elm_Atspi_State_Set
index b828ac77b2dfd646beae305e0b37d77c0cd2e138..088b806fa6eb2b964630732c4663600a79f32348 100644 (file)
@@ -2327,20 +2327,26 @@ _elm_popup_class_constructor(Eo_Class *klass)
 }
 
 //TIZEN ONLY(20160818): name interface added
-EOLIAN static char*
-_elm_popup_elm_interface_atspi_accessible_name_get(Eo *obj EINA_UNUSED, Elm_Popup_Data *sd)
+EOLIAN static const char*
+_elm_popup_elm_interface_atspi_accessible_name_get(Eo *obj, Elm_Popup_Data *sd)
 {
    Eina_Strbuf *buf;
-   char *ret = NULL;
+   char *accessible_name = NULL;
+   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
+
    buf = eina_strbuf_new();
    eina_strbuf_append_printf(buf, "%s", N_("Alert"));
    if (sd->title_text)
      eina_strbuf_append_printf(buf, ", %s", sd->title_text);
    else if (sd->text_content_obj)
      eina_strbuf_append_printf(buf, ", %s", elm_object_text_get(sd->text_content_obj));
-   ret = eina_strbuf_string_steal(buf);
+   accessible_name = eina_strbuf_string_steal(buf);
    eina_strbuf_free(buf);
-   return strdup(ret);
+
+   eina_stringshare_del(wd->accessible_name);
+   wd->accessible_name =  eina_stringshare_add(accessible_name);
+   free(accessible_name);
+   return wd->accessible_name;
 }
 //
 
index e90dafb5fa3fbed0d709df20ff8cbf8b663ae04c..45d2e164980ee62408756bc2e482eb3046649659 100644 (file)
@@ -1455,16 +1455,23 @@ _elm_access_class_constructor(Eo_Class *klass)
    evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
 }
 
-EOLIAN static char*
+EOLIAN static const char*
 _elm_access_elm_interface_atspi_accessible_name_get(Eo *obj, void *pd EINA_UNUSED)
 {
+   char *accessible_name;
    //TIZEN_ONLY(20160919): make access object work with elm_interface_atspi_accessible_name,description_set
-   char *ret = NULL;
+   const char *ret = NULL;
    eo_do_super(obj, ELM_ACCESS_CLASS, ret = elm_interface_atspi_accessible_name_get());
    if (ret) return ret;
    //
 
-   return elm_access_info_get(obj, ELM_ACCESS_INFO);
+   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
+
+   accessible_name = elm_access_info_get(obj, ELM_ACCESS_INFO);
+   eina_stringshare_del(wd->accessible_name);
+   wd->accessible_name = eina_stringshare_add(accessible_name);
+   free(accessible_name);
+   return wd->accessible_name;
 }
 
 EOLIAN static const char*
index 57393bb119496b56141b2f45118ab271f96bfc3c..0b3e5dcc2ad7d4eace5267579a43435fc8f4c7d0 100644 (file)
@@ -44,12 +44,12 @@ _elm_atspi_app_object_elm_interface_atspi_accessible_children_get(Eo *obj EINA_U
    return accs;
 }
 
-EOLIAN static char*
+EOLIAN static const char*
 _elm_atspi_app_object_elm_interface_atspi_accessible_name_get(Eo *obj EINA_UNUSED, Elm_Atspi_App_Object_Data *_pd EINA_UNUSED)
 {
    const char *ret;
    ret = elm_app_name_get();
-   return ret ? strdup(ret) : NULL;
+   return ret;
 }
 
 EOLIAN static const char*
index ddcb0ae1be5c26de657a6a2bb0fdbaa3e4501f29..7f92d58ea436e246dae350706a91dcc6d32a948f 100644 (file)
@@ -2185,12 +2185,10 @@ _accessible_property_get(const Eldbus_Service_Interface *interface, const char *
 
    if (!strcmp(property, "Name"))
      {
-        char *ret2;
-        eo_do(obj, ret2 = elm_interface_atspi_accessible_name_get());
-        if (!ret2)
-          ret2 = strdup("");
-        eldbus_message_iter_basic_append(iter, 's', ret2);
-        free(ret2);
+        eo_do(obj, ret = elm_interface_atspi_accessible_name_get());
+        if (!ret)
+          ret = "";
+        eldbus_message_iter_basic_append(iter, 's', ret);
         return EINA_TRUE;
      }
    else if (!strcmp(property, "Description"))
@@ -3339,13 +3337,12 @@ _cache_item_reference_append_cb(Eo *bridge, Eo *data, Eldbus_Message_Iter *iter_
   _iter_interfaces_append(iter_struct, data);
 
   /* Marshall name */
-  char *name = NULL;
+  const char *name = NULL;
   eo_do(data, name = elm_interface_atspi_accessible_name_get());
   if (!name)
-    name = strdup("");
+    name = "";
 
   eldbus_message_iter_basic_append(iter_struct, 's', name);
-  free(name);
 
   /* Marshall role */
   eldbus_message_iter_basic_append(iter_struct, 'u', role);
index e9e36aedf6ebb8475c7e3f5346cb8596b877e4e6..3e356379f00c39f67aa6d43ff155bfe58e403856 100644 (file)
@@ -2804,27 +2804,30 @@ _elm_color_item_elm_interface_atspi_widget_action_elm_actions_get(Eo *eo_it EINA
    return &atspi_actions[0];
 }
 
-EOLIAN static char*
+EOLIAN static const char*
 _elm_color_item_elm_interface_atspi_accessible_name_get(Eo *eo_it, Elm_Color_Item_Data *it)
 {
    Eina_Strbuf *buf;
    const char *color_name = NULL;
-   char *name;
+   const char *name;
+   char *accessible_name;
    eo_do_super(eo_it, ELM_COLOR_ITEM_CLASS, name = elm_interface_atspi_accessible_name_get());
-   if (!name)
-     {
-        buf = eina_strbuf_new();
-        color_name = _get_color_name(it->color->r, it->color->g, it->color->b, it->color->a);
-        if (color_name)
-          eina_strbuf_append_printf(buf, "%s", color_name);
-        else
-          eina_strbuf_append_printf(buf, "red %d, green %d, blue %d, alpha %d",
-                                    it->color->r, it->color->g, it->color->b, it->color->a);
-        name = strdup(eina_strbuf_string_steal(buf));
-        eina_strbuf_free(buf);
-     }
+   if (name) return name;
+
+   buf = eina_strbuf_new();
+   color_name = _get_color_name(it->color->r, it->color->g, it->color->b, it->color->a);
+   if (color_name)
+     eina_strbuf_append_printf(buf, "%s", color_name);
+   else
+     eina_strbuf_append_printf(buf, "red %d, green %d, blue %d, alpha %d",
+                               it->color->r, it->color->g, it->color->b, it->color->a);
+   accessible_name = eina_strbuf_string_steal(buf);
+   eina_strbuf_free(buf);
 
-   return name;
+   eina_stringshare_del(it->base->accessible_name);
+   it->base->accessible_name = eina_stringshare_add(accessible_name);
+   free(accessible_name);
+   return it->base->accessible_name;
 }
 
 /////
index e8417ec9619b7aec318f665692d5e6ca98a63c00..a7b8334e14e024813c7a7faf09cb8d3b1b402281 100644 (file)
@@ -7644,11 +7644,11 @@ _elm_entry_elm_interface_atspi_accessible_state_set_get(Eo *obj, Elm_Entry_Data
    return ret;
 }
 
-EOLIAN static char*
+EOLIAN static const char*
 _elm_entry_elm_interface_atspi_accessible_name_get(Eo *obj EINA_UNUSED, Elm_Entry_Data *sd)
 {
    const char *ret = edje_object_part_text_get(sd->entry_edje, "elm.guide");
-   return ret ? strdup(ret) : NULL;
+   return ret;
 }
 
 //TIZEN ONLY (20160609): Added atspi action interface in entry
index 3f1073471fed1fd3061d28af66215c730ed88b24..b3077d360e0e00a2c9c10db48dde3d7979c99d23 100644 (file)
@@ -5685,11 +5685,12 @@ _elm_gengrid_item_elm_interface_atspi_accessible_state_set_get(Eo *eo_it, Elm_Ge
    return ret;
 }
 
-EOLIAN char*
+EOLIAN const char*
 _elm_gengrid_item_elm_interface_atspi_accessible_name_get(Eo *eo_it, Elm_Gen_Item *it)
 {
-   char *ret;
+   const char *ret;
    Eina_Strbuf *buf;
+   char *accessible_name;
 
    eo_do_super(eo_it, ELM_GENGRID_ITEM_CLASS, ret = elm_interface_atspi_accessible_name_get());
    if (ret) return ret;
@@ -5723,9 +5724,13 @@ _elm_gengrid_item_elm_interface_atspi_accessible_name_get(Eo *eo_it, Elm_Gen_Ite
           }
      }
 
-   ret = eina_strbuf_string_steal(buf);
+   accessible_name = eina_strbuf_string_steal(buf);
    eina_strbuf_free(buf);
-   return ret;
+
+   eina_stringshare_del(it->base->accessible_name);
+   it->base->accessible_name = eina_stringshare_add(accessible_name);
+   free(accessible_name);
+   return it->base->accessible_name;
 }
 
 EOLIAN Eina_List*
index 1a8e75e1a1e6ee788a02c26c68abb5be261bae45..323bd5994191b92a1be7253199bff90934276595 100644 (file)
@@ -8282,12 +8282,13 @@ _elm_genlist_item_elm_interface_atspi_accessible_state_set_get(Eo *eo_it, Elm_Ge
    return ret;
 }
 
-EOLIAN char*
+EOLIAN const char*
 _elm_genlist_item_elm_interface_atspi_accessible_name_get(Eo *eo_it,
                                                           Elm_Gen_Item *it)
 {
-   char *ret;
+   const char *ret;
    Eina_Strbuf *buf;
+   char *accessible_name;
    eo_do_super(eo_it, ELM_GENLIST_ITEM_CLASS, ret = elm_interface_atspi_accessible_name_get());
    if (ret) return ret;
    Elm_Genlist_Item_Type genlist_item_type = elm_genlist_item_type_get(eo_it);
@@ -8337,9 +8338,13 @@ _elm_genlist_item_elm_interface_atspi_accessible_name_get(Eo *eo_it,
      eina_strbuf_append(buf,", header");
    //
 
-   ret = eina_strbuf_string_steal(buf);
+   accessible_name = eina_strbuf_string_steal(buf);
    eina_strbuf_free(buf);
-   return ret;
+
+   eina_stringshare_del(it->base->accessible_name);
+   it->base->accessible_name = eina_stringshare_add(accessible_name);
+   free(accessible_name);
+   return it->base->accessible_name;
 }
 
 EOLIAN Eina_List*
index 2bd368c09dbb9292369a33d29a35c63d2f8e740b..a4ce08a99961dff80c09d447e05d54ee8ecde1e6 100644 (file)
@@ -1788,10 +1788,10 @@ _elm_index_elm_interface_atspi_accessible_children_get(Eo *eo_it EINA_UNUSED, El
    return eina_list_clone(data->items);
 }
 
-EOLIAN static char*
+EOLIAN static const char*
 _elm_index_item_elm_interface_atspi_accessible_name_get(Eo *eo_it EINA_UNUSED, Elm_Index_Item_Data *data)
 {
-   return data->letter ? strdup(data->letter) : NULL;
+   return data->letter;
 }
 
 EOLIAN static const Elm_Atspi_Action*
index f79a92190fec17a786451b52802f3775c637fcc8..23e61aec885f4dc3d18d62b53bc0bd6b72730d19 100644 (file)
@@ -313,33 +313,36 @@ _elm_interface_atspi_accessible_role_name_get(Eo *obj EINA_UNUSED, Elm_Interface
    return role > ELM_ATSPI_ROLE_LAST_DEFINED ? "" : Atspi_Name[role];
 }
 
-EOLIAN char *
+EOLIAN const char *
 _elm_interface_atspi_accessible_name_get(Eo *obj EINA_UNUSED, Elm_Interface_Atspi_Accessible_Data *pd)
 {
    //TIZEN_ONLY(20190922): add name callback, description callback.
    char *ret = NULL;
    if (pd->name_cb_item.cb)
      ret = pd->name_cb_item.cb((void *)pd->name_cb_item.data, (Evas_Object *)obj);
-   if (ret) return strdup(ret);
+   if (ret)
+     {
+        eina_stringshare_replace(&pd->translation_domain, NULL);
+        pd->translation_domain = NULL;
+        eina_stringshare_replace(&pd->name, ret);
+        free(ret);
+     }
    //
 
    if (pd->name)
      {
 #ifdef ENABLE_NLS
         if (pd->translation_domain)
-          return strdup(dgettext(pd->translation_domain, pd->name));
-        else
-          return strdup(pd->name);
-#else
-        return strdup(pd->name);
+          return dgettext(pd->translation_domain, pd->name);
 #endif
+        return pd->name;
      }
 
    return NULL;
 }
 
 EOLIAN static void
-_elm_interface_atspi_accessible_name_set(Eo *obj EINA_UNUSED, Elm_Interface_Atspi_Accessible_Data *pd, char *val)
+_elm_interface_atspi_accessible_name_set(Eo *obj EINA_UNUSED, Elm_Interface_Atspi_Accessible_Data *pd, const char *val)
 {
    eina_stringshare_replace(&pd->name, val);
 }
@@ -356,10 +359,16 @@ _elm_interface_atspi_accessible_name_cb_set(Eo *obj EINA_UNUSED, Elm_Interface_A
 const char * _elm_interface_atspi_accessible_description_get(Eo *obj EINA_UNUSED, Elm_Interface_Atspi_Accessible_Data *pd)
 {
    //TIZEN_ONLY(20190922): add name callback, description callback.
-   const char *ret = NULL;
+   char *ret = NULL;
    if (pd->description_cb_item.cb)
      ret = pd->description_cb_item.cb((void *)pd->description_cb_item.data, (Evas_Object *)obj);
-   if (ret) return ret;
+   if (ret)
+     {
+        eina_stringshare_replace(&pd->translation_domain, NULL);
+        pd->translation_domain = NULL;
+        eina_stringshare_replace(&pd->description, ret);
+        free(ret);
+     }
    //
 
 #ifdef ENABLE_NLS
index 8a249bbcbc131103827fb92b3491c424eb5fa45f..2c6af36321ce14bb4e06cd9994728b0ca3b2ebf2 100644 (file)
@@ -43,7 +43,7 @@ mixin Elm_Interface_Atspi_Accessible ()
             ]]
          }
          values {
-            name: char*; [[obj name]]
+            name: const(char)*; [[obj name]]
          }
       }
       //TIZEN_ONLY(20190922): add name callback, description callback.
index 8cdb1d8235456830d41c0819e7023fcf2c760515..b96abd05634858870bc17c96b76b3f4db53337a9 100644 (file)
@@ -2187,10 +2187,10 @@ _elm_list_item_elm_interface_atspi_accessible_state_set_get(Eo *eo_it, Elm_List_
    return ret;
 }
 
-EOLIAN static char*
+EOLIAN static const char*
 _elm_list_item_elm_interface_atspi_accessible_name_get(Eo *eo_it EINA_UNUSED, Elm_List_Item_Data *data)
 {
-   return data->label ? strdup(data->label) : NULL;
+   return data->label;
 }
 
 EOLIAN static Eina_List*
index 427869afafb1c444170e44c13711f8b4c4510391..19840850d8ed924e48bd38c9f4bc323e19a00e2a 100644 (file)
@@ -1838,10 +1838,10 @@ _elm_spinner_elm_interface_atspi_value_increment_get(Eo *obj EINA_UNUSED, Elm_Sp
    return sd->step;
 }
 
-EOLIAN static char*
+EOLIAN static const char*
 _elm_spinner_elm_interface_atspi_accessible_name_get(Eo *obj, Elm_Spinner_Data *sd)
 {
-   char *name;
+   const char *name;
    eo_do_super(obj, MY_CLASS, name = elm_interface_atspi_accessible_name_get());
    if (name) return name;
    const char *ret = NULL;
@@ -1858,7 +1858,7 @@ _elm_spinner_elm_interface_atspi_accessible_name_get(Eo *obj, Elm_Spinner_Data *
         ret = elm_layout_text_get(obj, "elm.text");
      }
    //
-   return ret ? strdup(ret) : NULL;
+   return ret;
 }
 
 // A11Y Accessibility - END
index a1d443178138b0f92438222d7e542f10a0229a41..7b3d78dd811dfe437cf235beeb07e13dbb88bb88 100644 (file)
@@ -4097,13 +4097,13 @@ _elm_toolbar_item_bring_in(Eo *eo_item EINA_UNUSED, Elm_Toolbar_Item_Data *item,
      (x, y, w, h));
 }
 
-EOLIAN static char*
+EOLIAN static const char*
 _elm_toolbar_item_elm_interface_atspi_accessible_name_get(Eo *eo_item, Elm_Toolbar_Item_Data *item)
 {
-   char *ret;
+   const char *ret;
    eo_do_super(eo_item, ELM_TOOLBAR_ITEM_CLASS, ret = elm_interface_atspi_accessible_name_get());
    if (ret) return ret;
-   return item->label ? strdup(item->label) : NULL;
+   return item->label;
 }
 
 EOLIAN static Elm_Atspi_State_Set
index c61dcab67e565efbca5eb4759e16b92780203abb..6dee44de14738a1c4f0b074416688a2d5535af9c 100644 (file)
@@ -517,6 +517,7 @@ _elm_widget_evas_object_smart_del(Eo *obj, Elm_Widget_Smart_Data *sd)
    _if_focused_revert(obj, EINA_TRUE);
    elm_widget_focus_custom_chain_unset(obj);
    eina_stringshare_del(sd->access_info);
+   eina_stringshare_del(sd->accessible_name);
    evas_object_smart_data_set(obj, NULL);
 }
 
@@ -4672,6 +4673,7 @@ _elm_widget_item_eo_base_destructor(Eo *eo_item, Elm_Widget_Item_Data *item)
    evas_object_del(item->view);
 
    eina_stringshare_del(item->access_info);
+   eina_stringshare_del(item->accessible_name);
 
    while (item->signals)
      _elm_widget_item_signal_callback_list_get(item, item->signals);
@@ -6204,9 +6206,10 @@ _elm_widget_elm_interface_atspi_component_highlight_clear(Eo *obj, Elm_Widget_Sm
 }
 //
 
-EOLIAN static char*
-_elm_widget_elm_interface_atspi_accessible_name_get(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *_pd EINA_UNUSED)
+EOLIAN static const char*
+_elm_widget_elm_interface_atspi_accessible_name_get(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *_pd)
 {
+   char *accessible_name;
    //TIZEN_ONLY(20190922): add name callback, description callback.
    const char *ret = NULL;
    eo_do_super(obj, ELM_WIDGET_CLASS, ret = elm_interface_atspi_accessible_name_get());
@@ -6218,24 +6221,25 @@ _elm_widget_elm_interface_atspi_accessible_name_get(Eo *obj EINA_UNUSED, Elm_Wid
      {
 #ifdef HAVE_GETTEXT
         if (_pd->atspi_translation_domain)
-          return strdup(dgettext(_pd->atspi_translation_domain, _pd->name));
-        else
-          return strdup(_pd->name);
-#else
-        return strdup(_pd->name);
+          return dgettext(_pd->atspi_translation_domain, _pd->name);
 #endif
+        return _pd->name;
      }
    //
 
    ret = elm_object_text_get(obj);
    if (!ret) return NULL;
 
-   return (char *)_elm_util_mkup_to_text(ret);
+   accessible_name = _elm_util_mkup_to_text(ret);
+   eina_stringshare_del(_pd->accessible_name);
+   _pd->accessible_name =  eina_stringshare_add(accessible_name);
+   free(accessible_name);
+   return _pd->accessible_name;
 }
 
 //TIZEN_ONLY(20150713) : add atspi name setter to widget_item
 EOLIAN void
-_elm_widget_item_elm_interface_atspi_accessible_name_set(Eo *obj EINA_UNUSED, Elm_Widget_Item_Data* _pd EINA_UNUSED, char *name)
+_elm_widget_item_elm_interface_atspi_accessible_name_set(Eo *obj EINA_UNUSED, Elm_Widget_Item_Data* _pd EINA_UNUSED, const char *name)
 {
    if (_pd->name)
      eina_stringshare_del(_pd->name);
@@ -6243,11 +6247,11 @@ _elm_widget_item_elm_interface_atspi_accessible_name_set(Eo *obj EINA_UNUSED, El
    _pd->name = eina_stringshare_add(name);
 }
 
-EOLIAN char*
+EOLIAN const char*
 _elm_widget_item_elm_interface_atspi_accessible_name_get(Eo *obj EINA_UNUSED, Elm_Widget_Item_Data *_pd EINA_UNUSED)
 {
    //TIZEN_ONLY(20190922): add name callback, description callback.
-   char *ret = NULL;
+   const char *ret = NULL;
    eo_do_super(obj, ELM_WIDGET_ITEM_CLASS, ret = elm_interface_atspi_accessible_name_get());
    if (ret) return ret;
    //
@@ -6256,12 +6260,9 @@ _elm_widget_item_elm_interface_atspi_accessible_name_get(Eo *obj EINA_UNUSED, El
      {
 #ifdef HAVE_GETTEXT
         if (_pd->atspi_translation_domain)
-          return strdup(dgettext(_pd->atspi_translation_domain, _pd->name));
-        else
-          return strdup(_pd->name);
-#else
-        return strdup(_pd->name);
+          return dgettext(_pd->atspi_translation_domain, _pd->name);
 #endif
+        return _pd->name;
      }
 
    return NULL;
@@ -6644,7 +6645,7 @@ _elm_widget_item_elm_interface_atspi_component_alpha_get(Eo *obj EINA_UNUSED, El
 
 //TIZEN_ONLY(20150717) add widget name setter
 EOLIAN void
-_elm_widget_elm_interface_atspi_accessible_name_set(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data* _pd EINA_UNUSED, char *name)
+_elm_widget_elm_interface_atspi_accessible_name_set(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data* _pd EINA_UNUSED, const char *name)
 {
    if (_pd->name)
      eina_stringshare_del(_pd->name);
index cab031f47fb0d9dfd5690025fcc59afac7d84ab7..656baafb9c6add38bc9e516a40bd0fa9d3aa7620 100644 (file)
@@ -403,6 +403,7 @@ typedef struct _Elm_Widget_Smart_Data
    const char                   *style;
    const char                   *focus_highlight_style;  /**< custom focus style for a widget */
    const char                   *access_info;
+   const char                   *accessible_name;
    unsigned int                  focus_order;
    Eina_Bool                     focus_order_on_calc;
 
@@ -650,6 +651,7 @@ struct _Elm_Widget_Item_Data
 
    Evas_Object                   *access_obj;
    const char                    *access_info;
+   const char                    *accessible_name;
    Eina_List                     *access_order;
    Eina_Inlist                   *translate_strings;
    Eina_List                     *signals;
index f6acf1abe033f4722ef5fd0f12c186b33e6fcfe5..26ff9e4b228c6eea41c46564b1df5ed3f1d8d7cb 100644 (file)
@@ -6679,11 +6679,11 @@ _elm_win_elm_interface_atspi_accessible_state_set_get(Eo *obj, Elm_Win_Data *sd
    return ret;
 }
 
-EOLIAN static char*
+EOLIAN static const char*
 _elm_win_elm_interface_atspi_accessible_name_get(Eo *obj, Elm_Win_Data *sd EINA_UNUSED)
 {
    const char *ret = elm_win_title_get(obj);
-   return ret ? strdup(ret) : strdup("");
+   return ret;
 }
 
 #include "elm_win.eo.c"
index ae6cb969d98caa37228b9ad426f1dae0bda9f45f..2bea6f05ccc396eaf019138823c383c743f38461 100644 (file)
@@ -2236,20 +2236,26 @@ _elm_ctxpopup_item_init(Eo *eo_item,
 }
 
 //TIZEN ONLY(20160918): name interface added
-EOLIAN static char*
+EOLIAN static const char*
 _elm_ctxpopup_elm_interface_atspi_accessible_name_get(Eo *obj, Elm_Ctxpopup_Data *sd EINA_UNUSED)
 {
    Eina_Strbuf *buf;
-   char *ret = NULL;
+   char *accessible_name = NULL;
    const char *style = elm_widget_style_get(obj);
+
+   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
    buf = eina_strbuf_new();
    if (!strcmp(style, "more/default"))
      eina_strbuf_append_printf(buf, "%s", N_("More menu popup"));
    else
      eina_strbuf_append_printf(buf, "%s", N_("Alert"));
-   ret = eina_strbuf_string_steal(buf);
+   accessible_name = eina_strbuf_string_steal(buf);
    eina_strbuf_free(buf);
-   return strdup(ret);
+
+   eina_stringshare_del(wd->accessible_name);
+   wd->accessible_name =  eina_stringshare_add(accessible_name);
+   free(accessible_name);
+   return wd->accessible_name;
 }
 //
 
@@ -2353,17 +2359,17 @@ _elm_ctxpopup_elm_interface_atspi_component_highlight_clear(Eo *obj EINA_UNUSED,
 //
 
 //TIZEN ONLY(20150710)ctxpopup: Accessible methods for children_get, extents_get and item name_get
-EOLIAN char *
+EOLIAN const char *
 _elm_ctxpopup_item_elm_interface_atspi_accessible_name_get(Eo *eo_it EINA_UNUSED, Elm_Ctxpopup_Item_Data *item)
 {
    if(item->icon && !item->label)
      {
-        char *icon_name = NULL;
+        const char *icon_name = NULL;
         eo_do(item->icon, icon_name = elm_interface_atspi_accessible_name_get());
-        return icon_name ? strdup(icon_name): NULL;
+        return icon_name;
      }
    else
-     return item->label ? strdup(item->label) : NULL;
+     return item->label;
 }
 //
 
index 9becb8c033e60cac6010f1f24e0ad610880661b6..10128e0a52bd94202ba2f3b0a14552c03754fc8d 100644 (file)
@@ -8115,12 +8115,13 @@ _elm_genlist_item_elm_interface_atspi_accessible_state_set_get(Eo *eo_it, Elm_Ge
    return ret;
 }
 
-EOLIAN char*
+EOLIAN const char*
 _elm_genlist_item_elm_interface_atspi_accessible_name_get(Eo *eo_it,
                                                           Elm_Gen_Item *it)
 {
-   char *ret;
+   const char *ret;
    Eina_Strbuf *buf;
+   char *accessible_name;
    eo_do_super(eo_it, ELM_GENLIST_ITEM_CLASS, ret = elm_interface_atspi_accessible_name_get());
    if (ret) return ret;
    Elm_Genlist_Item_Type genlist_item_type = elm_genlist_item_type_get(eo_it);
@@ -8170,9 +8171,13 @@ _elm_genlist_item_elm_interface_atspi_accessible_name_get(Eo *eo_it,
      eina_strbuf_append(buf,", header");
    //
 
-   ret = eina_strbuf_string_steal(buf);
+   accessible_name = eina_strbuf_string_steal(buf);
    eina_strbuf_free(buf);
-   return ret;
+
+   eina_stringshare_del(it->base->accessible_name);
+   it->base->accessible_name = eina_stringshare_add(accessible_name);
+   free(accessible_name);
+   return it->base->accessible_name;
 }
 
 EOLIAN Eina_List*
index 12e0e5373c4e078f00e004c0afda1a4d9171626a..5996fe022fd3d5547ac247b5252a0c84799388cc 100644 (file)
@@ -79,7 +79,7 @@ START_TEST (elm_atspi_name_get)
    elm_init(0, NULL);
    generate_app();
 
-   char *name;
+   const char *name;
 
    eo_do(g_btn, name = elm_interface_atspi_accessible_name_get());
 
@@ -87,8 +87,6 @@ START_TEST (elm_atspi_name_get)
       ck_assert(0);
    }
 
-   free(name);
-
    // Set name with additional text tags
    elm_object_text_set(g_btn, "Some<br>text");
 
@@ -98,7 +96,6 @@ START_TEST (elm_atspi_name_get)
    ck_assert(name != NULL);
    ck_assert_str_eq(name, "Some\ntext");
 
-   free(name);
    elm_shutdown();
 }
 END_TEST
@@ -108,7 +105,7 @@ START_TEST (elm_atspi_name_set)
    elm_init(0, NULL);
    generate_app();
 
-   char *name;
+   const char *name;
 
    elm_object_text_set(g_btn, "Other text");
    eo_do(g_btn, elm_interface_atspi_accessible_name_set("Test name"));
@@ -118,16 +115,12 @@ START_TEST (elm_atspi_name_set)
    ck_assert(name != NULL);
    ck_assert_str_eq(name, "Test name");
 
-   free(name);
-
    eo_do(g_btn, elm_interface_atspi_accessible_name_set(NULL));
    eo_do(g_btn, name = elm_interface_atspi_accessible_name_get());
 
    ck_assert(name != NULL);
    ck_assert_str_eq(name, "Other text");
 
-   free(name);
-
    elm_shutdown();
 }
 END_TEST