Add new functions for sending resumption requests 27/224527/4
authorHwankyu Jhun <h.jhun@samsung.com>
Tue, 11 Feb 2020 08:09:53 +0000 (17:09 +0900)
committerHwankyu Jhun <h.jhun@samsung.com>
Wed, 12 Feb 2020 05:00:29 +0000 (14:00 +0900)
Adds:
 - aul_svc_send_resume_request()
 - aul_svc_send_resume_request_for_uid()

Requires:
 - https://review.tizen.org/gerrit/#/c/platform/core/appfw/aul-1/+/224527/
 - https://review.tizen.org/gerrit/#/c/platform/core/appfw/amd/+/224529/
 - https://review.tizen.org/gerrit/#/c/platform/core/api/app-control/+/224549/
 - https://review.tizen.org/gerrit/#/c/platform/core/appfw/widget-viewer/+/224590/

Change-Id: I1725e114d05e6de4a93b4c25baace150ed5ec5a0
Signed-off-by: Hwankyu Jhun <h.jhun@samsung.com>
include/aul_cmd.h
include/aul_svc.h
include/launch.h
src/aul_cmd.c
src/launch.c
src/launch_with_result.c
src/service.c

index b619789..e926a23 100755 (executable)
@@ -175,6 +175,7 @@ enum app_cmd {
        APP_GET_RUNNING_CONTEXT = 136,
        LAUNCHER_SERVICE_NOTIFY_ANIMATION_STARTED = 137,
        LAUNCHER_SERVICE_NOTIFY_ANIMATION_FINISHED = 138,
+       APP_SEND_RESUME_REQUEST = 139,
 
        APP_CMD_MAX
 };
index 7deb549..6895f73 100755 (executable)
@@ -1389,6 +1389,23 @@ const char *aul_svc_get_comp_id(bundle *b);
  */
 int aul_svc_subapp_terminate_request(bundle *b, int pid);
 
+/**
+ * @brief Sends the resumption request asynchronoulsy.
+ * @since_tizen 5.5
+ *
+ * @param[in]   b               The bundle object
+ * @param[in]   request code    The request code
+ * @param[in]   err_cb          The result callback function
+ * @param[in]   user_data       The user data to be passed to the callback function
+ *
+ * @return      @c 0 on success,
+ *              otherwise a negative error value
+ */
+int aul_svc_send_resume_request(bundle *b, int request_code,
+               aul_svc_err_cb err_cb, void *user_data);
+int aul_svc_send_resume_request_for_uid(bundle *b, int request_code,
+               aul_svc_err_cb err_cb, void *user_data, uid_t uid);
+
 #ifdef __cplusplus
 }
 #endif
index 789efa8..be5ca59 100644 (file)
@@ -53,3 +53,5 @@ int aul_send_launch_request_sync_for_uid(const char *appid, bundle *b,
                uid_t uid, bundle **res_b);
 int app_request_local(int cmd, bundle *kb);
 int aul_subapp_terminate_request(const char *instance_id, int pid);
+int aul_send_resume_request_for_uid(const char *appid, bundle *b, uid_t uid,
+               void (*error_cb)(int, void *), void *user_data);
index 0535a14..5cf98e7 100755 (executable)
@@ -302,6 +302,8 @@ API const char *aul_cmd_convert_to_string(int cmd)
                return "LAUNCHER_SERVICE_NOTIFY_ANIMATION_STARTED";
        case LAUNCHER_SERVICE_NOTIFY_ANIMATION_FINISHED:
                return "LAUNCHER_SERVICE_NOTIFY_ANIMATION_FINISHED";
+       case APP_SEND_RESUME_REQUEST:
+               return "APP_SEND_RESUME_REQUEST";
        default:
                return "CUSTOM_COMMAND";
        }
index 355debf..08b03d3 100755 (executable)
@@ -206,6 +206,7 @@ int app_request_local(int cmd, bundle *kb)
        case APP_RESUME:
        case APP_RESUME_BY_PID:
        case APP_RESUME_BY_PID_ASYNC:
+       case APP_SEND_RESUME_REQUEST:
                return aul_resume_local();
        default:
                _E("no support packet");
