Platform version check during wgt installation
authorMarcin Kaminski <marcin.ka@samsung.com>
Fri, 16 Nov 2012 11:53:02 +0000 (12:53 +0100)
committerGerrit Code Review <gerrit2@kim11>
Wed, 21 Nov 2012 16:44:55 +0000 (01:44 +0900)
Additionaly m_quiet field of install context
is initialy set to "false". Setting this field
to true by default cause permanent disabling
of some installer features (additional checks,
popups).

[Issue#] N/A
[Feature] Platform version is checked and compared
to required_version from config.xml. If test mode
enabled (WRT_TEST_MODE=1) installation fails when
platform version lower than required. If test mode
disabled popup with question is shown.
[Cause] Compatibility check during installation
needed
[Solution] N/A

[Verification] Build installer. Try to install
widget manual_tests/Tizen_Spec/TC6 from wrt-extra
with test mode enabled and disabled.

Change-Id: Ib77ac402401fdd7673623d8e00bb92cdf89ed5c7

src/jobs/widget_install/task_widget_config.cpp
src/jobs/widget_install/widget_installer_struct.h
src/wrt-installer/wrt_installer.cpp

index 8423144..1d7f093 100644 (file)
@@ -81,12 +81,12 @@ TaskWidgetConfig::TaskWidgetConfig(InstallerContext& installContext) :
     AddStep(&TaskWidgetConfig::ProcessBackgroundPageFile);
     AddStep(&TaskWidgetConfig::ProcessLocalizedIcons);
     AddStep(&TaskWidgetConfig::StepVerifyFeatures);
+    AddStep(&TaskWidgetConfig::StepCheckMinVersionInfo);
 
     if (!GlobalSettings::TestModeEnabled() && !m_installContext.m_quiet) {
         AddStep(&TaskWidgetConfig::StepCancelWidgetInstallationAfterVerifyFeatures);
         AddStep(&TaskWidgetConfig::StepShowWidgetInfo);
         AddStep(&TaskWidgetConfig::StepCancelWidgetInstallation);
-        AddStep(&TaskWidgetConfig::StepCheckMinVersionInfo);
         AddStep(&TaskWidgetConfig::StepCancelWidgetInstallationAfterMinVersion);
         AddStep(&TaskWidgetConfig::StepDeletePopupWin);
     }
@@ -426,8 +426,18 @@ void TaskWidgetConfig::StepCheckMinVersionInfo()
     if (!isMinVersionCompatible(
                 m_installContext.widgetConfig.webAppType.appType,
                 m_installContext.widgetConfig.minVersion)) {
-        std::string label = WIDGET_NOT_COMPATIBLE + QUESTION;
-        createInstallPopup(PopupType::WIDGET_MIN_VERSION, label);
+        if(!GlobalSettings::TestModeEnabled() && !m_installContext.m_quiet)
+        {
+            LogDebug("Platform version to low - launching");
+            std::string label = WIDGET_NOT_COMPATIBLE + QUESTION;
+            createInstallPopup(PopupType::WIDGET_MIN_VERSION, label);
+        }
+        else
+        {
+            LogError("Platform version lower than required -> cancelling installation");
+            ThrowMsg(Exceptions::NotAllowed,
+                    "Platform version does not meet requirements");
+        }
     }
 
     m_installContext.job->UpdateProgress(
@@ -629,13 +639,15 @@ bool TaskWidgetConfig::isMinVersionCompatible(WrtDB::AppType appType,
 
     if (!parseVersionString(version,
                 majorSupported, minorSupported, microSupported)) {
-        LogWarning("Invalid format of WAC version string.");
+        LogWarning("Invalid format of platform version string.");
         return true;
     }
 
     if (majorWidget > majorSupported ||
-            minorWidget > minorSupported ||
-            microWidget > microSupported) {
+            (majorWidget == majorSupported && minorWidget > minorSupported) ||
+            (majorWidget == majorSupported && minorWidget == minorSupported
+                    && microWidget > microSupported))
+    {
         LogInfo("Platform doesn't support this widget.");
         return false;
     }
index 2c7e3c8..1550e37 100755 (executable)
@@ -103,7 +103,7 @@ struct WidgetInstallationStruct : public WidgetInstallCallbackBase
 
     // It must be empty-constructible as a parameter of generic event
     WidgetInstallationStruct() : updateMode(WidgetUpdateMode::Zero),
-                                m_quiet(true)
+                                m_quiet(false)
     {
     }
 
index 354cb5a..937d0d6 100644 (file)
@@ -87,7 +87,7 @@ WrtInstaller::WrtInstaller(int argc, char **argv) :
     m_totalPlugins(0),
     m_returnStatus(-1),
     m_installByPkgmgr(false),
-    m_quiet(true),
+    m_quiet(false),
     m_popup(NULL),
     m_startupPluginInstallation(false)
 {