Parse app-control privileges 17/137217/2
authorSangyoon Jang <jeremy.jang@samsung.com>
Fri, 30 Jun 2017 02:08:21 +0000 (11:08 +0900)
committerSangyoon Jang <jeremy.jang@samsung.com>
Thu, 6 Jul 2017 08:55:51 +0000 (08:55 +0000)
Change-Id: I2c55ebb8abb7b4867263b0f1abcaa49c30af73c3
Signed-off-by: Sangyoon Jang <jeremy.jang@samsung.com>
src/tpk_manifest_handlers/common/application_handler.h
src/tpk_manifest_handlers/ui_and_service_application_infos.h

index f8ef69d43e8521a27efb08b16a38f9ef12257ff3..e2eb9c686a4425769a43706646a017d9a3e4aaa9 100644 (file)
@@ -165,14 +165,28 @@ bool ParseAppControl(const parser::DictionaryValue& dict,
       mimes.push_back(mime);
     }
 
+    std::vector<std::string> privileges;
+    for (auto& item : parser::GetOneOrMany(
+        &dict, tpk_app_keys::kPrivilegeKey, "")) {
+      std::string privilege;
+      if (!item->GetString(tpk_app_keys::kPrivilegeTextKey, &privilege) ||
+                           privilege.empty()) {
+        *error = "appcontrol privilege is missing privilege text";
+        return false;
+      }
+      privileges.push_back(privilege);
+    }
+
     if (uris.empty())
       uris.push_back("");
     if (mimes.empty())
       mimes.push_back("");
+    if (privileges.empty())
+      privileges.push_back("");
 
     for (const auto& uri : uris) {
       for (const auto& mime : mimes) {
-        info->app_control.emplace_back(operation, uri, mime);
+        info->app_control.emplace_back(operation, uri, mime, privileges);
       }
     }
   }
index ec2be46d974ff197497f897e96ace3388e7bb9e2..478779502b8b4737461aba4f94883fe016ccb645 100644 (file)
@@ -21,10 +21,12 @@ class AppControlInfo : public parser::ManifestData {
  public:
   AppControlInfo(const std::string& operation,
                  const std::string& uri,
-                 const std::string& mime)
+                 const std::string& mime,
+                 const std::vector<std::string>& privileges)
                  : operation_(operation),
                    uri_(uri),
-                   mime_(mime) {}
+                   mime_(mime),
+                   privileges_(privileges) {}
 
   const std::string& operation() const {
     return operation_;
@@ -38,10 +40,15 @@ class AppControlInfo : public parser::ManifestData {
     return mime_;
   }
 
+  const std::vector<std::string> privileges() const {
+    return privileges_;
+  }
+
  private:
   std::string operation_;
   std::string uri_;
   std::string mime_;
+  std::vector<std::string> privileges_;
 };
 
 // Background-category