Implement app signal related with app disable/enable 31/57831/6 accepted/tizen/mobile/20160202.114559 accepted/tizen/mobile/20160203.051927 accepted/tizen/tv/20160202.114649 accepted/tizen/tv/20160203.051944 accepted/tizen/wearable/20160202.114728 accepted/tizen/wearable/20160203.052013 submit/tizen/20160201.060916 submit/tizen/20160202.002216 submit/tizen/20160202.010556 submit/tizen/20160202.023804 submit/tizen/20160203.003555
authorJunghyun Yeon <jungh.yeon@samsung.com>
Mon, 25 Jan 2016 06:14:04 +0000 (15:14 +0900)
committerJunghyun Yeon <jungh.yeon@samsung.com>
Mon, 1 Feb 2016 05:17:34 +0000 (14:17 +0900)
Changes applied at
[pkgmgr-tool][pkgmgr-info][slp-pkgmgr][pkgmgr-server]

Change-Id: I6b667eb5bbbd6394a8fde648670dd22f32279809
Signed-off-by: Junghyun Yeon <jungh.yeon@samsung.com>
parser/pkgmgr_parser_db.c
parser/pkgmgr_parser_db.h
src/pkgmgrinfo_appinfo.c

index 685fdee..f369f46 100644 (file)
@@ -1571,13 +1571,41 @@ static int __delete_manifest_info_from_db(manifest_x *mfx, uid_t uid)
        return 0;
 }
 
+static int __disable_app(const char *appid)
+{
+       int ret = -1;
+       char query[MAX_QUERY_LEN] = {'\0'};
+       sqlite3_snprintf(MAX_QUERY_LEN, query,
+                       "UPDATE package_app_info set app_disable='true' where app_id=%Q",
+                       appid);
+       ret = __exec_query(query);
+       if (ret == -1)
+               _LOGD("Insert global app disable failed\n");
+
+       return ret;
+}
+
+static int __enable_app(const char *appid)
+{
+       int ret = -1;
+       char query[MAX_QUERY_LEN] = {'\0'};
+       sqlite3_snprintf(MAX_QUERY_LEN, query,
+                       "UPDATE package_app_info set app_disable='false' where app_id=%Q",
+                       appid);
+       ret = __exec_query(query);
+       if (ret == -1)
+               _LOGD("Insert global app disable failed\n");
+
+       return ret;
+}
+
 static int __disable_global_app_for_user(const char *appid, uid_t uid)
 {
        int ret = -1;
        char query[MAX_QUERY_LEN] = {'\0'};
 
        sqlite3_snprintf(MAX_QUERY_LEN, query, "INSERT INTO " \
-                       "package_app_disable_for_user(app_id, uid) VALUES(%Q, %Q)",
+                       "package_app_disable_for_user(app_id, uid) VALUES(%Q, '%d')",
                        appid, (int)uid);
        ret = __exec_query(query);
        if (ret == -1)
@@ -1592,7 +1620,7 @@ static int __enable_global_app_for_user(const char *appid, uid_t uid)
        char query[MAX_QUERY_LEN] = {'\0'};
 
        sqlite3_snprintf(MAX_QUERY_LEN, query, "DELETE FROM " \
-                       "package_app_disable_for_user WHERE app_id=%Q AND uid=%Q",
+                       "package_app_disable_for_user WHERE app_id=%Q AND uid='%d'",
                        appid, (int)uid);
        ret = __exec_query(query);
        if (ret == -1)
@@ -2199,7 +2227,7 @@ err:
        return ret;
 }
 
