From b06bbd39eefc3a81d9deaace29c65ce9d9081e1f Mon Sep 17 00:00:00 2001 From: Junghyun Yeon Date: Mon, 21 May 2018 16:09:45 +0900 Subject: [PATCH] Add privilege filter for app info - This patch will enable filtering app list with pkg privilege. Change-Id: I46e3cee50991a2a2a6043a85be2ffafc3b296321 Signed-off-by: Junghyun Yeon --- include/pkgmgr-info.h | 2 ++ src/pkgmgrinfo_appinfo.c | 5 +++++ src/pkgmgrinfo_private.c | 7 ++++++- src/pkgmgrinfo_private.h | 4 +++- 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/include/pkgmgr-info.h b/include/pkgmgr-info.h index fe251f1..71247de 100644 --- a/include/pkgmgr-info.h +++ b/include/pkgmgr-info.h @@ -143,6 +143,8 @@ extern "C" { #define PMINFO_APPINFO_PROP_APP_PACKAGE "PMINFO_APPINFO_PROP_APP_PACKAGE" /** String property for filtering based on app info*/ #define PMINFO_APPINFO_PROP_APP_INSTALLED_STORAGE "PMINFO_APPINFO_PROP_APP_INSTALLED_STORAGE" + /** String property for filtering based on app info*/ +#define PMINFO_APPINFO_PROP_PRIVILEGE "PMINFO_APPINFO_PROP_PRIVILEGE" /** Integer property for filtering app support mode */ #define PMINFO_APPINFO_PROP_APP_SUPPORT_MODE "PMINFO_APPINFO_PROP_APP_SUPPORT_MODE" diff --git a/src/pkgmgrinfo_appinfo.c b/src/pkgmgrinfo_appinfo.c index 48b041c..f05c371 100644 --- a/src/pkgmgrinfo_appinfo.c +++ b/src/pkgmgrinfo_appinfo.c @@ -52,6 +52,9 @@ static const char join_app_control[] = static const char join_metadata[] = " LEFT OUTER JOIN package_app_app_metadata" " ON ai.app_id=package_app_app_metadata.app_id "; +static const char join_privilege[] = + " LEFT OUTER JOIN package_privilege_info" + " ON ai.package=package_privilege_info.package "; static int _get_filtered_query(pkgmgrinfo_filter_x *filter, const char *locale, uid_t uid, char **query, GList **bind_params) @@ -104,6 +107,8 @@ static int _get_filtered_query(pkgmgrinfo_filter_x *filter, strncat(tmp_query, join_app_control, sizeof(tmp_query) - strlen(tmp_query) - 1); if (joined & E_PMINFO_APPINFO_JOIN_METADATA) strncat(tmp_query, join_metadata, sizeof(tmp_query) - strlen(tmp_query) - 1); + if (joined & E_PMINFO_APPINFO_JOIN_PRIVILEGE) + strncat(tmp_query, join_privilege, sizeof(tmp_query) - strlen(tmp_query) - 1); strncat(tmp_query, buf, sizeof(tmp_query) - strlen(tmp_query) - 1); diff --git a/src/pkgmgrinfo_private.c b/src/pkgmgrinfo_private.c index 1bad2d0..ce7cca6 100644 --- a/src/pkgmgrinfo_private.c +++ b/src/pkgmgrinfo_private.c @@ -100,7 +100,8 @@ static struct _appinfo_str_map_t appinfo_str_prop_map[] = { {E_PMINFO_APPINFO_PROP_APP_HWACCELERATION, PMINFO_APPINFO_PROP_APP_HWACCELERATION}, {E_PMINFO_APPINFO_PROP_APP_SCREENREADER, PMINFO_APPINFO_PROP_APP_SCREENREADER}, {E_PMINFO_APPINFO_PROP_APP_PACKAGE, PMINFO_APPINFO_PROP_APP_PACKAGE}, - {E_PMINFO_APPINFO_PROP_APP_INSTALLED_STORAGE, PMINFO_APPINFO_PROP_APP_INSTALLED_STORAGE} + {E_PMINFO_APPINFO_PROP_APP_INSTALLED_STORAGE, PMINFO_APPINFO_PROP_APP_INSTALLED_STORAGE}, + {E_PMINFO_APPINFO_PROP_PRIVILEGE, PMINFO_APPINFO_PROP_PRIVILEGE} }; struct _appinfo_int_map_t { @@ -417,6 +418,10 @@ int __get_filter_condition(gpointer data, uid_t uid, char **condition, GList **p case E_PMINFO_APPINFO_PROP_APP_CHECK_STORAGE: *condition = NULL; return 0; + case E_PMINFO_APPINFO_PROP_PRIVILEGE: + snprintf(buf, sizeof(buf), "package_privilege_info.privilege=?"); + flag = E_PMINFO_APPINFO_JOIN_PRIVILEGE; + break; default: _LOGE("Invalid Property Type\n"); *condition = NULL; diff --git a/src/pkgmgrinfo_private.h b/src/pkgmgrinfo_private.h index 7cfaa89..9d581b5 100644 --- a/src/pkgmgrinfo_private.h +++ b/src/pkgmgrinfo_private.h @@ -128,7 +128,8 @@ typedef enum _pkgmgrinfo_appinfo_filter_prop_str { E_PMINFO_APPINFO_PROP_APP_SCREENREADER, E_PMINFO_APPINFO_PROP_APP_PACKAGE, E_PMINFO_APPINFO_PROP_APP_INSTALLED_STORAGE, - E_PMINFO_APPINFO_PROP_APP_MAX_STR = E_PMINFO_APPINFO_PROP_APP_INSTALLED_STORAGE + E_PMINFO_APPINFO_PROP_PRIVILEGE, + E_PMINFO_APPINFO_PROP_APP_MAX_STR = E_PMINFO_APPINFO_PROP_PRIVILEGE } pkgmgrinfo_appinfo_filter_prop_str; /*Boolean properties for filtering based on app info*/ @@ -174,6 +175,7 @@ typedef enum _pkgmgrinfo_appinfo_join_flag { E_PMINFO_APPINFO_JOIN_CATEGORY = 0x0002, E_PMINFO_APPINFO_JOIN_APP_CONTROL = 0x0004, E_PMINFO_APPINFO_JOIN_METADATA = 0x0008, + E_PMINFO_APPINFO_JOIN_PRIVILEGE = 0x0010, } pkgmgrinfo_appinfo_join_flag; typedef enum _pkgmgrinfo_appinfo_disable_type { -- 2.7.4