Implement parsing res-control 81/258681/2
authorIlho Kim <ilho159.kim@samsung.com>
Mon, 24 May 2021 07:07:33 +0000 (16:07 +0900)
committerIlho Kim <ilho159.kim@samsung.com>
Mon, 24 May 2021 09:01:56 +0000 (18:01 +0900)
Change-Id: Ic50adf1307c86433539fcc5692dbe659b2841d6e
Signed-off-by: Ilho Kim <ilho159.kim@samsung.com>
src/tpk_manifest_handlers/application_handler.cc
src/tpk_manifest_handlers/application_handler.h
src/tpk_manifest_handlers/component_based_application_handler.cc
src/tpk_manifest_handlers/service_application_handler.cc
src/tpk_manifest_handlers/ui_and_service_application_infos.h
src/tpk_manifest_handlers/ui_application_handler.cc
src/tpk_manifest_handlers/watch_application_handler.cc
src/tpk_manifest_handlers/widget_application_handler.cc

index 8c6209e00a26ec96f40e80f1c631c44060916998..9170169d6b62377d18885172d2693d6766c1c10f 100644 (file)
@@ -69,6 +69,13 @@ const char kSplashScreenIndicatorDisplayKey[] = "@indicator-display";
 const char kSplashScreenAppControlOperationKey[] = "@app-control-operation";
 const char kSplashScreenColorDepthKey[] = "@color-depth";
 
+// res-control
+const char kResControlKey[] = "res-control";
+const char kResControlResourceTypeKey[] = "@resource-type";
+const char kResControlMinResVersionKey[] = "@min-res-version";
+const char kResControlMaxResVersionKey[] = "@max-res-version";
+const char kResControlAutoCloseKey[] = "@auto-close";
+
 }  // namespace tpk_app_keys
 
 }  // namespace parse
index 33a86e8ef9c8f3dcb2c9f5a7fac507b9fd1501ed..6ec2e10bb2de4341e5555f66ca6de714003046dc 100644 (file)
@@ -83,6 +83,13 @@ extern const char kSplashScreenOperationKey[];
 extern const char kSplashScreenAppControlOperationKey[];
 extern const char kSplashScreenColorDepthKey[];
 
