[Release] wrt-installer_0.1.47
[framework/web/wrt-installer.git] / src / jobs / widget_install / task_widget_config.cpp
index ac99419..c5bbc5b 100644 (file)
@@ -78,6 +78,7 @@ TaskWidgetConfig::TaskWidgetConfig(InstallerContext& installContext) :
     AddStep(&TaskWidgetConfig::ProcessLocalizedIcons);
     AddStep(&TaskWidgetConfig::ProcessWidgetInstalledPath);
     AddStep(&TaskWidgetConfig::ProcessAppControlInfo);
+    AddStep(&TaskWidgetConfig::ProcessSecurityModel);
     AddStep(&TaskWidgetConfig::StepVerifyFeatures);
     AddStep(&TaskWidgetConfig::StepCheckMinVersionInfo);
 }
@@ -408,6 +409,46 @@ void TaskWidgetConfig::ProcessAppControlInfo()
     }
 }
 
+void TaskWidgetConfig::ProcessSecurityModel()
+{
+    bool isSecurityModelV1 = false;
+    bool isSecurityModelV2 = false;
+    WrtDB::ConfigParserData &data = m_installContext.widgetConfig.configInfo;
+
+    // WARP is V1
+    if (!data.accessInfoSet.empty()) {
+        isSecurityModelV1 = true;
+    }
+
+    // CSP is V2
+    if (!data.cspPolicy.IsNull() || !data.cspPolicyReportOnly.IsNull()) {
+        isSecurityModelV2 = true;
+    }
+
+    // allow-navigation is V2
+    if (!data.allowNavigationInfoList.empty()) {
+        isSecurityModelV2 = true;
+    }
+
+    if (isSecurityModelV1 && isSecurityModelV2) {
+        LogError("Security model is conflict");
+        ThrowMsg(Exceptions::NotAllowed, "Security model is conflict");
+    } else if (isSecurityModelV1) {
+        data.securityModelVersion =
+            WrtDB::ConfigParserData::SecurityModelVersion::SECURITY_MODEL_V1;
+    } else if (isSecurityModelV2) {
+        data.securityModelVersion =
+            WrtDB::ConfigParserData::SecurityModelVersion::SECURITY_MODEL_V2;
+    } else {
+        data.securityModelVersion =
+            WrtDB::ConfigParserData::SecurityModelVersion::SECURITY_MODEL_V1;
+    }
+
+    m_installContext.job->UpdateProgress(
+        InstallerContext::INSTALL_WIDGET_CONFIG2,
+        "Finished process security model");
+}
+
 void TaskWidgetConfig::StepCheckMinVersionInfo()
 {
     if (!isMinVersionCompatible(