extern "C" {
#endif
-#define WIDGET_K_ID AUL_K_APPID
-#define WIDGET_K_CLASS "__WIDGET_CLASS__"
-#define WIDGET_K_INSTANCE "__WIDGET_INSTANCE__"
+#define WIDGET_K_ID AUL_K_WIDGET_ID
+#define WIDGET_K_CLASS AUL_K_WIDGET_ID
+#define WIDGET_K_INSTANCE AUL_K_WIDGET_INSTANCE_ID
#define WIDGET_K_STATUS "__WIDGET_STATUS__"
#define WIDGET_K_ENDPOINT "__WIDGET_ENDPOINT__"
int widget_instance_listen_status(const char *widget_id, widget_instance_event_cb cb, void *data);
int widget_instance_unlisten_status(const char *widget_id);
+int widget_instance_trigger_update_v2(const char *widget_id, const char *instance_id, const char *content_info, int force);
+
#ifdef __cplusplus
}
#endif
#include <aul_app_com.h>
#include <widget_service.h>
#include <app.h>
+#include "widget_errno.h"
#define USER_UID_MIN 5000
#define MAX_INSTANCE_ID_LEN 256
if (b == NULL)
b = bundle_create();
- bundle_add_str(b, WIDGET_K_INSTANCE, instance_id);
+ if (instance_id)
+ bundle_add_str(b, WIDGET_K_INSTANCE, instance_id);
+
bundle_add_str(b, WIDGET_K_CLASS, classid);
bundle_add_str(b, AUL_K_WIDGET_VIEWER, viewer_appid);
EAPI int widget_instance_trigger_update(widget_instance_h instance, const char *content_info, int force)
{
- int ret;
- bundle *kb;
-
if (!instance)
return -1;
+ return widget_instance_trigger_update_v2(instance->widget_id, instance->id, content_info, force);
+}
+
+EAPI int widget_instance_trigger_update_v2(const char *widget_id,
+ const char *instance_id, const char *content_info, int force)
+{
+ int ret;
+
+ bundle *kb;
+
kb = bundle_create();
if (!kb) {
_E("out of memory");
return -1;
}
+ bundle_add_str(kb, WIDGET_K_OPERATION, "update");
+
if (force)
bundle_add_str(kb, WIDGET_K_FORCE, "true");
if (content_info)
bundle_add_str(kb, WIDGET_K_CONTENT_INFO, content_info);
- ret = __send_aul_cmd(instance, "update", kb);
+ ret = aul_widget_instance_update(widget_id, instance_id, kb);
bundle_free(kb);
+ if (ret > 0)
+ return WIDGET_ERROR_NONE;
+
+ switch (ret) {
+ case AUL_R_ENOAPP:
+ ret = WIDGET_ERROR_NOT_EXIST;
+ break;
+ case AUL_R_EILLACC:
+ ret = WIDGET_ERROR_PERMISSION_DENIED;
+ break;
+ case AUL_R_EINVAL:
+ ret = WIDGET_ERROR_INVALID_PARAMETER;
+ break;
+ default:
+ ret = WIDGET_ERROR_FAULT;
+ }
+
return ret;
}
#include <glib.h>
#include <sqlite3.h>
+#include <aul.h>
#include <tzplatform_config.h>
#include <pkgmgr-info.h>
#include <system_info.h>
EAPI int widget_service_trigger_update(const char *widget_id, const char *id, bundle *b, int force)
{
- widget_instance_h instance;
int ret;
bundle_raw *raw= NULL;
int len;
return WIDGET_ERROR_INVALID_PARAMETER;
}
- instance = widget_instance_get_instance(widget_id, id);
- if (!instance) {
- _E("instance not exists or out of bound(package)");
- return WIDGET_ERROR_PERMISSION_DENIED;
- }
+ if (b)
+ bundle_encode(b, &raw, &len);
- bundle_encode(b, &raw, &len);
- if (raw) {
- ret = widget_instance_trigger_update(instance, (const char *)raw, force);
- } else {
- _E("invalid parameter");
- ret = WIDGET_ERROR_INVALID_PARAMETER;
- }
+ ret = widget_instance_trigger_update_v2(widget_id, id, (const char *)raw, force);
if (raw)
free(raw);
- widget_instance_unref(instance);
-
return ret;
}
}
struct instance_cb {
+ const char *widget_id;
widget_instance_list_cb cb;
void *data;
+ int cnt;
};
-static int __instance_list_cb(const char *widget_id, const char *instance_id, void *data)
+static void __instance_list_cb(const char *instance_id, void *user_data)
{
- struct instance_cb *cb_data = (struct instance_cb *)data;
+ struct instance_cb *cb_data = (struct instance_cb *)user_data;
+ cb_data->cnt++;
+ _D("instance list: %s %s", cb_data->widget_id, instance_id);
if (cb_data && cb_data->cb)
- return cb_data->cb(widget_id, instance_id, cb_data->data);
-
- return -1;
+ cb_data->cb(cb_data->widget_id, instance_id, cb_data->data);
}
EAPI int widget_service_get_widget_instance_list(const char *widget_id, widget_instance_list_cb cb, void *data)
struct instance_cb cb_data;
int ret = WIDGET_ERROR_NONE;
+ cb_data.widget_id = widget_id;
cb_data.cb = cb;
cb_data.data = data;
+ cb_data.cnt = 0;
if (!_is_widget_feature_enabled()) {
_E("not supported");
return WIDGET_ERROR_INVALID_PARAMETER;
}
- ret = widget_instance_get_instance_list(widget_id, __instance_list_cb, &cb_data);
+ ret = aul_widget_instance_foreach(widget_id, __instance_list_cb, &cb_data);
+
+ if (ret == AUL_R_EILLACC)
+ return WIDGET_ERROR_PERMISSION_DENIED;
+
+ if (ret == AUL_R_ENOAPP || cb_data.cnt == 0)
+ return WIDGET_ERROR_NOT_EXIST;
- return ret < 0 ? (ret == -2 ? WIDGET_ERROR_PERMISSION_DENIED : WIDGET_ERROR_NOT_EXIST) : WIDGET_ERROR_NONE;
+ return cb_data.cnt;
}
struct lifecycle_s {