+// res-control
+extern const char kResControlKey[];
+extern const char kResControlResourceTypeKey[];
+extern const char kResControlMinResVersionKey[];
+extern const char kResControlMaxResVersionKey[];
+extern const char kResControlAutoCloseKey[];
+
 }  // namespace tpk_app_keys
 
 class ApplicationInfo : public parser::ManifestData {
@@ -134,6 +141,7 @@ struct ApplicationSingleEntry : public parser::ManifestData {
   std::vector<LabelInfo> label;
   std::vector<std::string> categories;
   ApplicationSplashScreenInfo app_splashscreens;
+  std::vector<ResControlInfo> res_controls;
 };
 
 template<typename T>
@@ -359,6 +367,25 @@ bool ParseSplashScreen(const parser::DictionaryValue& dict,
   return true;
 }
 
+template<typename T>
+bool ParseResControl(const parser::DictionaryValue& dict,
+                     T* info, std::string*) {
+  std::string resource_type;
+  if (!dict.GetString(tpk_app_keys::kResControlResourceTypeKey,
+      &resource_type))
+    return true;
+  std::string min_res_version;
+  dict.GetString(tpk_app_keys::kResControlMinResVersionKey, &min_res_version);
+  std::string max_res_version;
+  dict.GetString(tpk_app_keys::kResControlMaxResVersionKey, &max_res_version);
+  std::string auto_close;
+  dict.GetString(tpk_app_keys::kResControlAutoCloseKey, &auto_close);
+  info->res_controls.emplace_back(resource_type,
+      min_res_version, max_res_version, auto_close);
+
+  return true;
+}
+
 template<typename T>
 using ParsingFuncPtr =
     std::function<bool(const parser::DictionaryValue&, T*, std::string*)>;
index a92d74505ac275f3e59ecb230c575bb88da60ca5..a7e86d25bea9237fe69611d167d3f1d1704323f6 100644 (file)
@@ -95,6 +95,10 @@ bool InitializeParsing(const parser::DictionaryValue& app_dict,
   if (!InitializeParsingElement(app_dict, tpk_app_keys::kSplashScreensKey,
           parsingFunc, applicationinfo, error))
     return false;
+  parsingFunc = ParseResControl<ComponentBasedApplicationSingleEntry>;
+  if (!InitializeParsingElement(app_dict, tpk_app_keys::kResControlKey,
+      parsingFunc, applicationinfo, error))
+    return false;
 
   return true;
 }
index 6cecdc7c0caff8fe02e5d763ea3aa4ceab316883..52b9d29c8a85c01cc9a60eab5e2eb7eb46823d51 100644 (file)
@@ -173,6 +173,10 @@ bool ParseServiceApplicationAndStore(
   if (!InitializeParsingElement(app_dict, tpk_app_keys::kCategoryKey,
       parsingFunc, serviceapplicationinfo, error))
     return false;
+  parsingFunc = ParseResControl<ServiceApplicationSingleEntry>;
+  if (!InitializeParsingElement(app_dict, tpk_app_keys::kResControlKey,
+      parsingFunc, serviceapplicationinfo, error))
+    return false;
 
   return true;
 }
index c984efe4c2cf5e505774b1e37a215799fb5c3577..6c67f12f36dcf1e0997a789150fbf68994aae082 100644 (file)
@@ -301,6 +301,38 @@ class LabelInfo : public parser::ManifestData {
   std::string xml_lang_;
 };
 
+// ResControl
+class ResControlInfo : public parser::ManifestData {
+ public:
+  ResControlInfo(const std::string& resource_type,
+            const std::string& min_res_version,
+            const std::string& max_res_version,
+            const std::string& auto_close)
+            : resource_type_(resource_type),
+              min_res_version_(min_res_version),
+              max_res_version_(max_res_version),
+              auto_close_(auto_close) {}
+
+  const std::string& resource_type() const {
+    return resource_type_;
+  }
+  const std::string& min_res_version() const {
+    return min_res_version_;
+  }
+  const std::string& max_res_version() const {
+    return max_res_version_;
+  }
+  const std::string& auto_close() const {
+    return auto_close_;
+  }
+
+ private:
+  std::string resource_type_;
+  std::string min_res_version_;
+  std::string max_res_version_;
+  std::string auto_close_;
+};
+
 }  // namespace parse
 }  // namespace tpk
 
index 187d4a1bc732175e770c73cfec486247c4a6d32d..1e4040fa7e3768065564c1c4989f672632169077 100644 (file)
@@ -98,6 +98,10 @@ bool InitializeParsing(const parser::DictionaryValue& app_dict,
   if (!InitializeParsingElement(app_dict, tpk_app_keys::kSplashScreensKey,
       parsingFunc, uiapplicationinfo, error))
     return false;
+  parsingFunc = ParseResControl<UIApplicationSingleEntry>;
+  if (!InitializeParsingElement(app_dict, tpk_app_keys::kResControlKey,
+      parsingFunc, uiapplicationinfo, error))
+    return false;
 
   return true;
 }
index 8bcf704013a98cadb5aa3a0db51592546afd49bf..d39113982ef5f6e1c281f9f74fca0d5d6d009cea 100644 (file)
@@ -99,6 +99,10 @@ bool InitializeParsing(const parser::DictionaryValue& app_dict,
   if (!InitializeParsingElement(app_dict, tpk_app_keys::kBackgroundCategoryKey,
                                 parsingFunc, widgetapplicationinfo, error))
     return false;
+  parsingFunc = ParseResControl<WatchApplicationSingleEntry>;
+  if (!InitializeParsingElement(app_dict, tpk_app_keys::kResControlKey,
+      parsingFunc, widgetapplicationinfo, error))
+    return false;
   return true;
 }
 
index 85ca4b4c195ae7083b33e628157524f32ed19527..7c041505da6d16172bfb66cb1275def85b0ea7be 100644 (file)
@@ -85,6 +85,10 @@ bool InitializeParsing(const parser::DictionaryValue& app_dict,
   if (!InitializeParsingElement(app_dict, tpk_app_keys::kCategoryKey,
       parsingFunc, widgetapplicationinfo, error))
     return false;
+  parsingFunc = ParseResControl<WidgetApplicationSingleEntry>;
+  if (!InitializeParsingElement(app_dict, tpk_app_keys::kResControlKey,
+      parsingFunc, widgetapplicationinfo, error))
+    return false;
 
   return true;
 }