if (pkgmgr_installer_set_uid(pi, uid))
goto catch;
- if (req_type == PKGMGR_REQUEST_TYPE_ENABLE_GLOBAL_APP_FOR_UID
- || req_type == PKGMGR_REQUEST_TYPE_ENABLE_APP) {
+
+ switch (req_type) {
+ case PKGMGR_REQUEST_TYPE_ENABLE_GLOBAL_APP_FOR_UID:
+ case PKGMGR_REQUEST_TYPE_ENABLE_APP:
if (pkgmgr_installer_set_request_type(pi, PKGMGR_REQ_ENABLE_APP))
goto catch;
- } else if (req_type == PKGMGR_REQUEST_TYPE_DISABLE_GLOBAL_APP_FOR_UID
- || req_type == PKGMGR_REQUEST_TYPE_DISABLE_APP) {
+ break;
+ case PKGMGR_REQUEST_TYPE_DISABLE_GLOBAL_APP_FOR_UID:
+ case PKGMGR_REQUEST_TYPE_DISABLE_APP:
if (pkgmgr_installer_set_request_type(pi, PKGMGR_REQ_DISABLE_APP))
goto catch;
- } else {
+ break;
+ case PKGMGR_REQUEST_TYPE_ENABLE_APP_SPLASH_SCREEN:
+ if (pkgmgr_installer_set_request_type(pi, PKGMGR_REQ_ENABLE_APP_SPLASH_SCREEN))
+ goto catch;
+ break;
+ case PKGMGR_REQUEST_TYPE_DISABLE_APP_SPLASH_SCREEN:
+ if (pkgmgr_installer_set_request_type(pi, PKGMGR_REQ_DISABLE_APP_SPLASH_SCREEN))
+ goto catch;
+ break;
+ default:
DBG("Unsupported req_type[%d]", req_type);
goto catch;
}
return pid;
}
-static int __change_item_info(pm_dbus_msg *item, uid_t uid)
+static int __change_item_info(pm_dbus_msg *item, uid_t uid, bool *is_global)
{
int ret = 0;
char *pkgid = NULL;
- bool is_global = false;
pkgmgrinfo_appinfo_h handle = NULL;
switch (item->req_type) {
case PKGMGR_REQUEST_TYPE_DISABLE_APP:
case PKGMGR_REQUEST_TYPE_DISABLE_GLOBAL_APP_FOR_UID:
+ case PKGMGR_REQUEST_TYPE_ENABLE_APP_SPLASH_SCREEN:
+ case PKGMGR_REQUEST_TYPE_DISABLE_APP_SPLASH_SCREEN:
ret = pkgmgrinfo_appinfo_get_usr_appinfo(item->pkgid, uid, &handle);
- break;
-
+ break;
case PKGMGR_REQUEST_TYPE_ENABLE_APP:
case PKGMGR_REQUEST_TYPE_ENABLE_GLOBAL_APP_FOR_UID:
ret = pkgmgrinfo_appinfo_get_usr_disabled_appinfo(item->pkgid, uid, &handle);
- break;
-
+ break;
default:
return PMINFO_R_ERROR;
}
if (ret != PMINFO_R_OK)
return PMINFO_R_ERROR;
- ret = pkgmgrinfo_appinfo_is_global(handle, &is_global);
+ ret = pkgmgrinfo_appinfo_is_global(handle, is_global);
if (ret != PMINFO_R_OK)
goto catch;
if ((item->req_type == PKGMGR_REQUEST_TYPE_DISABLE_APP
|| item->req_type == PKGMGR_REQUEST_TYPE_ENABLE_APP)
- && is_global) {
+ && *is_global) {
ret = PMINFO_R_ERROR;
goto catch;
} else if ((item->req_type == PKGMGR_REQUEST_TYPE_DISABLE_GLOBAL_APP_FOR_UID
|| item->req_type == PKGMGR_REQUEST_TYPE_ENABLE_GLOBAL_APP_FOR_UID)
- && !is_global) {
+ && !*is_global) {
ret = PMINFO_R_ERROR;
goto catch;
}
goto catch;
strncpy(item->appid, item->pkgid, sizeof(item->pkgid) - 1);
- memset((item->pkgid),0,MAX_PKG_NAME_LEN);
+ memset((item->pkgid), 0, MAX_PKG_NAME_LEN);
strncpy(item->pkgid, pkgid, sizeof(item->pkgid) - 1);
catch:
static int __process_enable_app(pm_dbus_msg *item)
{
int ret = -1;
+ bool is_global = false;
__send_app_signal(item->uid, item->req_id, item->pkgid, item->pkgid,
PKGMGR_INSTALLER_START_KEY_STR,
PKGMGR_INSTALLER_APP_ENABLE_EVENT_STR, item->req_type);
/* get actual pkgid and replace it to appid which is currently stored at pkgid variable */
- ret = __change_item_info(item, item->uid);
+ ret = __change_item_info(item, item->uid, &is_global);
if (ret != PMINFO_R_OK || strlen(item->appid) == 0) {
__send_app_signal(item->uid, item->req_id, item->pkgid, item->pkgid,
PKGMGR_INSTALLER_END_KEY_STR, PKGMGR_INSTALLER_FAIL_EVENT_STR,
static int __process_disable_app(pm_dbus_msg *item)
{
int ret = -1;
+ bool is_global = false;
__send_app_signal(item->uid, item->req_id, item->pkgid, item->pkgid,
PKGMGR_INSTALLER_START_KEY_STR,
PKGMGR_INSTALLER_APP_DISABLE_EVENT_STR, item->req_type);
/* get actual pkgid and replace it to appid which is currently stored at pkgid variable */
- ret = __change_item_info(item, item->uid);
+ ret = __change_item_info(item, item->uid, &is_global);
if (ret != PMINFO_R_OK || strlen(item->appid) == 0) {
__send_app_signal(item->uid, item->req_id, item->pkgid, item->pkgid,
PKGMGR_INSTALLER_END_KEY_STR, PKGMGR_INSTALLER_FAIL_EVENT_STR,
static int __process_enable_global_app_for_uid(pm_dbus_msg *item)
{
int ret = -1;
+ bool is_global = true;
__send_app_signal(item->uid, item->req_id, item->pkgid, item->pkgid,
PKGMGR_INSTALLER_START_KEY_STR,
PKGMGR_INSTALLER_GLOBAL_APP_ENABLE_FOR_UID, item->req_type);
/* get actual pkgid and replace it to appid which is currently stored at pkgid variable */
- ret = __change_item_info(item, item->uid);
+ ret = __change_item_info(item, item->uid, &is_global);
if (ret != PMINFO_R_OK || strlen(item->appid) == 0) {
__send_app_signal(item->uid, item->req_id, item->pkgid, item->pkgid,
PKGMGR_INSTALLER_END_KEY_STR, PKGMGR_INSTALLER_FAIL_EVENT_STR,
static int __process_disable_global_app_for_uid(pm_dbus_msg *item)
{
int ret = -1;
+ bool is_global = true;
__send_app_signal(item->uid, item->req_id,
item->pkgid, item->pkgid,
PKGMGR_INSTALLER_GLOBAL_APP_DISABLE_FOR_UID, item->req_type);
/* get actual pkgid and replace it to appid which is currently stored at pkgid variable */
- ret = __change_item_info(item, GLOBAL_USER);
+ ret = __change_item_info(item, GLOBAL_USER, &is_global);
if (ret != PMINFO_R_OK || strlen(item->appid) == 0) {
__send_app_signal(item->uid, item->req_id, item->pkgid, item->pkgid,
PKGMGR_INSTALLER_END_KEY_STR, PKGMGR_INSTALLER_FAIL_EVENT_STR,
return ret;
}
+static int __process_update_app_splash_screen(pm_dbus_msg *item, int flag)
+{
+ int ret;
+ bool is_global = false;
+ const char *val;
+
+ ret = __change_item_info(item, item->uid, &is_global);
+ if (ret != PMINFO_R_OK || strlen(item->appid) == 0)
+ return -1;
+
+ val = flag ? PKGMGR_INSTALLER_APP_ENABLE_SPLASH_SCREEN_EVENT_STR :
+ PKGMGR_INSTALLER_APP_DISABLE_SPLASH_SCREEN_EVENT_STR;
+ __send_app_signal(item->uid, item->req_id, item->pkgid, item->appid,
+ PKGMGR_INSTALLER_START_KEY_STR, val, item->req_type);
+
+ if (is_global)
+ ret = pkgmgr_parser_update_global_app_splash_screen_display_info_in_usr_db(
+ item->appid, item->uid, flag);
+ else
+ ret = pkgmgr_parser_update_app_splash_screen_display_info_in_usr_db(
+ item->appid, item->uid, flag);
+ if (ret != PMINFO_R_OK)
+ __send_app_signal(item->uid, item->req_id, item->pkgid,
+ item->appid, PKGMGR_INSTALLER_END_KEY_STR,
+ PKGMGR_INSTALLER_FAIL_EVENT_STR,
+ item->req_type);
+ else
+ __send_app_signal(item->uid, item->req_id, item->pkgid,
+ item->appid, PKGMGR_INSTALLER_END_KEY_STR,
+ PKGMGR_INSTALLER_OK_EVENT_STR,
+ item->req_type);
+
+ return ret;
+}
+
gboolean queue_job(void *data)
{
pm_dbus_msg *item = NULL;
case PKGMGR_REQUEST_TYPE_CHECK_BLACKLIST:
ret = __process_check_blacklist(item);
break;
+ case PKGMGR_REQUEST_TYPE_ENABLE_APP_SPLASH_SCREEN:
+ ret = __process_update_app_splash_screen(item, 1);
+ break;
+ case PKGMGR_REQUEST_TYPE_DISABLE_APP_SPLASH_SCREEN:
+ ret = __process_update_app_splash_screen(item, 0);
+ break;
default:
ret = -1;
break;
" <arg type='i' name='result' direction='out'/>"
" <arg type='i' name='ret' direction='out'/>"
" </method>"
+ " <method name='enable_app_splash_screen'>"
+ " <arg type='u' name='uid' direction='in'/>"
+ " <arg type='s' name='appid' direction='in'/>"
+ " <arg type='i' name='ret' direction='out'/>"
+ " </method>"
+ " <method name='disable_app_splash_screen'>"
+ " <arg type='u' name='uid' direction='in'/>"
+ " <arg type='s' name='appid' direction='in'/>"
+ " <arg type='i' name='ret' direction='out'/>"
+ " </method>"
" </interface>"
"</node>";
static GDBusNodeInfo *instropection_data;
return 0;
}
+
+static int __update_app_splash_screen(uid_t uid,
+ GDBusMethodInvocation *invocation, GVariant *parameters,
+ int req_type)
+{
+ uid_t target_uid = (uid_t)-1;
+ char *appid = NULL;
+ char *reqkey;
+
+ g_variant_get(parameters, "(u&s)", &target_uid, &appid);
+ if (target_uid == (uid_t)-1 || appid == NULL) {
+ ERR("target_uid: %d, appid: %s", target_uid, appid);
+ g_dbus_method_invocation_return_value(invocation,
+ g_variant_new("(i)", PKGMGR_R_ECOMM));
+ return -1;
+ }
+
+ reqkey = __generate_reqkey(appid);
+ if (reqkey == NULL) {
+ ERR("Failed to generate request key");
+ return -1;
+ }
+
+ if (_pm_queue_push(target_uid, reqkey, req_type, "default",
+ appid, "")) {
+ ERR("Failed to push request");
+ g_dbus_method_invocation_return_value(invocation,
+ g_variant_new("(i)", PKGMGR_R_ESYSTEM));
+ free(reqkey);
+ return -1;
+ }
+
+ g_dbus_method_invocation_return_value(invocation,
+ g_variant_new("(i)", PKGMGR_R_OK));
+
+ if (reqkey)
+ free(reqkey);
+
+ return 0;
+}
+
+static int __handle_request_enable_app_splash_screen(uid_t uid,
+ GDBusMethodInvocation *invocation, GVariant *parameters)
+{
+ return __update_app_splash_screen(uid, invocation, parameters,
+ PKGMGR_REQUEST_TYPE_ENABLE_APP_SPLASH_SCREEN);
+}
+
+static int __handle_request_disable_app_splash_screen(uid_t uid,
+ GDBusMethodInvocation *invocation, GVariant *parameters)
+{
+ return __update_app_splash_screen(uid, invocation, parameters,
+ PKGMGR_REQUEST_TYPE_DISABLE_APP_SPLASH_SCREEN);
+}
+
static uid_t __get_caller_uid(GDBusConnection *connection, const char *name)
{
GError *err = NULL;
else if (g_strcmp0(method_name, "check_blacklist") == 0)
ret = __handle_request_check_blacklist(uid, invocation,
parameters);
+ else if (g_strcmp0(method_name, "disable_app_splash_screen") == 0)
+ ret = __handle_request_disable_app_splash_screen(uid,
+ invocation, parameters);
+ else if (g_strcmp0(method_name, "enable_app_splash_screen") == 0)
+ ret = __handle_request_enable_app_splash_screen(uid,
+ invocation, parameters);
else
ret = -1;