Execute AppControl submode for only UI application
authorHyunbin Lee <hyunbin.lee@samsung.com>
Wed, 16 Oct 2013 05:55:21 +0000 (14:55 +0900)
committerHyunbin Lee <hyunbin.lee@samsung.com>
Thu, 17 Oct 2013 00:29:22 +0000 (09:29 +0900)
Change-Id: Icc56cea939f0aa0579936fe53f7303bf826ec084
Signed-off-by: Hyunbin Lee <hyunbin.lee@samsung.com>
src/app/FApp_AppControlManager.cpp

index c40f5d4..15180e4 100644 (file)
@@ -43,6 +43,7 @@
 #include <FAppSqlDataControl.h>
 #include <FAppMapDataControl.h>
 #include <FAppPkgPackageInfo.h>
+#include <FAppPkgPackageAppInfo.h>
 #include <FBaseSysLog.h>
 
 #include <FBase_StringConverter.h>
@@ -636,25 +637,34 @@ _AppControlManager::LaunchApp(const AppId& appId, _AppArg* pArg, int req)
 
        int pid = -1;
        bundle* kb = NULL;
-       String tempId;
-       actualAppId.SubString(0, 10, tempId);
-       tempId += L'.';
-       tempId += String(SUBMODE_NAME);
 
-       // [INFO] Ugly solution for submode support
-       pArg->UpdateAppId(tempId);
-       kb = pArg->GetBundle();
-       
-       pid = appsvc_run_service(kb, req, LaunchResultCb, this);
-       if (pid >= 0)
-       {
-               SysLog(NID_APP, "Submode launch successful");
-               return E_SUCCESS;
-       }
-       else if (pid == APPSVC_RET_EINVAL)
+       std::unique_ptr< PackageAppInfo > pAppInfo(_PackageManagerImpl::GetInstance()->GetPackageAppInfoN(appId));
+       SysTryReturn(NID_APP, pAppInfo != null, E_SYSTEM, GetLastResult(), "[%s] Getting AppInfo failed.", GetErrorMessage(GetLastResult()));
+       _PackageAppInfoImpl* pAppInfoImpl = _PackageAppInfoImpl::GetInstance(pAppInfo.get());
+       SysTryReturnResult(NID_APP, pAppInfoImpl != null , E_SYSTEM, "Severe system error");
+
+       if (pAppInfoImpl->IsServiceApp() == false)
        {
-               SysLog(NID_APP, "Argument overflow");
-               return E_MAX_EXCEEDED;
+               String tempId;
+               actualAppId.SubString(0, 10, tempId);
+               tempId += L'.';
+               tempId += String(SUBMODE_NAME);
+
+               // [INFO] Ugly solution for submode support
+               pArg->UpdateAppId(tempId);
+               kb = pArg->GetBundle();
+
+               pid = appsvc_run_service(kb, req, LaunchResultCb, this);
+               if (pid >= 0)
+               {
+                       SysLog(NID_APP, "Submode launch successful");
+                       return E_SUCCESS;
+               }
+               else if (pid == APPSVC_RET_EINVAL)
+               {
+                       SysLog(NID_APP, "Argument overflow");
+                       return E_MAX_EXCEEDED;
+               }
        }
 
        pArg->UpdateAppId(actualAppId);