[Release] wrt-installer_0.1.55
[framework/web/wrt-installer.git] / src / jobs / widget_uninstall / task_remove_files.cpp
old mode 100644 (file)
new mode 100755 (executable)
index d000f4a..709b4a5
 #include <widget_uninstall/task_remove_files.h>
 #include <widget_uninstall/job_widget_uninstall.h>
 #include <widget_uninstall/uninstaller_context.h>
+#include <widget_uninstall/widget_uninstall_errors.h>
 #include <dpl/wrt-dao-rw/widget_dao.h>
 #include <dpl/wrt-dao-ro/widget_config.h>
 #include <dpl/wrt-dao-ro/vconf_config.h>
 #include <dpl/assert.h>
+#include <dpl/exception.h>
 #include <dpl/utils/wrt_utility.h>
 #include <ail.h>
 #include <pkgmgr/pkgmgr_parser.h>
@@ -48,11 +50,7 @@ TaskRemoveFiles::TaskRemoveFiles(UninstallerContext& context) :
     DPL::TaskDecl<TaskRemoveFiles>(this),
     m_context(context)
 {
-    if (!m_context.isExternalWidget) {
-        AddStep(&TaskRemoveFiles::StepRemoveInstallationDirectory);
-    } else {
-        AddStep(&TaskRemoveFiles::StepRemoveExternalWidget);
-    }
+    AddStep(&TaskRemoveFiles::StepRemoveInstallationDirectory);
     AddStep(&TaskRemoveFiles::StepRemoveManifest);
     AddStep(&TaskRemoveFiles::StepRemoveExternalLocations);
     AddStep(&TaskRemoveFiles::StepRemoveVconf);
@@ -65,16 +63,36 @@ TaskRemoveFiles::~TaskRemoveFiles()
 void TaskRemoveFiles::StepRemoveInstallationDirectory()
 {
     LogInfo("StepRemoveInstallationDirectory started");
+    Try {
+        if (APP2EXT_SD_CARD !=
+                app2ext_get_app_location(m_context.tzPkgid.c_str()))
+        {
+            LogDebug("Removing directory");
+            m_context.removeStarted = true;
+            if (!WrtUtilRemove(m_context.installedPath)) {
+                LogError("Removing widget installation directory failed : " <<
+                        m_context.installedPath);
+            }
+            std::string dataDir = m_context.locations->getUserDataRootDir();
+            if (!WrtUtilRemove(dataDir)) {
+                LogWarning(dataDir + " is already removed");
+            }
+        } else {
+            LogDebug("Removing sdcard directory");
+            Try {
+                WidgetInstallToExtSingleton::Instance().initialize(m_context.tzPkgid);
+                WidgetInstallToExtSingleton::Instance().uninstallation();
+                WidgetInstallToExtSingleton::Instance().deinitialize();
+            }
+            Catch(WidgetInstallToExt::Exception::ErrorInstallToExt)
+            {
+                Throw(Jobs::WidgetUninstall::TaskRemoveFiles::Exception::
+                        RemoveFilesFailed);
+            }
+        }
+    } Catch(Exception::RemoveFilesFailed) {
+        ThrowMsg(Exceptions::RemoveFileFailure, "Cann't remove directory");
 
-    m_context.removeStarted = true;
-    std::string widgetDir =
-        m_context.locations->getPackageInstallationDir();
-    if (!WrtUtilRemove(widgetDir)) {
-        LogWarning("Removing widget installation directory failed");
-    }
-    std::string dataDir = m_context.locations->getUserDataRootDir();
-    if (!WrtUtilRemove(dataDir)) {
-        LogWarning(dataDir + " is already removed");
     }
     m_context.job->UpdateProgress(
         UninstallerContext::UNINSTALL_REMOVE_WIDGETDIR,
@@ -95,7 +113,14 @@ void TaskRemoveFiles::StepRemoveManifest()
     std::ostringstream manifest_name;
     manifest_name << m_context.tzPkgid << ".xml";
     std::ostringstream destFile;
-    destFile << "/opt/share/packages" << "/"; //TODO constant with path
+    const std::string PRELOAD_INSTALLED_PATH = "/usr/apps";
+    if (0 == (m_context.installedPath).compare(0, PRELOAD_INSTALLED_PATH.length(),
+                PRELOAD_INSTALLED_PATH)) {
+        LogDebug("This widget is prealoded.");
+        destFile << "/usr/share/packages" << "/"; //TODO constant with path
+    } else {
+        destFile << "/opt/share/packages" << "/"; //TODO constant with path
+    }
     destFile << manifest_name.str();
     int ret1 = pkgmgr_parser_parse_manifest_for_uninstallation(
             destFile.str().c_str(), NULL);
@@ -154,20 +179,5 @@ void TaskRemoveFiles::StepRemoveVconf()
         }
     }
 }
-
-void TaskRemoveFiles::StepRemoveExternalWidget()
-{
-    Try {
-        WidgetInstallToExtSingleton::Instance().initialize(m_context.tzPkgid);
-        WidgetInstallToExtSingleton::Instance().uninstallation();
-        WidgetInstallToExtSingleton::Instance().deinitialize();
-    }
-    Catch(WidgetInstallToExt::Exception::ErrorInstallToExt)
-    {
-        Throw(
-            Jobs::WidgetUninstall::TaskRemoveFiles::Exception::
-                RemoveFilesFailed);
-    }
-}
 } //namespace WidgetUninstall
 } //namespace Jobs