Fix widget_service_chage_period instance exist logic 53/91953/5
authorHyunho Kang <hhstark.kang@samsung.com>
Wed, 12 Oct 2016 09:02:45 +0000 (18:02 +0900)
committerHyunho Kang <hhstark.kang@samsung.com>
Wed, 12 Oct 2016 15:27:39 +0000 (00:27 +0900)
Check instance exist with amd if local check fail

Change-Id: I7762d936839e9bb0504ceefcf6858ce5d8e2190d
Signed-off-by: Hyunho Kang <hhstark.kang@samsung.com>
include/widget_instance.h
src/widget_instance.c
src/widget_service.c

index 9171caf..259708d 100644 (file)
@@ -78,7 +78,7 @@ widget_instance_h widget_instance_get_instance(const char *widget_id, const char
 int widget_instance_get_instance_list(const char *widget_id, widget_instance_list_cb cb, void *data);
 void widget_instance_unref(widget_instance_h instance);
 widget_instance_h widget_instance_ref(widget_instance_h instance);
-int widget_instance_change_period(widget_instance_h instance, double period);
+int widget_instance_change_period(const char *widget_id, const char *instance_id, double period);
 int widget_instance_trigger_update(widget_instance_h instance, const char *content_info, int force);
 int widget_instance_listen_event(widget_instance_event_cb cb, void *data);
 int widget_instance_unlisten_event(widget_instance_event_cb cb);
index 7ed1451..fe72f6a 100644 (file)
@@ -939,14 +939,11 @@ EAPI int widget_instance_get_period(widget_instance_h instance, double *period)
        return 0;
 }
 
-EAPI int widget_instance_change_period(widget_instance_h instance, double period)
+EAPI int widget_instance_change_period(const char *widget_id, const char *instance_id, double period)
 {
        int ret;
        bundle *b;
 
-       if (!instance)
-               return -1;
-
        b = bundle_create();
        if (!b) {
                _E("out of memory");
@@ -954,9 +951,8 @@ EAPI int widget_instance_change_period(widget_instance_h instance, double period
        }
 
        bundle_add_byte(b, WIDGET_K_PERIOD, &period, sizeof(double));
-
-       ret = __send_aul_cmd(instance, "period", b);
-
+       bundle_add_str(b, WIDGET_K_OPERATION, "period");
+       ret = aul_widget_instance_update(widget_id, instance_id, b);
        bundle_free(b);
 
        return ret;
index 3922b94..48ec538 100644 (file)
@@ -56,6 +56,12 @@ struct widget_info_s {
        bool is_mainapp;
 };
 
+struct widget_instance_info_s {
+       int period;
+       bool exists;
+       const char *instance_id;
+};
+
 static GList *lifecycle_cbs;
 static bool _is_resolution_loaded = false;
 
@@ -496,9 +502,25 @@ static int _get_widget_supported_sizes(const char *widget_id, uid_t uid,
        return WIDGET_ERROR_NONE;
 }
 
+static int _instance_cb(const char *widget_id, const char *instance_id, void *data)
+{
+       int ret;
+       struct widget_instance_info_s *instance_info = (struct widget_instance_info_s *)data;
+
+       _D("widget_id %s, instance_id %s", widget_id, instance_id);
+       if (strcmp(instance_info->instance_id, instance_id) == 0) {
+               ret = widget_instance_change_period(widget_id, instance_id, instance_info->period);
+               _D("ret %d ", ret);
+               if (ret > 0)
+                       instance_info->exists = true;
+       }
+       return WIDGET_ERROR_NONE;
+}
+
 EAPI int widget_service_change_period(const char *pkgname, const char *id, double period)
 {
        widget_instance_h instance;
+       struct widget_instance_info_s instance_info;
        int ret;
 
        if (!_is_widget_feature_enabled()) {
@@ -512,16 +534,22 @@ EAPI int widget_service_change_period(const char *pkgname, const char *id, doubl
        }
 
        instance = widget_instance_get_instance(pkgname, id);
-
        if (!instance) {
-               _E("instance not exists or out of bound(package)");
-               return WIDGET_ERROR_PERMISSION_DENIED;
+               instance_info.instance_id = id;
+               instance_info.exists = false;
+               instance_info.period = period;
+               ret = widget_service_get_widget_instance_list(pkgname, _instance_cb, &instance_info);
+               _D("get list ret %d, %d", ret, instance_info.exists);
+               if (ret == 0 || !instance_info.exists) {
+                       _E("instance not exists or out of bound(package)");
+                       return WIDGET_ERROR_PERMISSION_DENIED;
+               }
+               ret = WIDGET_ERROR_NONE;
+       } else {
+               ret = widget_instance_change_period(pkgname, id, period);
+               widget_instance_unref(instance);
        }
 
-       ret = widget_instance_change_period(instance, period);
-
-       widget_instance_unref(instance);
-
        return ret;
 }