Add parsing for background-category element in TPK. 72/53072/5
authorLukasz Wysocki <l.wysocki@samsung.com>
Tue, 1 Dec 2015 12:41:28 +0000 (13:41 +0100)
committerPawel Sikorski <p.sikorski@samsung.com>
Tue, 8 Dec 2015 14:36:45 +0000 (06:36 -0800)
Change-Id: I5d044b77db856e3a9650b216e211272d88f31aa5

src/tpk_manifest_handlers/service_application_handler.cc
src/tpk_manifest_handlers/service_application_handler.h
src/tpk_manifest_handlers/ui_and_service_application_infos.h
src/tpk_manifest_handlers/ui_application_handler.cc
src/tpk_manifest_handlers/ui_application_handler.h

index 0fcb63cb648e1a7dadfa37933b302b2d072f34fb..e8d2cd56590d84e6d0798b4c98cb0d6ef54fd6da 100644 (file)
@@ -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;
index 7dd2b19362e88cb0548e575e05e393195c50101d..4c94c2839b4aad173f3b728bc15baf40976952c8 100644 (file)
@@ -106,6 +106,7 @@ class ServiceApplicationInfo : public parser::ManifestData {
 struct ServiceApplicationSingleEntry : public parser::ManifestData {
   ServiceApplicationInfo sa_info;
   std::vector<AppControlInfo> app_control;
+  std::vector<BackgroundCategoryInfo> background_category;
   std::vector<DataControlInfo> data_control;
   std::vector<MetaDataInfo> meta_data;
   ApplicationIconsInfo app_icons;
index bdca9b2e54c40c2559bc51dcc77122fc0c06a34d..970c2e062a7741aeb33678d95de659d9bd65abe3 100644 (file)
@@ -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:
index ee69862d17810e13df594fc90585488c55f46a7e..5f33edce0424c7d5cc2c260f154cc59b5023e08d 100644 (file)
@@ -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()
index 712d821293d7ed20ac9964385c5d8462eeb42496..473ce8aba3f5ed99218bb211c994dd52f0ef84c9 100644 (file)
@@ -138,6 +138,7 @@ class UIApplicationInfo : public parser::ManifestData {
 struct UIApplicationSingleEntry : public parser::ManifestData {
   UIApplicationInfo ui_info;
   std::vector<AppControlInfo> app_control;
+  std::vector<BackgroundCategoryInfo> background_category;
   std::vector<DataControlInfo> data_control;
   std::vector<MetaDataInfo> meta_data;
   ApplicationIconsInfo app_icons;