-API int pkgmgr_parser_update_global_app_disable_info_in_db(const char *appid, uid_t uid, int is_disable)
+API int pkgmgr_parser_update_global_app_disable_for_uid_info_in_db(const char *appid, uid_t uid, int is_disable)
 {
        int ret = -1;
 
@@ -2222,7 +2250,54 @@ API int pkgmgr_parser_update_global_app_disable_info_in_db(const char *appid, ui
        else
                ret = __enable_global_app_for_user(appid, uid);
        if (ret == -1) {
-               _LOGD("__update_preload_condition_in_db failed. Rollback now\n");
+               _LOGD("__update_global_app_disable_condition_in_db failed. Rollback now\n");
+               sqlite3_exec(pkgmgr_parser_db, "ROLLBACK", NULL, NULL, NULL);
+               goto err;
+       }
+       /*Commit transaction*/
+       ret = sqlite3_exec(pkgmgr_parser_db, "COMMIT", NULL, NULL, NULL);
+       if (ret != SQLITE_OK) {
+               _LOGD("Failed to commit transaction, Rollback now\n");
+               sqlite3_exec(pkgmgr_parser_db, "ROLLBACK", NULL, NULL, NULL);
+               ret = -1;
+               goto err;
+       }
+       _LOGD("Transaction Commit and End\n");
+err:
+       pkgmgr_parser_close_db();
+       return ret;
+
+}
+
+API int pkgmgr_parser_update_app_disable_info_in_db(const char *appid, int is_disable)
+{
+       return pkgmgr_parser_update_app_disable_info_in_usr_db(appid, GLOBAL_USER, is_disable);
+}
+
+API int pkgmgr_parser_update_app_disable_info_in_usr_db(const char *appid, uid_t uid, int is_disable)
+{
+       int ret = -1;
+
+       ret = pkgmgr_parser_check_and_create_db(uid);
+       if (ret == -1) {
+               _LOGD("Failed to open DB\n");
+               return ret;
+       }
+
+       /*Begin transaction*/
+       ret = sqlite3_exec(pkgmgr_parser_db, "BEGIN EXCLUSIVE", NULL, NULL, NULL);
+       if (ret != SQLITE_OK) {
+               _LOGD("Failed to begin transaction\n");
+               ret = -1;
+               goto err;
+       }
+       _LOGD("Transaction Begin\n");
+       if (is_disable)
+               ret = __disable_app(appid);
+       else
+               ret = __enable_app(appid);
+       if (ret == -1) {
+               _LOGD("__update_app_disable_condition_in_db failed. Rollback now\n");
                sqlite3_exec(pkgmgr_parser_db, "ROLLBACK", NULL, NULL, NULL);
                goto err;
        }
index 9cbe871..33918e4 100644 (file)
@@ -162,7 +162,58 @@ int pkgmgr_parser_delete_manifest_info_from_usr_db(manifest_x *mfx, uid_t uid);
 
 int pkgmgr_parser_update_preload_info_in_db();
 int pkgmgr_parser_update_preload_info_in_usr_db(uid_t uid);
-int pkgmgr_parser_update_global_app_disable_info_in_db(const char *appid, uid_t uid, int is_disable);
+
+/**
+ * @fn int pkgmgr_parser_update_global_app_disable_for_uid_info_in_db(const char *appid, uid_t uid, int is_disable)
+ * @brief      This API updates disable info about global app for user specified by uid
+ *
+ * @par                This API is for package-manager installer backends
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in]  appid   global application ID to be enabled or disabled
+ * @param[in]  uid     the addressee user id of the instruction
+ * @param[in]is_disable        determine enable or disable of app
+ * @return     0 if success, error code(<0) if fail
+ * @pre                None
+ * @post               None
+ * @code
+static int disable_global_app_for_uid(const char *appid, uid_t uid)
+{
+       int ret = 0;
+       ret = pkgmgr_parser_update_global_app_disable_for_uid_info_in_db(appid, uid, 1);
+       if (ret < 0)
+               return -1;
+       return 0;
+}
+ * @endcode
+ */
+int pkgmgr_parser_update_global_app_disable_for_uid_info_in_db(const char *appid, uid_t uid, int is_disable);
+
+/**
+ * @fn int pkgmgr_parser_update_app_disable_info_in_db(const char *appid, int is_disable);
+ * @brief      This API updates disable info about app
+ *
+ * @par                This API is for package-manager installer backends
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in]  appid   application ID to be enabled or disabled
+ * @param[in]is_disable        determine enable or disable of app
+ * @return     0 if success, error code(<0) if fail
+ * @pre                None
+ * @post               None
+ * @code
+static int disable_app(const char *appid)
+{
+       int ret = 0;
+       ret = pkgmgr_parser_update_app_disable_info_in_db(appid, 1);
+       if (ret < 0)
+               return -1;
+       return 0;
+}
+ * @endcode
+ */
+int pkgmgr_parser_update_app_disable_info_in_db(const char *appid, int is_disable);
+int pkgmgr_parser_update_app_disable_info_in_usr_db(const char *appid, uid_t uid, int is_disable);
 
 int pkgmgr_parser_create_and_initialize_db(uid_t uid);
 
index d83e9d6..399b954 100644 (file)
@@ -559,7 +559,7 @@ static int _appinfo_get_application(sqlite3 *db, const char *appid,
                "app_support_disable, "
                "component_type, package, app_process_pool, app_installed_storage, "
                "app_background_category, app_package_type "
-               "FROM package_app_info WHERE app_id='%s' AND app_disable='false' "
+               "FROM package_app_info WHERE app_id='%s' "
                "AND app_id NOT IN "
                "(SELECT app_id from package_app_disable_for_user WHERE uid='%d')";
        int ret;