@@ -252,6 +253,7 @@ int app_request_to_launchpad_for_uid(int cmd, const char *appid, bundle *kb, uid
                break;
        case APP_SEND_LAUNCH_REQUEST:
        case APP_SEND_LAUNCH_REQUEST_SYNC:
+       case APP_SEND_RESUME_REQUEST:
                ret = __send_cmd_async_for_uid_opt(AUL_UTIL_PID,
                                uid, cmd, kb, AUL_SOCK_QUEUE);
                break;
index 9df99c6..6d115be 100644 (file)
 
 #include "aul.h"
 #include "aul_api.h"
+#include "aul_error.h"
 #include "aul_sock.h"
-#include "aul_util.h"
 #include "aul_svc.h"
-#include "aul_error.h"
+#include "aul_util.h"
 #include "launch.h"
 
 typedef struct _aul_error_info_t {
@@ -776,7 +776,8 @@ static int __aul_error_info_add_watch(int fd, aul_error_info_t *info)
        return 0;
 }
 
-API int aul_send_launch_request_for_uid(const char *appid, bundle *b, uid_t uid,
+static  int __send_request_with_callback(int cmd, const char *appid, bundle *b,
+               uid_t uid,
                void (*reply_cb)(bundle *b, int, void *),
                void (*error_cb)(int, void *),
                void *user_data)
@@ -818,7 +819,7 @@ API int aul_send_launch_request_for_uid(const char *appid, bundle *b, uid_t uid,
                __push_aul_reply_info(r_info);
        }
 
-       fd = app_request_to_launchpad_for_uid(APP_SEND_LAUNCH_REQUEST,
+       fd = app_request_to_launchpad_for_uid(cmd,
                        appid, b, uid);
        if (fd < 0 || fd > sysconf(_SC_OPEN_MAX)) {
                _E("Failed to send launch request. appid(%s), result(%d)",
@@ -832,7 +833,7 @@ API int aul_send_launch_request_for_uid(const char *appid, bundle *b, uid_t uid,
                return AUL_R_ECOMM;
        }
 
-       info = __create_aul_error_info(seq_num ,b, APP_SEND_LAUNCH_REQUEST,
+       info = __create_aul_error_info(seq_num ,b, cmd,
                        error_cb, user_data);
        if (!info) {
                _E("Failed to create error info");
@@ -861,6 +862,19 @@ API int aul_send_launch_request_for_uid(const char *appid, bundle *b, uid_t uid,
        return AUL_R_OK;
 }
 
+API int aul_send_launch_request_for_uid(const char *appid, bundle *b, uid_t uid,
+               void (*reply_cb)(bundle *, int, void *),
+               void (*error_cb)(int, void *),
+               void *user_data)
+{
+       int ret;
+
+       ret = __send_request_with_callback(APP_SEND_LAUNCH_REQUEST, appid, b,
+                       uid, reply_cb, error_cb, user_data);
+
+       return ret;
+}
+
 static int __send_launch_request(const char *appid, bundle *b, uid_t uid)
 {
        char *seq_num;
@@ -947,3 +961,14 @@ API int aul_send_launch_request_sync_for_uid(const char *appid, bundle *b,
 
        return __recv_reply_bundle(fd, res_b);
 }
+
+API int aul_send_resume_request_for_uid(const char *appid, bundle *b, uid_t uid,
+               void (*error_cb)(int, void *), void *user_data)
+{
+       int ret;
+
+       ret = __send_request_with_callback(APP_SEND_RESUME_REQUEST, appid, b,
+                       uid, NULL, error_cb, user_data);
+
+       return ret;
+}
index e92d769..ace56f2 100755 (executable)
@@ -2236,3 +2236,43 @@ API int aul_svc_subapp_terminate_request(bundle *b, int pid)
 
        return aul_app_group_clear_top();
 }
+
+API int aul_svc_send_resume_request(bundle *b, int request_code,
+               aul_svc_err_cb err_cb, void *user_data)
+{
+       int ret;
+
+       ret = aul_svc_send_resume_request_for_uid(b, request_code,
+                       err_cb, user_data, getuid());
+       return ret;
+}
+
+API int aul_svc_send_resume_request_for_uid(bundle *b, int request_code,
+               aul_svc_err_cb err_cb, void *user_data, uid_t uid)
+{
+       aul_svc_cb_info_t *cb_info;
+       char *appid = NULL;
+       int ret;
+
+       if (!b || !err_cb) {
+               _E("Invalid parameter");
+               return AUL_SVC_RET_EINVAL;
+       }
+
+       ret = __get_appid(b, uid, &appid);
+       if (ret != AUL_SVC_RET_OK) {
+               _E("Failed to get appid");
+               return ret;
+       }
+
+       cb_info = __create_rescb(request_code, NULL, err_cb, user_data);
+       ret = aul_send_resume_request_for_uid(appid, b, uid, __aul_error_cb,
+                       cb_info);
+       if (ret < 0) {
+               __remove_rescb(cb_info);
+               ret = __error_convert(ret);
+       }
+       free(appid);
+
+       return ret;
+}