Receive error code from provider 26/149326/2 accepted/tizen_3.0_common accepted/tizen_3.0_mobile accepted/tizen_3.0_tv accepted/tizen_3.0_wearable accepted/tizen/3.0/common/20171013.190649 accepted/tizen/3.0/mobile/20171013.121046 accepted/tizen/3.0/tv/20171013.121105 accepted/tizen/3.0/wearable/20171013.121124 submit/tizen_3.0/20171011.073910
authorJunghoon Park <jh9216.park@samsung.com>
Tue, 12 Sep 2017 05:48:36 +0000 (14:48 +0900)
committerJunghoon Park <jh9216.park@samsung.com>
Tue, 12 Sep 2017 08:48:33 +0000 (17:48 +0900)
- Require:
  https://review.tizen.org/gerrit/#/c/149321/

Change-Id: Id27334ebacbe0e228642b3b4f2007620b186aad8
Signed-off-by: Junghoon Park <jh9216.park@samsung.com>
include/widget_instance.h
src/widget_instance.c

index f33ff5c3ace1c9566f24a31253b14b792a95153b..f3e7c296dd4da5ec5edfbfdd90dcfc153f6096dc 100644 (file)
@@ -62,6 +62,7 @@ int widget_instance_get_content(widget_instance_h instance, char **content);
 int widget_instance_get_width(widget_instance_h instance, int *w);
 int widget_instance_get_height(widget_instance_h instance, int *h);
 int widget_instance_get_period(widget_instance_h instance, double *period);
+int widget_instance_get_error_code(widget_instance_h instance, int *err);
 
 int widget_instance_create(const char *widget_id, char **instance_id);
 int widget_instance_launch(const char *instance_id, char *content_info, int w, int h);
index a46551bb33576e80e5f9a33e248c92eff6512879..4062721ed7cd8c9740cee53f97c4a2844bbd0de3 100644 (file)
@@ -69,6 +69,7 @@ struct _widget_instance {
        int status;
        int stored;
        int ref;
+       int err;
 };
 
 struct widget_app {
@@ -222,6 +223,7 @@ static struct _widget_instance *__add_instance(const char *id, const char *widge
        instance->content_info = NULL;
        instance->ref = 0;
        instance->period = period;
+       instance->err = 0;
 
        _widget_instances = g_list_append(_widget_instances, instance);
 
@@ -792,7 +794,8 @@ static int __connect_status_handler()
        return 0;
 }
 
-static int __widget_instance_handler(int status, char *widget_id, char *instance_id, char *content_info)
+static int __widget_instance_handler(int status, char *widget_id,
+               char *instance_id, char *content_info, int err)
 {
 
        struct _widget_instance *instance;
@@ -839,6 +842,7 @@ static int __widget_instance_handler(int status, char *widget_id, char *instance
                break;
        case WIDGET_INSTANCE_EVENT_CREATE_ABORTED:
                instance->pid = -1;
+               instance->err = err;
                break;
        default:
                _E("unknown status: %d", status);
@@ -857,12 +861,14 @@ static int __widget_handler(const char *viewer_id, aul_app_com_result_e e, bundl
 {
        char *widget_id = NULL;
        char *instance_id = NULL;
+       char *error_code = NULL;
        int *status = NULL;
        size_t status_sz = 0;
        char *content_info = NULL;
        char *sender_pid_str = NULL;
        int sender_pid;
        int ret;
+       int err = 0;
 
        bundle_get_str(envelope, AUL_K_WIDGET_ID, &widget_id);
        bundle_get_byte(envelope, AUL_K_WIDGET_STATUS, (void **)&status, &status_sz);
@@ -882,7 +888,12 @@ static int __widget_handler(const char *viewer_id, aul_app_com_result_e e, bundl
        } else {
                bundle_get_str(envelope, AUL_K_WIDGET_INSTANCE_ID, &instance_id);
                bundle_get_str(envelope, WIDGET_K_CONTENT_INFO, &content_info);
-               __widget_instance_handler(*status, widget_id, instance_id, content_info);
+               bundle_get_str(envelope, AUL_K_WIDGET_ERROR_CODE, &error_code);
+               if (error_code)
+                       err = atoi(error_code);
+
+               __widget_instance_handler(*status, widget_id, instance_id,
+                               content_info, err);
        }
 
        return 0;
@@ -960,6 +971,16 @@ EAPI int widget_instance_fini()
        return 0;
 }
 
+EAPI int widget_instance_get_error_code(widget_instance_h instance, int *err)
+{
+       if (instance == NULL || err == NULL)
+               return -1;
+
+       *err = instance->err;
+
+       return 0;
+}
+
 EAPI int widget_instance_get_id(widget_instance_h instance, char **id)
 {
        if (instance == NULL || id == NULL)