Appmanager(pkginfo view) 29/103229/4
authorRadek Kintop <r.kintop@samsung.com>
Wed, 7 Dec 2016 15:48:08 +0000 (16:48 +0100)
committerRadek Kintop <r.kintop@samsung.com>
Wed, 7 Dec 2016 15:53:28 +0000 (07:53 -0800)
- Some types of applications are not taken into account when making decision
if give the user an option to 'Force close' or not

Change-Id: Ida6b445a3bc0e1dba5e3869069007a89c2b18353
Signed-off-by: Radek Kintop <r.kintop@samsung.com>
setting-appmgr/src/setting-appmgr-pkginfo.c

index fa313387e70ba935348c0467ebaeba850307cf46..48f8e5760c021092a7b3bc24ca14b85e632d69aa 100755 (executable)
@@ -483,11 +483,42 @@ static int appmgr_pkg_cleanup(void *data)
 static bool _app_in_package_info_cb(package_info_app_component_type_e comp_type,
                                        const char *app_id, void *user_data)
 {
+       int ret = 0;
        SettingAppMgr_PkgInfo *pkg = user_data;
+       pkgmgrinfo_appinfo_h handle = NULL;
+       bool autorestart_flag = false;
+       bool taskmanage_flag = false;
 
        retv_if(!pkg, true);
 
-       pkg->apps_in_package = eina_list_append(pkg->apps_in_package,
+       ret = pkgmgrinfo_appinfo_get_appinfo(app_id, &handle);
+       if (PMINFO_R_OK != ret) {
+               SETTING_TRACE_ERROR("pkgmgrinfo_appinfo_get_appinfo()"\
+                               "Fail(%s) for %s",
+                               get_error_message(ret),
+                               app_id);
+               return true;
+       }
+       ret = pkgmgrinfo_appinfo_is_autorestart(handle, &autorestart_flag);
+       if (PMINFO_R_OK != ret) {
+               SETTING_TRACE_ERROR(
+               "pkgmgrinfo_appinfo_is_autorestart()Fail(%s) for %s",
+               get_error_message(ret), app_id);
+               pkgmgrinfo_appinfo_destroy_appinfo(handle);
+               return true;
+       }
+       ret = pkgmgrinfo_appinfo_is_taskmanage(handle, &taskmanage_flag);
+       if (PMINFO_R_OK != ret) {
+               SETTING_TRACE_ERROR(
+               "pkgmgrinfo_appinfo_is_taskmanage()Fail(%s) for %s",
+               get_error_message(ret), app_id);
+               pkgmgrinfo_appinfo_destroy_appinfo(handle);
+               return true;
+       }
+       pkgmgrinfo_appinfo_destroy_appinfo(handle);
+
+       if (!autorestart_flag && taskmanage_flag)
+               pkg->apps_in_package = eina_list_append(pkg->apps_in_package,
                                                strdup(app_id));
        return true;
 }