From: Hwankyu Jhun Date: Wed, 24 Feb 2021 04:48:01 +0000 (+0900) Subject: Fix aul_forward_app function X-Git-Tag: accepted/tizen/unified/20210226.132000~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=68fc94e76730fd8e9622725494fd89d77294503b;p=platform%2Fcore%2Fappfw%2Faul-1.git Fix aul_forward_app function Before sending the launch request, the function sets a new instance ID. Change-Id: Ie48e2b0489f507ea90c1e057d9fdcfa5d4f01074 Signed-off-by: Hwankyu Jhun --- diff --git a/src/launch.h b/src/launch.h index 5a2eb61..9194da6 100644 --- a/src/launch.h +++ b/src/launch.h @@ -55,3 +55,4 @@ int app_request_local(int cmd, bundle *kb); int aul_subapp_terminate_request(const char *instance_id, int pid); int aul_send_resume_request_for_uid(const char *appid, bundle *b, uid_t uid, void (*error_cb)(int, void *), void *user_data); +void aul_set_instance_info(const char *app_id, bundle *kb); diff --git a/src/launch_with_result.c b/src/launch_with_result.c index d3c089b..5e03462 100644 --- a/src/launch_with_result.c +++ b/src/launch_with_result.c @@ -26,12 +26,14 @@ #include #include #include +#include #include "aul.h" #include "aul_api.h" #include "aul_error.h" #include "aul_sock.h" #include "aul_svc.h" +#include "aul_svc_priv_key.h" #include "aul_util.h" #include "launch.h" @@ -393,12 +395,35 @@ static int __set_caller_info(bundle *kb) return AUL_R_OK; } +void aul_set_instance_info(const char *app_id, bundle *kb) +{ + const char *component_id; + char buf[1024]; + char uuid[37]; + uuid_t u; + + uuid_generate(u); + uuid_unparse(u, uuid); + + component_id = bundle_get_val(kb, AUL_K_COMPONENT_ID); + if (component_id) { + snprintf(buf, sizeof(buf), "%s:%s:%s", + uuid, app_id, component_id); + } else { + snprintf(buf, sizeof(buf), "%s:%s", uuid, app_id); + } + + bundle_del(kb, AUL_K_INSTANCE_ID); + bundle_add(kb, AUL_K_INSTANCE_ID, buf); +} + API int aul_forward_app(const char* pkgname, bundle *kb) { int ret; bundle *dupb; bundle *outb; char tmp_pid[MAX_PID_STR_BUFSZ]; + const char *launch_mode; if (pkgname == NULL || kb == NULL) return AUL_R_EINVAL; @@ -410,6 +435,10 @@ API int aul_forward_app(const char* pkgname, bundle *kb) bundle_del(kb, AUL_SVC_K_REROUTE); bundle_del(kb, AUL_SVC_K_RECYCLE); + launch_mode = bundle_get_val(kb, AUL_SVC_K_LAUNCH_MODE); + if (launch_mode && !strcmp(launch_mode, "group")) + aul_set_instance_info(pkgname, kb); + dupb = bundle_dup(kb); if (dupb == NULL) { _E("bundle duplicate fail"); diff --git a/src/service.c b/src/service.c index 6577718..87c4844 100755 --- a/src/service.c +++ b/src/service.c @@ -276,25 +276,6 @@ static void __aul_error_cb(int err, void *data) __remove_rescb(cb_info); } -static void __set_instance_id(bundle *b, const char *appid) -{ - const char *comp_id; - char buf[1024]; - char uuid[37]; - uuid_t u; - - uuid_generate(u); - uuid_unparse(u, uuid); - - comp_id = bundle_get_val(b, AUL_K_COMPONENT_ID); - if (comp_id) - snprintf(buf, sizeof(buf), "%s:%s:%s", uuid, appid, comp_id); - else - snprintf(buf, sizeof(buf), "%s:%s", uuid, appid); - - bundle_add(b, AUL_K_INSTANCE_ID, buf); -} - static void __verify_request(bundle *b, char **appid) { const char *launch_mode; @@ -322,7 +303,7 @@ static void __verify_request(bundle *b, char **appid) if (launch_mode && !strcmp(launch_mode, "group")) { ret = bundle_get_type(b, AUL_K_INSTANCE_ID); if (ret == BUNDLE_TYPE_NONE) - __set_instance_id(b, *appid); + aul_set_instance_info(*appid, b); } }