Fixed can not install to sdcard
authorSoyoung Kim <sy037.kim@samsung.com>
Fri, 5 Apr 2013 02:58:01 +0000 (11:58 +0900)
committerGerrit Code Review <gerrit2@kim11>
Tue, 9 Apr 2013 07:13:25 +0000 (16:13 +0900)
[Issue#] N/A
[Problem] could not install to sdcard.
[Cause] bug in compare string.
[Solution] fixed compre string during check "location-type" field.
[SCMRequest] N/A

Change-Id: Iee38b1f52d2f2b7881052d8a7c1212138fda6cc6

src/jobs/widget_install/job_widget_install.cpp
src/jobs/widget_install/task_file_manipulation.cpp
src/jobs/widget_uninstall/job_widget_uninstall.cpp
src/jobs/widget_uninstall/job_widget_uninstall.h
src/jobs/widget_uninstall/task_remove_files.cpp
src/jobs/widget_uninstall/task_remove_files.h
src/jobs/widget_uninstall/uninstaller_context.h

index 4976db7..692b458 100644 (file)
@@ -92,7 +92,7 @@ const size_t PACKAGE_ID_LENGTH = 10;
 static const DPL::String SETTING_VALUE_ENCRYPTION = L"encryption";
 static const DPL::String SETTING_VALUE_ENCRYPTION_ENABLE = L"enable";
 const DPL::String SETTING_VALUE_INSTALLTOEXT_NAME =
-    L"install-location-type";
+    L"install-location";
 const DPL::String SETTING_VALUE_INSTALLTOEXT_PREPER_EXT =
     L"prefer-external";
 
index a96b8ce..f044af9 100644 (file)
@@ -47,7 +47,6 @@ using namespace WrtDB;
 
 namespace {
 const char* GLIST_RES_DIR = "res";
-const char* GLIST_BIN_DIR = "bin";
 
 bool _FolderCopy(std::string source, std::string dest)
 {
@@ -106,7 +105,7 @@ TaskFileManipulation::TaskFileManipulation(InstallerContext& context) :
     m_extHandle(NULL)
 {
     if (INSTALL_LOCATION_TYPE_EXTERNAL !=
-        m_context.locationType)
+            m_context.locationType)
     {
         AddStep(&TaskFileManipulation::StepCreateDirs);
         AddStep(&TaskFileManipulation::StepCreatePrivateStorageDir);
@@ -238,10 +237,10 @@ void TaskFileManipulation::StepPrepareExternalDir()
 {
     LogDebug("Step prepare to install in exernal directory");
     Try {
-        std::string appid =
-            DPL::ToUTF8String(m_context.widgetConfig.tzAppid);
+        std::string pkgid =
+            DPL::ToUTF8String(m_context.widgetConfig.tzPkgid);
 
-        WidgetInstallToExtSingleton::Instance().initialize(appid);
+        WidgetInstallToExtSingleton::Instance().initialize(pkgid);
 
         size_t totalSize =
             Utils::getFolderSize(m_context.locations->getTemporaryPackageDir());
@@ -251,20 +250,16 @@ void TaskFileManipulation::StepPrepareExternalDir()
         GList *list = NULL;
         app2ext_dir_details* dirDetail = NULL;
 
-        std::string dirNames[2] = { GLIST_RES_DIR, GLIST_BIN_DIR };
-
-        for (int i = 0; i < 2; i++) {
-            dirDetail = (app2ext_dir_details*) calloc(1,
-                                                      sizeof(
-                                                          app2ext_dir_details));
-            if (NULL == dirDetail) {
-                ThrowMsg(Exceptions::ErrorExternalInstallingFailure,
-                         "error in app2ext");
-            }
-            dirDetail->name = strdup(dirNames[i].c_str());
-            dirDetail->type = APP2EXT_DIR_RO;
-            list = g_list_append(list, dirDetail);
+        dirDetail = (app2ext_dir_details*) calloc(1,
+                sizeof(
+                    app2ext_dir_details));
+        if (NULL == dirDetail) {
+            ThrowMsg(Exceptions::ErrorExternalInstallingFailure,
+                    "error in app2ext");
         }
+        dirDetail->name = strdup(GLIST_RES_DIR);
+        dirDetail->type = APP2EXT_DIR_RO;
+        list = g_list_append(list, dirDetail);
 
         if (m_context.isUpdateMode) {
             WidgetInstallToExtSingleton::Instance().preUpgrade(list,
@@ -275,6 +270,10 @@ void TaskFileManipulation::StepPrepareExternalDir()
         }
         free(dirDetail);
         g_list_free(list);
+
+        /* make bin directory */
+        std::string widgetBinPath = m_context.locations->getBinaryDir();
+        WrtUtilMakeDir(widgetBinPath);
     }
     Catch(WidgetInstallToExt::Exception::ErrorInstallToExt)
     {
index 2005f21..4dc7745 100644 (file)
@@ -89,7 +89,6 @@ JobWidgetUninstall::JobWidgetUninstall(
     m_context.removeAbnormal = false;
     m_context.uninstallStep = UninstallerContext::UNINSTALL_START;
     m_context.job = this;
-    m_context.isExternalWidget = getExternalWidgetFlag();
 
     Try
     {
@@ -243,17 +242,5 @@ void JobWidgetUninstall::SaveExceptionData(const Jobs::JobExceptionBase &e)
     m_exceptionCaught = static_cast<Jobs::Exceptions::Type>(e.getParam());
     m_exceptionMessage = e.GetMessage();
 }
-
-bool JobWidgetUninstall::getExternalWidgetFlag() const
-{
-    LogDebug("Get external widget");
-    if (APP2EXT_SD_CARD ==
-        app2ext_get_app_location(m_context.tzAppid.c_str()))
-    {
-        LogDebug("This widget is in external stroage");
-        return true;
-    }
-    return false;
-}
 } //namespace WidgetUninstall
 } //namespace Jobs
index d38d551..1ea6fe5 100644 (file)
@@ -55,7 +55,6 @@ class JobWidgetUninstall :
     std::string getRemovedTizenId() const;
     bool getRemoveStartedFlag() const;
     bool getRemoveFinishedFlag() const;
-    bool getExternalWidgetFlag() const;
 
     enum class WidgetStatus
     {
index d000f4a..7d501be 100644 (file)
@@ -48,11 +48,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 +61,32 @@ TaskRemoveFiles::~TaskRemoveFiles()
 void TaskRemoveFiles::StepRemoveInstallationDirectory()
 {
     LogInfo("StepRemoveInstallationDirectory started");
-
-    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");
+    if (APP2EXT_SD_CARD !=
+            app2ext_get_app_location(m_context.tzPkgid.c_str()))
+    {
+        LogDebug("Removing 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");
+        }
+    } 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);
+        }
     }
     m_context.job->UpdateProgress(
         UninstallerContext::UNINSTALL_REMOVE_WIDGETDIR,
@@ -154,20 +166,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
index 0336443..2ea7375 100644 (file)
@@ -52,7 +52,6 @@ class TaskRemoveFiles :
     void StepRemoveManifest();
     void StepRemoveExternalLocations();
     void StepRemoveVconf();
-    void StepRemoveExternalWidget();
 
   public:
     explicit TaskRemoveFiles(UninstallerContext& context);
index 15625d1..f705b78 100644 (file)
@@ -61,7 +61,6 @@ struct UninstallerContext
     Jobs::WidgetUninstall::JobWidgetUninstall *job;
     std::string tzAppid;
     std::string tzPkgid;
-    bool isExternalWidget;
     bool removeAbnormal;
 };