type="tag";name="widget-application";path="/etc/package-manager/parserlib/libwidget-application.so";vitalness="true"
-type="tag";name="component-based-application";path="/etc/package-manager/parserlib/libwidget-application.so"
+type="tag";name="component-based-application";path="/etc/package-manager/parserlib/libwidget-application.so";vitalness="true"
return 0;
}
-GList *widget_plugin_parser_parse_manifest(xmlDocPtr doc)
+int widget_plugin_parser_parse_manifest(xmlDocPtr doc, GList **list)
{
xmlNode *root;
xmlNode *tmp;
xmlNode *tmp_comp;
- GList *list = NULL;
char *appid;
if (!tag_table) {
LOGE("parser is not initialized");
- return NULL;
+ return WIDGET_PARSER_ERROR_INVALID_PARAMETER;
}
if (doc == NULL) {
LOGE("invalid parameter");
- return NULL;
+ return WIDGET_PARSER_ERROR_INVALID_PARAMETER;
}
root = xmlDocGetRootElement(doc);
if (root == NULL) {
LOGE("failed to get root element");
- return NULL;
+ return WIDGET_PARSER_ERROR_INVALID_PARAMETER;
}
for (tmp = root->children; tmp; tmp = tmp->next) {
switch (_get_tag(tmp)) {
case TAG_WIDGET_APPLICATION:
- if (_parse_widget_application(tmp, &list)) {
+ if (_parse_widget_application(tmp, list)) {
LOGE("parse failed");
- return NULL;
+ return WIDGET_PARSER_ERROR_IO_ERROR;
}
break;
case TAG_COMPONENT_BASED_APPLICATION:
appid = _get_attribute(tmp, "appid");
if (appid == NULL)
- return NULL;
+ return WIDGET_PARSER_ERROR_IO_ERROR;
- if (_parse_widget_component(tmp_comp, appid, &list)) {
+ if (_parse_widget_component(tmp_comp, appid, list)) {
LOGE("parse failed");
free(appid);
- return NULL;
+ return WIDGET_PARSER_ERROR_IO_ERROR;
}
free(appid);
}
}
}
- return list;
+ if (*list == NULL)
+ return WIDGET_PARSER_ERROR_NOT_EXIST;
+
+ return WIDGET_PARSER_ERROR_NONE;
}
-#ifndef __WIDGET_PLUGIN_PARSER_INTERNAL_H__
-#define __WIDGET_PLUGIN_PARSER_INTERNAL_H__
+#ifndef __WIDGET_PARSER_PLUGIN_PARSER_INTERNAL_H__
+#define __WIDGET_PARSER_PLUGIN_PARSER_INTERNAL_H__
#include <stdbool.h>
#include <sys/types.h>
#ifdef LOG_TAG
#undef LOG_TAG
-#define LOG_TAG "WIDGET_PLUGIN_PARSER"
+#define LOG_TAG "WIDGET_PARSER_PLUGIN_PARSER"
#endif
+typedef enum widget_parser_error {
+ WIDGET_PARSER_ERROR_NONE = TIZEN_ERROR_NONE,
+ WIDGET_PARSER_ERROR_INVALID_PARAMETER = TIZEN_ERROR_INVALID_PARAMETER,
+ WIDGET_PARSER_ERROR_OUT_OF_MEMORY = TIZEN_ERROR_OUT_OF_MEMORY,
+ WIDGET_PARSER_ERROR_RESOURCE_BUSY = TIZEN_ERROR_RESOURCE_BUSY,
+ WIDGET_PARSER_ERROR_PERMISSION_DENIED = TIZEN_ERROR_PERMISSION_DENIED,
+ WIDGET_PARSER_ERROR_CANCELED = TIZEN_ERROR_CANCELED,
+ WIDGET_PARSER_ERROR_IO_ERROR = TIZEN_ERROR_IO_ERROR,
+ WIDGET_PARSER_ERROR_TIMED_OUT = TIZEN_ERROR_TIMED_OUT,
+ WIDGET_PARSER_ERROR_NOT_SUPPORTED = TIZEN_ERROR_NOT_SUPPORTED,
+ WIDGET_PARSER_ERROR_FILE_NO_SPACE_ON_DEVICE = TIZEN_ERROR_FILE_NO_SPACE_ON_DEVICE,
+ WIDGET_PARSER_ERROR_FAULT = TIZEN_ERROR_WIDGET | 0x0001,
+ WIDGET_PARSER_ERROR_ALREADY_EXIST = TIZEN_ERROR_WIDGET | 0x0002,
+ WIDGET_PARSER_ERROR_ALREADY_STARTED = TIZEN_ERROR_WIDGET | 0x0004,
+ WIDGET_PARSER_ERROR_NOT_EXIST = TIZEN_ERROR_WIDGET | 0x0008,
+ WIDGET_PARSER_ERROR_DISABLED = TIZEN_ERROR_WIDGET | 0x0010,
+ WIDGET_PARSER_ERROR_MAX_EXCEEDED = TIZEN_ERROR_WIDGET | 0x0011,
+} widget_parser_error_e;
+
struct support_size {
char *preview;
bool frame;
int widget_plugin_parser_init(void);
int widget_plugin_parser_fini(void);
-GList *widget_plugin_parser_parse_manifest(xmlDocPtr doc);
+int widget_plugin_parser_parse_manifest(xmlDocPtr doc, GList **widget_list);
int widget_parser_db_insert_widget_class(const char *pkgid, GList *widget_list);
API int PKGMGR_PARSER_PLUGIN_INSTALL(xmlDocPtr doc, const char *pkgid)
{
- GList *result;
+ GList *result = NULL;
- result = widget_plugin_parser_parse_manifest(doc);
- if (result == NULL) {
+ int ret = widget_plugin_parser_parse_manifest(doc, &result);
+ if (ret == WIDGET_PARSER_ERROR_NOT_EXIST) {
+ LOGW("not exist");
+ return 0;
+ }
+
+ if (ret != WIDGET_PARSER_ERROR_NONE) {
LOGE("parse failed");
return -1;
}
API int PKGMGR_PARSER_PLUGIN_UPGRADE(xmlDocPtr doc, const char *pkgid)
{
- GList *result;
+ GList *result = NULL;
+
+ int ret = widget_plugin_parser_parse_manifest(doc, &result);
+ if (ret == WIDGET_PARSER_ERROR_NOT_EXIST) {
+ LOGW("not exist");
+ return 0;
+ }
- result = widget_plugin_parser_parse_manifest(doc);
- if (result == NULL) {
+ if (ret != WIDGET_PARSER_ERROR_NONE) {
LOGE("parse failed");
return -1;
}