Implement disposition element parser
[platform/framework/web/wrt-installer.git] / src / jobs / widget_install / task_certify_level.cpp
index 1c5c77c..1a2b442 100644 (file)
@@ -14,7 +14,7 @@
  *    limitations under the License.
  */
 /*
- * @file    task_certify.cpp
+ * @file    task_certify_level.cpp
  * @author  Jihoon Chung (jihoon.chung@samgsung.com)
  * @version
  * @brief
@@ -61,7 +61,7 @@ TaskCertifyLevel::TaskCertifyLevel(InstallerContext &inCont) :
 void TaskCertifyLevel::stepCertifyLevel()
 {
     LogDebug("================ Step: <<Certify Level>> ENTER ===============");
-    if (!checkSettingLevel(getCertifyLevel())) {
+    if (!checkConfigurationLevel(getCertifyLevel())) {
         ThrowMsg(Exceptions::PrivilegeLevelViolation, "setting level violate");
     }
     LogDebug("================ Step: <<Certify Level>> DONE ================");
@@ -169,6 +169,18 @@ TaskCertifyLevel::Level TaskCertifyLevel::getCertifyLevel()
     return level;
 }
 
+bool TaskCertifyLevel::checkConfigurationLevel(
+    TaskCertifyLevel::Level level)
+{
+    if (!checkSettingLevel(level)) {
+        return false;
+    }
+    if (!checkAppcontrolHasDisposition(level)) {
+        return false;
+    }
+    return true;
+}
+
 bool TaskCertifyLevel::checkSettingLevel(
     TaskCertifyLevel::Level level)
 {
@@ -192,6 +204,25 @@ bool TaskCertifyLevel::checkSettingLevel(
     return true;
 }
 
+bool TaskCertifyLevel::checkAppcontrolHasDisposition(
+    TaskCertifyLevel::Level level)
+{
+    // tizen:disposition -> platform
+    FOREACH(it, m_contextData.widgetConfig.configInfo.appControlList) {
+        if (ConfigParserData::AppControlInfo::Disposition::UNDEFINE !=
+            it->m_disposition)
+        {
+            if (level < Level::PLATFORM) {
+                LogError("\"tizen:disposition\" needs \"" <<
+                         enumToString(Level::PLATFORM) <<
+                         "\" level");
+                return false;
+            }
+        }
+    }
+    return true;
+}
+
 std::string TaskCertifyLevel::enumToString(
     TaskCertifyLevel::Level level)
 {