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)
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)
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;
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;
}
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);