From: Lukasz Wysocki Date: Tue, 1 Dec 2015 12:41:28 +0000 (+0100) Subject: Add parsing for background-category element in TPK. X-Git-Tag: submit/tizen/20151209.100315~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c51458718a30f673f11a1967eb587533cd110975;p=platform%2Fcore%2Fappfw%2Fmanifest-parser.git Add parsing for background-category element in TPK. Change-Id: I5d044b77db856e3a9650b216e211272d88f31aa5 --- diff --git a/src/tpk_manifest_handlers/service_application_handler.cc b/src/tpk_manifest_handlers/service_application_handler.cc index 0fcb63c..e8d2cd5 100644 --- a/src/tpk_manifest_handlers/service_application_handler.cc +++ b/src/tpk_manifest_handlers/service_application_handler.cc @@ -35,6 +35,10 @@ const char kAppControlURIKey[] = "uri"; const char kAppControlMimeKey[] = "mime"; const char kAppControlNameChildKey[] = "@name"; +// background-category +const char kBackgroundCategoryKey[] = "background-category"; +const char kBackgroundCategoryValueKey[] = "@value"; + // datacontrol const char kDataControlKey[] = "datacontrol"; const char kDataControlAccessKey[] = "@access"; @@ -97,6 +101,19 @@ bool ParseAppControl( return true; } +bool ParseBackgroundCategoryElement( + const parser::DictionaryValue* dict, + ServiceApplicationSingleEntry* info) { + std::string value; + + if (!dict->GetString(kBackgroundCategoryValueKey, &value)) + return false; + + info->background_category.emplace_back(std::move(value)); + + return true; +} + bool ParseDataControl( const parser::DictionaryValue* dict, ServiceApplicationSingleEntry* info) { @@ -155,6 +172,20 @@ bool InitializeAppControlParsing( return true; } +bool InitializeBackgroundCategoryParsing( + const parser::DictionaryValue& control_dict, + ServiceApplicationSingleEntry* serviceapplicationinfo, + std::string* error) { + for (auto& item : parser::GetOneOrMany(&control_dict, + kBackgroundCategoryKey, "")) { + if (!ParseBackgroundCategoryElement(item, serviceapplicationinfo)) { + *error = "Parsing background-category element failed"; + return false; + } + } + return true; +} + bool InitializeDataControlParsing( const parser::DictionaryValue& app_dict, ServiceApplicationSingleEntry* serviceapplicationinfo, @@ -349,6 +380,9 @@ bool ParseServiceApplicationAndStore( serviceapplicationinfo, error) || !InitializeLabelParsing(app_dict, + serviceapplicationinfo, + error) || + !InitializeBackgroundCategoryParsing(app_dict, serviceapplicationinfo, error)) { return false; diff --git a/src/tpk_manifest_handlers/service_application_handler.h b/src/tpk_manifest_handlers/service_application_handler.h index 7dd2b19..4c94c28 100644 --- a/src/tpk_manifest_handlers/service_application_handler.h +++ b/src/tpk_manifest_handlers/service_application_handler.h @@ -106,6 +106,7 @@ class ServiceApplicationInfo : public parser::ManifestData { struct ServiceApplicationSingleEntry : public parser::ManifestData { ServiceApplicationInfo sa_info; std::vector app_control; + std::vector background_category; std::vector data_control; std::vector meta_data; ApplicationIconsInfo app_icons; diff --git a/src/tpk_manifest_handlers/ui_and_service_application_infos.h b/src/tpk_manifest_handlers/ui_and_service_application_infos.h index bdca9b2..970c2e0 100644 --- a/src/tpk_manifest_handlers/ui_and_service_application_infos.h +++ b/src/tpk_manifest_handlers/ui_and_service_application_infos.h @@ -43,6 +43,18 @@ class AppControlInfo : public parser::ManifestData { std::string mime_; }; +// Background-category +class BackgroundCategoryInfo : public parser::ManifestData { + public: + explicit BackgroundCategoryInfo(const std::string& value) : value_(value) {} + virtual ~BackgroundCategoryInfo() {} + + const std::string& value() const { return value_; } + + private: + std::string value_; +}; + // DataControl class DataControlInfo : public parser::ManifestData { public: diff --git a/src/tpk_manifest_handlers/ui_application_handler.cc b/src/tpk_manifest_handlers/ui_application_handler.cc index ee69862..5f33edc 100644 --- a/src/tpk_manifest_handlers/ui_application_handler.cc +++ b/src/tpk_manifest_handlers/ui_application_handler.cc @@ -34,6 +34,10 @@ const char kAppControlURIKey[] = "uri"; const char kAppControlMimeKey[] = "mime"; const char kAppControlNameChildKey[] = "@name"; +// background-category +const char kBackgroundCategoryKey[] = "background-category"; +const char kBackgroundCategoryValueKey[] = "@value"; + // datacontrol const char kDataControlKey[] = "datacontrol"; const char kDataControlAccessKey[] = "@access"; @@ -100,6 +104,19 @@ bool ParseAppControl( return true; } +bool ParseBackgroundCategoryElement( + const parser::DictionaryValue* dict, + UIApplicationSingleEntry* info) { + std::string value; + + if (!dict->GetString(kBackgroundCategoryValueKey, &value)) + return false; + + info->background_category.emplace_back(std::move(value)); + + return true; +} + bool ParseDataControl( const parser::DictionaryValue* dict, UIApplicationSingleEntry* info) { @@ -158,6 +175,20 @@ bool InitializeAppControlParsing( return true; } +bool InitializeBackgroundCategoryParsing( + const parser::DictionaryValue& control_dict, + UIApplicationSingleEntry* uiapplicationinfo, + std::string* error) { + for (auto& item : parser::GetOneOrMany(&control_dict, + kBackgroundCategoryKey, "")) { + if (!ParseBackgroundCategoryElement(item, uiapplicationinfo)) { + *error = "Parsing background-category element failed"; + return false; + } + } + return true; +} + bool InitializeDataControlParsing( const parser::DictionaryValue& control_dict, UIApplicationSingleEntry* uiapplicationinfo, @@ -210,6 +241,24 @@ bool InitializeLabelParsing( return true; } +bool InitializeParsing(const parser::DictionaryValue& app_dict, + UIApplicationSingleEntry* uiapplicationinfo, + std::string* error) { + if (!InitializeAppControlParsing(app_dict, uiapplicationinfo, error)) + return false; + if (!InitializeDataControlParsing(app_dict, uiapplicationinfo, error)) + return false; + if (!InitializeMetaDataParsing(app_dict, uiapplicationinfo, error)) + return false; + if (!InitializeIconParsing(app_dict, uiapplicationinfo, error)) + return false; + if (!InitializeLabelParsing(app_dict, uiapplicationinfo, error)) + return false; + if (!InitializeBackgroundCategoryParsing(app_dict, uiapplicationinfo, error)) + return false; + return true; +} + bool UIAppValidation(const UIApplicationSingleEntry& item, const std::string& api_version, std::string* error) { if (item.ui_info.appid().empty()) { @@ -390,14 +439,7 @@ bool ParseUIApplicationAndStore( uiapplicationinfo->ui_info.set_launch_mode(launch_mode); } - if (!InitializeAppControlParsing(app_dict, uiapplicationinfo, error) || - !InitializeDataControlParsing(app_dict, uiapplicationinfo, error) || - !InitializeMetaDataParsing(app_dict, uiapplicationinfo, error) || - !InitializeIconParsing(app_dict, uiapplicationinfo, error) || - !InitializeLabelParsing(app_dict, uiapplicationinfo, error)) { - return false; - } - return true; + return InitializeParsing(app_dict, uiapplicationinfo, error); } UIApplicationInfo::UIApplicationInfo() diff --git a/src/tpk_manifest_handlers/ui_application_handler.h b/src/tpk_manifest_handlers/ui_application_handler.h index 712d821..473ce8a 100644 --- a/src/tpk_manifest_handlers/ui_application_handler.h +++ b/src/tpk_manifest_handlers/ui_application_handler.h @@ -138,6 +138,7 @@ class UIApplicationInfo : public parser::ManifestData { struct UIApplicationSingleEntry : public parser::ManifestData { UIApplicationInfo ui_info; std::vector app_control; + std::vector background_category; std::vector data_control; std::vector meta_data; ApplicationIconsInfo app_icons;