Applying filtered API for faster boot process
authorYong Song <yong.song@samsung.com>
Fri, 26 Jul 2013 02:01:24 +0000 (11:01 +0900)
committerYong Song <yong.song@samsung.com>
Tue, 6 Aug 2013 03:19:28 +0000 (12:19 +0900)
Change-Id: Ibea5d0eb166d1047a45ebf3d3beb81726c50fd0e
Signed-off-by: Yong Song <yong.song@samsung.com>
src/AppService.cpp

index c61888a..c2228d6 100644 (file)
@@ -492,7 +492,10 @@ AppService::RegisterPreloadedAppCondition(void)
        SysLog(NID_APP, "Enter.");
 
        HashMap packageFilterMap;
+       HashMap packageAppFilterMap;
+
        packageFilterMap.Construct();
+       packageAppFilterMap.Construct();
 
        String downloadKey = "http://tizen.org/package/downloaded";
        Boolean downloadValue = false;
@@ -504,21 +507,33 @@ AppService::RegisterPreloadedAppCondition(void)
 
        r = packageFilterMap.Add(&extKey, &extValue);
 
-       IList* pList = _PackageManagerImpl::GetInstance()->GetPackageInfoListN(packageFilterMap);
+       String lcKey = "http://tizen.org/package/app/launchcondition";
+       Boolean lcValue = true;
+
+       r = packageAppFilterMap.Add(&lcKey, &lcValue);
+
+
+       IList* pList = _PackageManagerImpl::GetInstance()->GetPackageAppInfoListN(packageFilterMap, packageAppFilterMap);
        if (pList)
        {
+               SysLog(NID_APP, "(launchcondition)Application count(%d)", pList->GetCount());
                for (int i = 0; i < pList->GetCount(); i++)
                {
-                       PackageInfo* pPackageInfo = dynamic_cast <PackageInfo*>(pList->GetAt(i));
-                       if (pPackageInfo)
-                       {
-                               SysLog(NID_APP, "[%d]-------------------------------------------------------", i+1);
-                               SysLog(NID_APP, "Id [%ls]", pPackageInfo->GetId().GetPointer());
-                               SysLog(NID_APP, "Name [%ls]", pPackageInfo->GetDisplayName().GetPointer());
-                               AppService::GetAppServiceInstance()->OnPackageInstallationCompleted(pPackageInfo->GetId(), PACKAGE_INSTALLATION_RESULT_SUCCESS);
-                       }
-               }
+                       PackageAppInfo* pPackageAppInfo = dynamic_cast <PackageAppInfo*>(pList->GetAt(i));
+                       SysTryReturnVoidResult(NID_APP, pPackageAppInfo, E_OBJ_NOT_FOUND, "[E_OBJ_NOT_FOUND] pList->GetAt(%d) failed.", i);
+
+                       ArrayList* pArray = new (std::nothrow) ArrayList(SingleObjectDeleter);
+                       SysTryReturnVoidResult(NID_APP, pArray != null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Array allocation failure.");
+
+                       pArray->Construct();
 
+                       pArray->Add(new (std::nothrow) String(_PackageManagerImpl::GetPackageIdByAppId((pPackageAppInfo->GetAppId()))));
+                       pArray->Add(new (std::nothrow) String(pPackageAppInfo->GetAppName()));
+                       pArray->Add(new (std::nothrow) String(pPackageAppInfo->GetAppId()));
+
+                       result r = __handlerThread.SendUserEvent(HANDLER_REQUEST_INSTALL_COMPLETE, pArray);
+                       SysTryLog(NID_APP, !IsFailed(r), "[%s] Propagated.", GetErrorMessage(r));
+               }
                pList->RemoveAll(true);
                delete pList;
        }