diff options
author | saerome.kim <saerome.kim@samsung.com> | 2019-11-11 19:32:43 +0900 |
---|---|---|
committer | saerome.kim <saerome.kim@samsung.com> | 2019-11-11 21:09:43 +0900 |
commit | 57819db445669436828f95e3e3f657977d31d6ef (patch) | |
tree | 9af3bdc3d4c116e23f8ece7bcccddb4662d15601 | |
parent | 633a3974a94a53e37f82026ca6fa4968cb4d91e9 (diff) | |
download | user-awareness-57819db445669436828f95e3e3f657977d31d6ef.tar.gz user-awareness-57819db445669436828f95e3e3f657977d31d6ef.tar.bz2 user-awareness-57819db445669436828f95e3e3f657977d31d6ef.zip |
Add ua_user_update APIsubmit/tizen/20191111.122616accepted/tizen/unified/20191111.152605
- Problem: Users want to change their name.
- Cause: it is not supported to change the user name once user information
added to ua-manager DB.
- Solution: Make the user can change his name even user-information added.
Change-Id: I41e4d8c087af859e886b06c592797052c4e69fa8
Signed-off-by: saerome.kim <saerome.kim@samsung.com>
-rw-r--r-- | include/user-awareness.h | 24 | ||||
-rw-r--r-- | packaging/capi-network-ua.spec | 2 | ||||
-rw-r--r-- | src/user-awareness-users.c | 60 | ||||
-rw-r--r-- | test/uat-service.c | 8 | ||||
-rw-r--r-- | test/uat-users.c | 34 |
5 files changed, 100 insertions, 28 deletions
diff --git a/include/user-awareness.h b/include/user-awareness.h index 7b779cd..b40f071 100644 --- a/include/user-awareness.h +++ b/include/user-awareness.h @@ -1359,6 +1359,7 @@ int ua_user_destroy( * @post * * @see ua_user_remove() + * @see ua_user_update() */ int ua_user_add( ua_user_h user_handle); @@ -1380,12 +1381,35 @@ int ua_user_add( * @post * * @see ua_user_add() + * @see ua_user_update() */ int ua_user_remove( ua_user_h user_handle); /** * @ingroup CAPI_NETWORK_UA_MODULE + * @brief Updates the user. + * @since_tizen 5.5 + * + * @param[in] user_handle The user handle + * + * @return 0 on success, otherwise a negative error value + * @retval #UA_ERROR_NONE Successful + * @retval #UA_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #UA_ERROR_OPERATION_FAILED Operation failed + * + * @exception + * @pre + * @post + * + * @see ua_user_add() + * @see ua_user_remove() + */ +int ua_user_update( + ua_user_h user_handle); + +/** + * @ingroup CAPI_NETWORK_UA_MODULE * @brief Gets default user handle. * @since_tizen 5.5 * diff --git a/packaging/capi-network-ua.spec b/packaging/capi-network-ua.spec index cc1a630..970dfda 100644 --- a/packaging/capi-network-ua.spec +++ b/packaging/capi-network-ua.spec @@ -1,6 +1,6 @@ Name: capi-network-ua Summary: User Awareness Framework CAPI -Version: 0.12.13 +Version: 0.12.14 Release: 1 License: Apache-2.0 Source0: %{name}-%{version}.tar.gz diff --git a/src/user-awareness-users.c b/src/user-awareness-users.c index e0a9f4b..85a1d8c 100644 --- a/src/user-awareness-users.c +++ b/src/user-awareness-users.c @@ -384,6 +384,8 @@ int _ua_foreach_registered_users(ua_registered_user_cb foreach_cb, FUNC_ENTRY; int i; int ret; + GSList *l; + ua_user_info_s *u; GPtrArray *user_list = NULL; uam_user_info_s *ptr; @@ -402,6 +404,11 @@ int _ua_foreach_registered_users(ua_registered_user_cb foreach_cb, return ret; } + if (ua_users_list) { + g_slist_free_full(ua_users_list, _ua_free_ua_user_info_t); + ua_users_list = NULL; + } + for (i = 0; i < user_list->len; i++) { ptr = g_ptr_array_index(user_list, i); if (ptr) { @@ -441,11 +448,8 @@ int _ua_foreach_registered_users(ua_registered_user_cb foreach_cb, user_info->isadded = true; user_info->user_handle = (ua_user_h)user_info; - if (!foreach_cb(user_info->user_handle, user_data)) { - _ua_free_ua_user_info_t(user_info); - break; - } else - _ua_free_ua_user_info_t(user_info); + + ua_users_list = g_slist_append(ua_users_list, user_info); } else { /* LCOV_EXCL_START */ UA_ERR("OPERATION_FAILED(0x%08x)", @@ -456,6 +460,13 @@ int _ua_foreach_registered_users(ua_registered_user_cb foreach_cb, } } + for (l = ua_users_list; l; l = g_slist_next(l)) { + u = (ua_user_info_s *)l->data; + + if (!foreach_cb(u->user_handle, user_data)) + break; + } + done: g_ptr_array_foreach(user_list, (GFunc)g_free, NULL); g_ptr_array_free(user_list, TRUE); @@ -621,6 +632,34 @@ int ua_user_remove(ua_user_h user_handle) return UA_ERROR_NONE; } +int ua_user_update(ua_user_h user_handle) +{ + FUNC_ENTRY; + + int ret; + uam_user_info_s uam_user; + ua_user_info_s *user = (ua_user_info_s *)user_handle; + + UA_VALIDATE_INPUT_PARAMETER(user_handle); + UA_IS_EXIST(_ua_get_user_from_list(user->account)); + + memset(&uam_user, 0, sizeof(uam_user_info_s)); + g_strlcpy(uam_user.account, user->account, UAM_USER_ACCOUNT_MAX_STRING_LEN); + g_strlcpy(uam_user.name, user->name, UAM_USER_NAME_MAX_STRING_LEN); + + ret = _ua_get_error_code(_uam_update_user(&uam_user)); + if (UA_ERROR_NONE != ret) { + /* LCOV_EXCL_START */ + UA_ERR("Failed with error: %s(0x%X)", + _ua_get_error_string(ret), ret); + return ret; + /* LCOV_EXCL_STOP */ + } + + FUNC_EXIT; + return UA_ERROR_NONE; +} + int ua_user_get_default_user(ua_user_h* user_handle) { FUNC_ENTRY; @@ -846,17 +885,8 @@ int ua_user_foreach_added( void *user_data) { FUNC_ENTRY; - GSList *l; - ua_user_info_s *u; - - UA_VALIDATE_INPUT_PARAMETER(foreach_cb); - for (l = ua_users_list; l; l = g_slist_next(l)) { - u = (ua_user_info_s *)l->data; - - if (!foreach_cb(u->user_handle, user_data)) - break; - } + _ua_foreach_registered_users(foreach_cb, user_data); FUNC_EXIT; return UA_ERROR_NONE; diff --git a/test/uat-service.c b/test/uat-service.c index 1e80093..c08cc34 100644 --- a/test/uat-service.c +++ b/test/uat-service.c @@ -779,9 +779,9 @@ struct menu_data menu_ua_services[] = { menu_ua_service_get_by_name, NULL, NULL }, { "10", ANSI_COLOR_LIGHTMAGENTA "ua_service_foreach_added" ANSI_COLOR_NORMAL, menu_sel_service, NULL, NULL }, - { "21", "ua_service_add_device", + { "21", ANSI_COLOR_LIGHTGREEN "ua_service_add_device" ANSI_COLOR_NORMAL, NULL, run_ua_service_add_device, NULL }, - { "22", "ua_service_remove_device", + { "22", ANSI_COLOR_LIGHTRED "ua_service_remove_device" ANSI_COLOR_NORMAL, NULL, run_ua_service_remove_device, NULL }, { "23", "ua_service_set_device_discriminant", menu_ua_service_set_device_discriminant, NULL, NULL }, @@ -789,9 +789,9 @@ struct menu_data menu_ua_services[] = { NULL, run_ua_service_get_device_discriminant, NULL }, { "25", ANSI_COLOR_LIGHTMAGENTA "ua_service_foreach_added_devices" ANSI_COLOR_NORMAL, menu_sel_service_added_device, NULL, NULL }, - { "31", "ua_service_add_user", + { "31", ANSI_COLOR_LIGHTGREEN "ua_service_add_user" ANSI_COLOR_NORMAL, menu_ua_service_add_user, NULL, NULL }, - { "32", "ua_service_remove_user", + { "32", ANSI_COLOR_LIGHTRED "ua_service_remove_user" ANSI_COLOR_NORMAL, menu_ua_service_remove_user, NULL, NULL }, { "33", ANSI_COLOR_LIGHTMAGENTA "ua_service_foreach_added_users" ANSI_COLOR_NORMAL, menu_sel_service_added_user, NULL, NULL }, diff --git a/test/uat-users.c b/test/uat-users.c index ccccaeb..0f00d45 100644 --- a/test/uat-users.c +++ b/test/uat-users.c @@ -426,6 +426,22 @@ static int run_ua_user_remove(MManager *mm, struct menu_data *menu) return RET_SUCCESS; } +static int run_ua_user_update(MManager *mm, struct menu_data *menu) +{ + int ret = UA_ERROR_NONE; + + msg("ua_user_update"); + + check_if(NULL == g_user_h); + + ret = ua_user_update(g_user_h); + + msg(" - ua_user_update() ret: [0x%X] [%s]", + ret, uat_get_error_str(ret)); + + return RET_SUCCESS; +} + static int run_ua_user_get_default_user(MManager *mm, struct menu_data *menu) { int ret = UA_ERROR_NONE; @@ -692,21 +708,23 @@ struct menu_data menu_ua_users[] = { NULL, run_ua_user_add, NULL }, { "6", "ua_user_remove", NULL, run_ua_user_remove, NULL}, - { "7", "ua_user_get_default_user", + { "7", "ua_user_update", + NULL, run_ua_user_update, NULL}, + { "8", "ua_user_get_default_user", NULL, run_ua_user_get_default_user, NULL }, - { "8", "ua_user_get_handle_by_account", + { "9", "ua_user_get_handle_by_account", menu_ua_user_get_handle_by_account, NULL, NULL }, - { "9", ANSI_COLOR_LIGHTMAGENTA "ua_user_foreach_added" ANSI_COLOR_NORMAL, + { "10", ANSI_COLOR_LIGHTMAGENTA "ua_user_foreach_added" ANSI_COLOR_NORMAL, menu_sel_added_user, NULL, NULL }, - { "10", "ua_user_add_device", + { "11", ANSI_COLOR_LIGHTGREEN "ua_user_add_device" ANSI_COLOR_NORMAL, NULL, run_ua_user_add_device, NULL }, - { "11", "ua_user_remove_device", + { "12", ANSI_COLOR_LIGHTRED "ua_user_remove_device" ANSI_COLOR_NORMAL, NULL, run_ua_user_remove_device, NULL }, - { "12", "ua_user_remove_device_by_device_id", + { "13", "ua_user_remove_device_by_device_id", menu_ua_rm_dev_by_device_id, NULL, NULL }, - { "13", "ua_user_remove_device_by_mac_address", + { "14", "ua_user_remove_device_by_mac_address", menu_ua_rm_dev_by_addr, NULL, NULL }, - { "14", ANSI_COLOR_LIGHTMAGENTA "ua_user_foreach_added_devices" ANSI_COLOR_NORMAL, + { "15", ANSI_COLOR_LIGHTMAGENTA "ua_user_foreach_added_devices" ANSI_COLOR_NORMAL, menu_ua_user_added_devlist, NULL, NULL }, { NULL, NULL, }, }; |