Directory install feature fix
authorAndrzej Surdej <a.surdej@samsung.com>
Tue, 4 Dec 2012 15:57:17 +0000 (16:57 +0100)
committerGerrit Code Review <gerrit2@kim11>
Thu, 6 Dec 2012 14:42:22 +0000 (23:42 +0900)
[Issue#] LINUXNGWAP-572
[Problem] Install package that is alredy unzipped (files are in proper directory)
[Cause] N/A
[Solution] N/A
[Verification] Install/update/uninstall several widget using old and new way.

Change-Id: I7ee8588ee8a2fe239b6cf96e8719ad0446403761

src/jobs/widget_install/job_widget_install.cpp
src/jobs/widget_install/task_file_manipulation.cpp
src/jobs/widget_install/task_prepare_files.cpp
src/misc/widget_location.cpp

index bd81286..ce0026c 100644 (file)
@@ -178,9 +178,7 @@ JobWidgetInstall::JobWidgetInstall(std::string const &widgetPath,
 
         AddTask(new TaskWidgetConfig(m_installerContext));
         if (m_installerContext.widgetConfig.packagingType  ==
-                WrtDB::PKG_TYPE_HOSTED_WEB_APP ||
-            m_installerContext.widgetConfig.packagingType ==
-                WrtDB::PKG_TYPE_DIRECTORY_WEB_APP)
+                WrtDB::PKG_TYPE_HOSTED_WEB_APP)
         {
             AddTask(new TaskPrepareFiles(m_installerContext));
         }
@@ -188,6 +186,7 @@ JobWidgetInstall::JobWidgetInstall(std::string const &widgetPath,
         if (m_needEncryption) {
             AddTask(new TaskEncryptResource(m_installerContext));
         }
+
         AddTask(new TaskFileManipulation(m_installerContext));
         // TODO: Update progress information for this task
 
@@ -220,15 +219,17 @@ JobWidgetInstall::JobWidgetInstall(std::string const &widgetPath,
         AddTask(new TaskWidgetConfig(m_installerContext));
 
         if (m_installerContext.widgetConfig.packagingType ==
-                WrtDB::PKG_TYPE_HOSTED_WEB_APP ||
-            m_installerContext.widgetConfig.packagingType ==
-                WrtDB::PKG_TYPE_DIRECTORY_WEB_APP)
+                WrtDB::PKG_TYPE_HOSTED_WEB_APP)
         {
             AddTask(new TaskPrepareFiles(m_installerContext));
         }
 
         AddTask(new TaskCertify(m_installerContext));
-        AddTask(new TaskUpdateFiles(m_installerContext));
+        if (m_installerContext.widgetConfig.packagingType !=
+            WrtDB::PKG_TYPE_DIRECTORY_WEB_APP)
+        {
+            AddTask(new TaskUpdateFiles(m_installerContext));
+        }
 
         /* TODO : To backup file, save md5 values */
         AddTask(new TaskSmack(m_installerContext));
@@ -238,7 +239,12 @@ JobWidgetInstall::JobWidgetInstall(std::string const &widgetPath,
                 PKG_TYPE_HYBRID_WEB_APP) {
             AddTask(new TaskInstallOspsvc(m_installerContext));
         }
-        AddTask(new TaskRemoveBackupFiles(m_installerContext));
+        if (m_installerContext.widgetConfig.packagingType !=
+            WrtDB::PKG_TYPE_DIRECTORY_WEB_APP)
+        {
+            AddTask(new TaskRemoveBackupFiles(m_installerContext));
+        }
+
         AddTask(new TaskPluginsCopy(m_installerContext));
         AddTask(new TaskDatabase(m_installerContext));
         AddTask(new TaskAceCheck(m_installerContext));
@@ -285,8 +291,11 @@ JobWidgetInstall::ConfigureResult JobWidgetInstall::PrePareInstallation(
 
         m_installerContext.widgetConfig.packagingType =
             checkPackageType(widgetPath, tempDir);
-        ConfigParserData configData = getWidgetDataFromXML(widgetPath, tempDir,
-                m_installerContext.widgetConfig.packagingType, m_isDRM);
+        ConfigParserData configData = getWidgetDataFromXML(
+            widgetPath,
+            tempDir,
+            m_installerContext.widgetConfig.packagingType,
+            m_isDRM);
         LogDebug("widget packaging type : " <<
                 m_installerContext.widgetConfig.packagingType.pkgType);
         WidgetUpdateInfo update = detectWidgetUpdate(configData);
@@ -525,7 +534,7 @@ ConfigParserData JobWidgetInstall::getWidgetDataFromXML(
                             DPL::FromUTF32String(
                                 L"widget"))));
         } else if (pkgType == PKG_TYPE_DIRECTORY_WEB_APP) {
-            parser.Parse(widgetSource + '/' + CONFIG_XML,
+            parser.Parse(widgetSource + '/' + WITH_OSP_XML,
                          ElementParserPtr(
                              new RootParser<WidgetParser>(
                              configInfo,
index 5d981ea..bf06030 100644 (file)
@@ -49,9 +49,12 @@ TaskFileManipulation::TaskFileManipulation(InstallerContext& context) :
     AddStep(&TaskFileManipulation::StepCreateDirs);
     AddStep(&TaskFileManipulation::StepCreatePrivateStorageDir);
     AddStep(&TaskFileManipulation::StepCreateShareDir);
-    AddStep(&TaskFileManipulation::StepRenamePath);
-
-    AddAbortStep(&TaskFileManipulation::StepAbortRenamePath);
+    if (m_context.widgetConfig.packagingType !=
+        WrtDB::PKG_TYPE_DIRECTORY_WEB_APP)
+    {
+        AddStep(&TaskFileManipulation::StepRenamePath);
+        AddAbortStep(&TaskFileManipulation::StepAbortRenamePath);
+    }
 }
 
 void TaskFileManipulation::StepCreateDirs()
index b1c2179..9395094 100644 (file)
@@ -88,33 +88,20 @@ void TaskPrepareFiles::CopyFile(const std::string& source)
 
 void TaskPrepareFiles::StepCopyFiles()
 {
-    if (m_installerContext.widgetConfig.packagingType == WrtDB::PKG_TYPE_DIRECTORY_WEB_APP)
-    {
-        LogError("Copying files to temp directory...");
-        //TODO: use different copy way - above function looks ok
-        std::string command = "cp -r ";
-        command += m_installerContext.locations->getWidgetSource();
-        command += "/* ";
-        command += m_installerContext.locations->getTemporaryPackageDir();
-        LogInfo("command: " << command);
-        system(command.c_str());
-        //copy all files
-    } else {
-        CopyFile(m_installerContext.locations->getWidgetSource());
+    CopyFile(m_installerContext.locations->getWidgetSource());
 
-        size_t last = m_installerContext.locations->getWidgetSource().find_last_of("\\/");
-        std::string sourceDir = "";
-        if (last != std::string::npos) {
-            sourceDir = m_installerContext.locations->getWidgetSource().substr(0,last+1);
-        }
+    size_t last = m_installerContext.locations->getWidgetSource().find_last_of("\\/");
+    std::string sourceDir = "";
+    if (last != std::string::npos) {
+        sourceDir = m_installerContext.locations->getWidgetSource().substr(0,last+1);
+    }
 
-        LogDebug("Icons copy...");
-        FOREACH(it, m_installerContext.widgetConfig.configInfo.iconsList) {
-            std::ostringstream os;
-            LogDebug("Coping: " << sourceDir << DPL::ToUTF8String(it->src));
-            os << sourceDir << DPL::ToUTF8String(it->src);
-            CopyFile(os.str());
-        }
+    LogDebug("Icons copy...");
+    FOREACH(it, m_installerContext.widgetConfig.configInfo.iconsList) {
+        std::ostringstream os;
+        LogDebug("Coping: " << sourceDir << DPL::ToUTF8String(it->src));
+        os << sourceDir << DPL::ToUTF8String(it->src);
+        CopyFile(os.str());
     }
 }
 
index f495418..13c5a65 100644 (file)
@@ -197,7 +197,10 @@ std::string WidgetLocation::getConfigurationDir() const
         }
         return path;
     }
-    else
+    else if (m_type == WrtDB::PKG_TYPE_DIRECTORY_WEB_APP)
+    {
+        return getWidgetSource() + WrtDB::GlobalConfig::GetWidgetSrcPath();
+    } else
     {
         return getTemporaryRootDir();
     }