From: Sangyoon Jang Date: Wed, 17 Jun 2020 07:03:56 +0000 (+0900) Subject: Fix WgtArchiveInfo X-Git-Tag: submit/tizen/20200617.074907~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e875b1443f706b9b4be8dadbf4603e986212f802;p=platform%2Fcore%2Fappfw%2Fwgt-backend.git Fix WgtArchiveInfo Allow addon only wgt package. Change-Id: I78a2c71f6dbbed09e47d40f9c17ee5c5c313587c Signed-off-by: Sangyoon Jang --- diff --git a/src/lib/wgt_archive_info.cc b/src/lib/wgt_archive_info.cc index 4f5a18b..df7efc2 100644 --- a/src/lib/wgt_archive_info.cc +++ b/src/lib/wgt_archive_info.cc @@ -9,6 +9,7 @@ #include #include +#include #include #include #include @@ -47,20 +48,44 @@ bool WgtArchiveInfo::GetPackageInfo( auto widget_info = std::static_pointer_cast( parser.GetManifestData(wgt::parse::WidgetInfo::Key())); + if (!widget_info) { + LOG(ERROR) << "WidgetInfo not found"; + return false; + } + + type_ = "wgt"; + version_ = widget_info->version().c_str(); + author_ = widget_info->author().c_str(); + + return true; +} + +bool WgtArchiveInfo::GetApplicationInfo( + const wgt::parse::WidgetConfigParser& parser) { auto app_info = std::static_pointer_cast( parser.GetManifestData(wgt::parse::TizenApplicationInfo::Key())); - if (!widget_info || !app_info) { - LOG(ERROR) << "WidgetInfo / TizenApplicationInfo not found"; + if (!app_info) return false; - } - type_ = "wgt"; name_ = app_info->package().c_str(); pkgid_ = app_info->package().c_str(); - version_ = widget_info->version().c_str(); api_version_ = app_info->required_version().c_str(); - author_ = widget_info->author().c_str(); + + return true; +} + +bool WgtArchiveInfo::GetAddonInfo( + const wgt::parse::WidgetConfigParser& parser) { + auto addon_info = + std::static_pointer_cast( + parser.GetManifestData(wgt::parse::AddonInfo::Key())); + if (!addon_info) + return false; + + name_ = addon_info->package().c_str(); + pkgid_ = addon_info->package().c_str(); + api_version_ = addon_info->required_version().c_str(); return true; } @@ -203,6 +228,15 @@ bool WgtArchiveInfo::LoadArchiveInfo() { bf::remove_all(tmp_dir); return false; } + if (!GetApplicationInfo(parser)) { + if (!GetAddonInfo(parser)) { + LOG(ERROR) << "Failed to get application info nor addon info. " + << "At least one of them must exist"; + bf::remove_all(tmp_dir); + return false; + } + } + if (!GetPrivilegesInfo(parser)) LOG(WARNING) << "Failed to get privileges info"; if (!GetIconInfo(parser)) diff --git a/src/lib/wgt_archive_info.h b/src/lib/wgt_archive_info.h index 085bb47..debc32c 100644 --- a/src/lib/wgt_archive_info.h +++ b/src/lib/wgt_archive_info.h @@ -23,6 +23,8 @@ class WgtArchiveInfo : public common_installer::ArchiveInfo { private: bool GetPackageInfo(const wgt::parse::WidgetConfigParser& parser); + bool GetApplicationInfo(const wgt::parse::WidgetConfigParser& parser); + bool GetAddonInfo(const wgt::parse::WidgetConfigParser& parser); bool GetPrivilegesInfo(const wgt::parse::WidgetConfigParser& parser); bool GetIconInfo(const wgt::parse::WidgetConfigParser& parser); bool ReadIcon(const bf::path& icon, const bf::path& tmp_dir);