Osp-Installer merge changes from tizen_2.2
[platform/framework/native/installer.git] / src / Step / UninstallStep.cpp
index 55306e8..a653d2a 100755 (executable)
@@ -32,7 +32,6 @@
 #include "UninstallStep.h"
 #include "InstallerUtil.h"
 #include "CompatibilityManager.h"
-#include "DeviceManager.h"
 
 using namespace Tizen::Base;
 using namespace Tizen::Base::Collection;
@@ -120,6 +119,8 @@ UninstallStep::GoNextState(void)
 InstallerError
 UninstallStep::OnStateGetPackageInfo(void)
 {
+       bool res = true;
+       result r = E_SUCCESS;
        InstallerError error = INSTALLER_ERROR_NONE;
        PackageId packageId = __pContext->__packageId;
 
@@ -128,7 +129,7 @@ UninstallStep::OnStateGetPackageInfo(void)
 
        AppLog("package = %ls", packageId.GetPointer());
 
-       result r = pPackageInfoImpl->Construct(packageId);
+       r = pPackageInfoImpl->Construct(packageId);
        TryReturn(r == E_SUCCESS, INSTALLER_ERROR_INTERNAL_STATE, "pPackageInfoImpl->Construct(%ls) failed.", packageId.GetPointer());
 
 //     bool isUninstallable = pPackageInfoImpl->IsUninstallable();
@@ -146,14 +147,10 @@ UninstallStep::OnStateGetPackageInfo(void)
                __pContext->__isPreloaded = true;
        }
 
-       __pContext->__rootPath = pPackageInfoImpl->GetAppRootPath();
+       //res = IsAvailableUninstall();
+       //TryReturn(res == true, INSTALLER_ERROR_DISABLED, "IsAvailableUninstall(%ls) failed.", packageId.GetPointer());
 
-       if (__pContext->__isHybridService == true)
-       {
-               AppLog("Uninstallation for HybridService");
-               __state = STATE_TERMINATE_APP;
-               return error;
-       }
+       __pContext->__rootPath = pPackageInfoImpl->GetAppRootPath();
 
        if (pPackageInfoImpl->IsInstalledInExternalStorage() == true)
        {
@@ -174,27 +171,26 @@ UninstallStep::OnStateGetPackageInfo(void)
                AppLog("[app2sd] pre_uninstall(%s)", pPackageId.get());
        }
 
-       ArrayList* pList = pPackageInfoImpl->GetAppInfoListN();
+       std::unique_ptr< ArrayList > pList(pPackageInfoImpl->GetAppInfoListN());
        TryReturn(pList, INSTALLER_ERROR_DATABASE, "pList is null.");
 
-       for (int i = 0; i < pList->GetCount(); i++)
+       for (int i = 0; i < pList.get()->GetCount(); i++)
        {
-               _PackageAppInfoImpl* pAppInfoImpl = dynamic_cast<_PackageAppInfoImpl*>(pList->GetAt(i));
+               _PackageAppInfoImpl* pAppInfoImpl = dynamic_cast<_PackageAppInfoImpl*>(pList.get()->GetAt(i));
                if (pAppInfoImpl)
                {
-                       AppData* pAppData = new (std::nothrow) AppData;
-                       TryReturn(pAppData, INSTALLER_ERROR_OUT_OF_MEMORY, "pAppData is null");
+                       std::unique_ptr< AppData > pAppData(new (std::nothrow) AppData);
+                       TryReturn(pAppData, INSTALLER_ERROR_OUT_OF_MEMORY, "pAppData is null.");
 
-                       error = pAppData->Construct();
-                       TryReturn(error == INSTALLER_ERROR_NONE, INSTALLER_ERROR_INTERNAL_STATE, "pAppData->Construct() failed.");
+                       error = pAppData.get()->Construct();
+                       TryReturn(error == INSTALLER_ERROR_NONE, INSTALLER_ERROR_INTERNAL_STATE, "pAppData.get()->Construct() failed.");
 
-                       pAppData->__appId = pAppInfoImpl->GetPackageName();
-                       pAppData->__feature = pAppInfoImpl->GetAppFeature();
+                       pAppData.get()->__appId = pAppInfoImpl->GetPackageName();
+                       pAppData.get()->__feature = pAppInfoImpl->GetAppFeature();
 
-                       __pContext->__pAppDataList->Add(pAppData);
+                       __pContext->__pAppDataList->Add(pAppData.release());
                }
        }
-       delete pList;
 
        GoNextState();
        return error;
@@ -205,12 +201,6 @@ UninstallStep::OnStatePolicyCheck(void)
 {
        InstallerError error = INSTALLER_ERROR_NONE;
 
-       DeviceManager deviceManager;
-       deviceManager.Construct(__pContext);
-
-       bool res = deviceManager.IsUninstallationDisabled();
-       TryReturn(res == false, INSTALLER_ERROR_DISABLED, "IsUninstallationDisabled() failed.");
-
        GoNextState();
        return error;
 }
@@ -220,7 +210,7 @@ UninstallStep::OnStateTerminateApp(void)
 {
        InstallerError error = INSTALLER_ERROR_NONE;
 
-       InstallerUtil::TerminateApps(__pContext->__packageId);
+       InstallerUtil::TerminateApps(__pContext->__packageId, true);
 
        GoNextState();
        return error;
@@ -279,25 +269,18 @@ UninstallStep::OnStateRemoveDir(void)
 
        AppLog("Directory::Remove - START");
 
-       if (__pContext->__isHybridService == true)
+       String realPath;
+       if (InstallerUtil::IsSymlink(rootPath) == true)
        {
-               AppLog("Uninstallation for HybridService - skip Remove");
-
-       }
-       else
-       {
-               String realPath;
-               if (InstallerUtil::IsSymlink(rootPath) == true)
+               if (InstallerUtil::GetRealPath(rootPath, realPath) == true)
                {
-                       if (InstallerUtil::GetRealPath(rootPath, realPath) == true)
-                       {
-                               InstallerUtil::Remove(realPath);
-                       }
+                       InstallerUtil::Remove(realPath);
                }
-
-               InstallerUtil::Remove(rootPath);
        }
 
+       InstallerUtil::Remove(rootPath);
+
+
        IListT<AppData*>* pAppDataList = __pContext->__pAppDataList;
        TryReturn(pAppDataList, INSTALLER_ERROR_INTERNAL_STATE, "pAppDataList is null");