From: Changgyu Choi Date: Mon, 25 Oct 2021 06:55:09 +0000 (+0900) Subject: Add prelaunch callback X-Git-Tag: submit/tizen/20211028.054000~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7ca0d1918da2cbbe0dc0fd14b9e0e108f1bbc985;p=platform%2Fcore%2Fappfw%2Flaunchpad.git Add prelaunch callback prelaunch callback is called to before being called security_manager_prepare_app() Change-Id: Ib658ed698966dd4a7cd063bf3316e6f37dacca18 Signed-off-by: Changgyu Choi --- diff --git a/src/app-defined-loader/src/app-defined-loader.cc b/src/app-defined-loader/src/app-defined-loader.cc index 3fe7085..4ae4471 100644 --- a/src/app-defined-loader/src/app-defined-loader.cc +++ b/src/app-defined-loader/src/app-defined-loader.cc @@ -54,6 +54,7 @@ class AppDefinedLoader { AppDefinedLoader(int argc, char** argv) : argc_(argc), argv_(argv) { lifecycle_cb_ = std::make_shared(); lifecycle_cb_->create = OnCreate; + lifecycle_cb_->prelaunch = nullptr; lifecycle_cb_->launch = OnLaunch; lifecycle_cb_->terminate = OnTerminate; diff --git a/src/lib/launchpad/inc/launchpad.h b/src/lib/launchpad/inc/launchpad.h index 7d20175..86ea976 100644 --- a/src/lib/launchpad/inc/launchpad.h +++ b/src/lib/launchpad/inc/launchpad.h @@ -24,6 +24,9 @@ extern "C" { #endif typedef void (*loader_create_cb)(bundle *extra, int type, void *user_data); +typedef int (*loader_prelaunch_cb)(int argc, char **argv, const char *app_path, + const char *appid, const char *pkgid, const char *pkg_type, + void *user_data); typedef int (*loader_launch_cb)(int argc, char **argv, const char *app_path, const char *appid, const char *pkgid, const char *pkg_type, void *user_data); @@ -38,6 +41,7 @@ typedef void (*loader_remove_fd_cb)(void *user_data, int fd); typedef struct { loader_create_cb create; + loader_prelaunch_cb prelaunch; loader_launch_cb launch; loader_terminate_cb terminate; } loader_lifecycle_callback_s; diff --git a/src/lib/launchpad/src/launchpad_lib.c b/src/lib/launchpad/src/launchpad_lib.c index 05fa2c3..c4e7a95 100644 --- a/src/lib/launchpad/src/launchpad_lib.c +++ b/src/lib/launchpad/src/launchpad_lib.c @@ -251,6 +251,17 @@ static int __candidate_process_launchpad_main_loop(app_pkt_t *pkt, tmp_argv = _create_argc_argv(kb, &tmp_argc); + if (__loader_callbacks->prelaunch) { + ret = __loader_callbacks->prelaunch(tmp_argc, tmp_argv, + app_path, menu_info->appid, menu_info->pkgid, + menu_info->pkg_type, __loader_user_data); + + if (ret < 0) { + _E("prelaunch callback fail (%d)", ret); + exit(-1); + } + } + __default_launch_cb(kb, menu_info->appid, app_path, menu_info->root_path, menu_info->pkgid, menu_info->pkg_type, type, menu_info->global);