//
-// Open Service Platform
// Copyright (c) 2012 Samsung Electronics Co., Ltd.
//
// Licensed under the Apache License, Version 2.0 (the License);
#include <FIoDatabase.h>
#include <FIoDbEnumerator.h>
#include <FIoDbStatement.h>
+#include <FIoFile.h>
#include <FBaseSysLog.h>
+#include <FBaseUtilStringTokenizer.h>
#include <FSecPrivilegeInfo.h>
#include <FBase_StringConverter.h>
-#include <FBaseUtilStringTokenizer.h>
+#include <FSec_PrivilegeManager.h>
+#include "FApp_PackageManagerProxy.h"
#include "FAppPkg_PackageManagerImpl.h"
#include "FAppPkg_PackageInfoImpl.h"
#include "FAppPkg_PackageAppInfoImpl.h"
PackageType
_PackageInfoImpl::GetType(void) const
{
- return __packageType;
+ SysTryReturn(NID_APP, __id.IsEmpty() == false, PACKAGE_TYPE_TPK, E_SYSTEM, "[E_SYSTEM] id.IsEmpty() is empty.");
+
+ result r = E_SUCCESS;
+ PackageType type = PACKAGE_TYPE_TPK;
+
+ _PackageManagerProxy packageManagerProxy;
+ r = packageManagerProxy.Construct();
+ SysTryReturn(NID_APP, r == E_SUCCESS, PACKAGE_TYPE_TPK, E_SYSTEM, "packageManagerProxy.Construct() failed.");
+
+ type = packageManagerProxy.GetType(__id);
+ SysTryReturn(NID_APP, r == E_SUCCESS, PACKAGE_TYPE_TPK, r, "packageManagerProxy.GetType(%ls) failed.", __id.GetPointer());
+
+ return type;
}
result
if (__fromDatabase)
{
- SysTryReturn(NID_APP, __packageInfoHandle, 0, E_SYSTEM, "[E_SYSTEM] __packageInfoHandle is null.");
+ SysTryReturn(NID_APP, __id.IsEmpty() == false, 0, E_SYSTEM, "id is IsEmpty.");
+ SysTryReturn(NID_APP, __type.IsEmpty() == false, 0, E_SYSTEM, "type is IsEmpty.");
- int result = PMINFO_R_OK;
+ std::unique_ptr<char[]> pPackage(_StringConverter::CopyToCharArrayN(__id));
+ SysTryReturn(NID_APP, pPackage, 0, E_OUT_OF_MEMORY, "pPackage is null.");
- result = pkgmgrinfo_pkginfo_get_total_size(__packageInfoHandle, &size);
- if (result == PMINFO_R_OK)
- {
- SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_total_size(): size = [%d]", size);
- }
- else
- {
- SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_total_size() is failed. result = [%d]", result);
- }
+ std::unique_ptr<char[]> pType(_StringConverter::CopyToCharArrayN(__type));
+ SysTryReturn(NID_APP, pType, 0, E_OUT_OF_MEMORY, "pType is null.");
+
+ void* pClient = pkgmgr_client_new(PC_REQUEST);
+ SysTryReturn(NID_APP, pClient, 0, E_SYSTEM, "pkgmgr_client_new() failed.");
+
+ SysLog(NID_APP, "pkgmgr_client_request_service(PM_REQUEST_GET_SIZE, %s, %s)", pType.get(), pPackage.get());
+ size = pkgmgr_client_request_service(PM_REQUEST_GET_SIZE, 0, pClient, pType.get(), pPackage.get(), null, null, null);
+
+ pkgmgr_client_free(pClient);
}
else
{
SysLog(NID_APP, "GetSize() is not available.");
}
+ SysLog(NID_APP, "size = [%d]", size);
+
return (long long) size;
}
if (__fromDatabase)
{
- SysTryReturn(NID_APP, __packageInfoHandle, 0, E_SYSTEM, "[E_SYSTEM] __packageInfoHandle is null.");
+ SysTryReturn(NID_APP, __id.IsEmpty() == false, 0, E_SYSTEM, "id is IsEmpty.");
+ SysTryReturn(NID_APP, __type.IsEmpty() == false, 0, E_SYSTEM, "type is IsEmpty.");
- int result = PMINFO_R_OK;
+ std::unique_ptr<char[]> pPackage(_StringConverter::CopyToCharArrayN(__id));
+ SysTryReturn(NID_APP, pPackage, 0, E_OUT_OF_MEMORY, "pPackage is null.");
- result = pkgmgrinfo_pkginfo_get_data_size(__packageInfoHandle, &dataSize);
- if (result == PMINFO_R_OK)
- {
- SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_data_size(): dataSize = [%d]", dataSize);
- }
- else
- {
- SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_data_size() is failed. result = [%d]", result);
- }
+ std::unique_ptr<char[]> pType(_StringConverter::CopyToCharArrayN(__type));
+ SysTryReturn(NID_APP, pType, 0, E_OUT_OF_MEMORY, "pType is null.");
+
+ void* pClient = pkgmgr_client_new(PC_REQUEST);
+ SysTryReturn(NID_APP, pClient, 0, E_SYSTEM, "pkgmgr_client_new() failed.");
+
+ SysLog(NID_APP, "pkgmgr_client_request_service(PM_REQUEST_GET_SIZE, %s, %s)", pType.get(), pPackage.get());
+ dataSize = pkgmgr_client_request_service(PM_REQUEST_GET_SIZE, 1, pClient, pType.get(), pPackage.get(), null, null, null);
+
+ pkgmgr_client_free(pClient);
}
else
{
SysLog(NID_APP, "GetDataSize() is not available.");
}
+ SysLog(NID_APP, "dataSize = [%d]", dataSize);
+
return (long long) dataSize;
}
PackageAppInfo* pPackageAppInfo = dynamic_cast <PackageAppInfo*>(__pPackageAppInfoList->GetAt(i));
if (pPackageAppInfo)
{
- PackageAppInfo* pInfo = new (std::nothrow) PackageAppInfo;
+ std::unique_ptr< PackageAppInfo > pInfo(new (std::nothrow) PackageAppInfo);
SysTryReturn(NID_APP, pInfo, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Insufficient memory");
- _PackageAppInfoImpl* pPackageAppInfoImpl = _PackageAppInfoImpl::GetInstance(pInfo);
+ _PackageAppInfoImpl* pPackageAppInfoImpl = _PackageAppInfoImpl::GetInstance(pInfo.get());
SysTryReturn(NID_APP, pPackageAppInfoImpl, null, E_SYSTEM, "pPackageAppInfoImpl is null.");
AppId appId = pPackageAppInfo->GetAppId();
pPackageAppInfoImpl->SetMenuIconVisible(menuIconVisible);
pPackageAppInfoImpl->SetMainApp(mainApp);
- r = pList->Add(*pInfo);
+ r = pList->Add(*pInfo.release());
}
}
}
res = pkgmgrinfo_appinfo_get_appinfo(pAppId.get(), &appInfoHandle);
if (res == 0)
{
- SysLog(NID_APP, "pkgmgrinfo_appinfo_get_appinfo(): appId = [%s]", pAppId.get());
+ SysLog(NID_APP, "pkgmgrinfo_appinfo_get_appinfo(): app = [%s]", pAppId.get());
PackageAppInfo* pPackageAppInfo = new (std::nothrow) PackageAppInfo;
SysTryReturn(NID_APP, pPackageAppInfo != null, 0, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Insufficient memory");
continue;
}
- PackageAppInfo* pInfo = new (std::nothrow) PackageAppInfo;
+ _PackageAppInfoImpl* pPackageAppInfoImpl = _PackageAppInfoImpl::GetInstance(pPackageAppInfo);
+ SysTryReturn(NID_APP, pPackageAppInfoImpl, null, E_SYSTEM, "pPackageAppInfoImpl is null.");
+
+ std::unique_ptr< PackageAppInfo > pInfo(new (std::nothrow) PackageAppInfo);
SysTryReturn(NID_APP, pInfo, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Insufficient memory");
- _PackageAppInfoImpl* pPackageAppInfoImpl = _PackageAppInfoImpl::GetInstance(pInfo);
- SysTryReturn(NID_APP, pPackageAppInfoImpl, null, E_SYSTEM, "pPackageAppInfoImpl is null.");
+ _PackageAppInfoImpl* pImpl = _PackageAppInfoImpl::GetInstance(pInfo.get());
+ SysTryReturn(NID_APP, pImpl, null, E_SYSTEM, "pImpl is null.");
String appName = pPackageAppInfo->GetAppName();
String appDisplayName = pPackageAppInfo->GetAppDisplayName();
bool menuIconVisible = pPackageAppInfo->IsMenuIconVisible();
bool mainApp = pPackageAppInfo->IsMainApp();
- pPackageAppInfoImpl->SetAppId(appId);
- pPackageAppInfoImpl->SetAppName(appName);
- pPackageAppInfoImpl->SetAppDisplayName(appDisplayName);
- pPackageAppInfoImpl->SetMenuIconVisible(menuIconVisible);
- pPackageAppInfoImpl->SetMainApp(mainApp);
+ int size = 0;
+ char* pIcon = pPackageAppInfoImpl->GetAppMenuIconBufferN(size);
+ if (pIcon)
+ {
+ pImpl->SetAppMenuIconBuffer(pIcon, size);
+ delete [] pIcon;
+ }
+
+ pImpl->SetAppId(appId);
+ pImpl->SetAppName(appName);
+ pImpl->SetAppDisplayName(appDisplayName);
+ pImpl->SetMenuIconVisible(menuIconVisible);
+ pImpl->SetMainApp(mainApp);
- return pInfo;
+ return pInfo.release();
}
}
}
res = pkgmgrinfo_appinfo_get_appid(handle, &pAppId);
if (res == 0)
{
- SysLog(NID_APP, "pkgmgrinfo_appinfo_get_appid(): appId = [%s]", pAppId);
+ SysLog(NID_APP, "pkgmgrinfo_appinfo_get_appid(): app = [%s]", pAppId);
pPackageAppInfoImpl->Construct(pAppId);
}
else
return true;
}
-ArrayList*
+IList*
_PackageInfoImpl::GetPrivilegeListN(void) const
{
- SysTryReturn(NID_APP, __pPrivilegeList, null, E_SYSTEM, "__pPrivilegeList must not be null.");
-
result r = E_SUCCESS;
- ArrayList* pPrivilegeList = new (std::nothrow) ArrayList;
+ std::unique_ptr< ArrayList > pPrivilegeList(new (std::nothrow) ArrayList);
SysTryReturn(NID_APP, pPrivilegeList, null, E_OUT_OF_MEMORY, "pPrivilegeList must not be null.");
pPrivilegeList->Construct();
- for (int i = 0; i < __pPrivilegeList->GetCount(); i++)
+ if (__fromDatabase)
+ {
+ SysTryReturn(NID_APP, __id.IsEmpty() == false, null, E_SYSTEM, "__id is empty.");
+
+ std::unique_ptr< IList > pList(_PrivilegeManager::GetPrivilegeListN(__id));
+ if (pList == null)
+ {
+ SysLog(NID_APP, "_PrivilegeManager::GetPrivilegeListN() is null.");
+ return null;
+ }
+
+ for (int i = 0; i < pList->GetCount(); i++)
+ {
+ String* pPrivilege = dynamic_cast < String* >(pList->GetAt(i));
+ if (pPrivilege)
+ {
+ std::unique_ptr< PrivilegeInfo > pPrivilegeInfo(new (std::nothrow) PrivilegeInfo);
+ SysTryReturn(NID_APP, pPrivilegeInfo, null, E_OUT_OF_MEMORY, "pPrivilegeInfo must not be null.");
+
+ r = pPrivilegeInfo->Construct(*pPrivilege);
+ SysTryReturn(NID_APP, !IsFailed(r), null, E_SYSTEM, "pPrivilegeInfo->Construct() failed.");
+
+ r = pPrivilegeList->Add(*pPrivilegeInfo.release());
+ SysTryReturn(NID_APP, !IsFailed(r), null, E_SYSTEM, "pPrivilegeList->Add() failed.");
+ }
+ }
+ }
+ else
{
- String* pPrivilege = dynamic_cast <String*>(__pPrivilegeList->GetAt(i));
- if (pPrivilege)
+ if (__pPrivilegeList)
{
- PrivilegeInfo* pPrivilegeInfo = new (std::nothrow) PrivilegeInfo;
- SysTryReturn(NID_APP, pPrivilegeInfo, null, E_OUT_OF_MEMORY, "pPrivilegeInfo must not be null.");
+ for (int i = 0; i < __pPrivilegeList->GetCount(); i++)
+ {
+ String* pPrivilege = dynamic_cast < String* >(__pPrivilegeList->GetAt(i));
+ if (pPrivilege)
+ {
+ std::unique_ptr< PrivilegeInfo > pPrivilegeInfo(new (std::nothrow) PrivilegeInfo);
+ SysTryReturn(NID_APP, pPrivilegeInfo, null, E_OUT_OF_MEMORY, "pPrivilegeInfo must not be null.");
- pPrivilegeInfo->Construct(*pPrivilege);
+ r = pPrivilegeInfo->Construct(*pPrivilege);
+ SysTryReturn(NID_APP, !IsFailed(r), null, E_SYSTEM, "pPrivilegeInfo->Construct() failed.");
- r = pPrivilegeList->Add(*pPrivilegeInfo);
+ r = pPrivilegeList->Add(*pPrivilegeInfo.release());
+ SysTryReturn(NID_APP, !IsFailed(r), null, E_SYSTEM, "pPrivilegeList->Add() failed.");
+ }
+ }
}
- }
+ }
- return pPrivilegeList;
+ if (pPrivilegeList->GetCount() <= 0)
+ {
+ SysLog(NID_APP, "pPrivilegeList->GetCount() is invalid.");
+ return null;
+ }
+
+ return pPrivilegeList.release();
}
result
return r;
}
+bool
+_PackageInfoImpl::IsPreloaded(void) const
+{
+ return __preloaded;
+}
+
+bool
+_PackageInfoImpl::IsUpdated(void) const
+{
+ return __updated;
+}
+
result
_PackageInfoImpl::AddPackageAppInfo(const PackageAppInfo& packageAppInfo)
{
, __uninstallable(true)
, __movable(false)
, __downloaded(false)
+ , __preloaded(false)
+ , __updated(false)
, __iconAvailable(false)
, __externalStorage(false)
, __fromDatabase(false)
int installedTime = 0;
pkgmgrinfo_installed_storage storage = PMINFO_INTERNAL_STORAGE;
bool removable = true;
+ bool movable = true;
+ bool preloaded = false;
+ bool updated = false;
std::unique_ptr<char[]> pPackageId(_StringConverter::CopyToCharArrayN(packageId));
SysTryReturnResult(NID_APP, pPackageId, E_OUT_OF_MEMORY, "pPackageId is null");
result = pkgmgrinfo_pkginfo_get_pkginfo(pPackageId.get(), &__packageInfoHandle);
- SysTryReturnResult(NID_APP, result == PMINFO_R_OK, E_PKG_NOT_INSTALLED, "pkgmgrinfo_pkginfo_get_pkginfo() is failed. result=[%d], packageId=[%s]", result, pPackageId.get());
+ SysTryReturnResult(NID_APP, result == PMINFO_R_OK, E_PKG_NOT_INSTALLED, "pkgmgrinfo_pkginfo_get_pkginfo() is failed. result=[%d], package=[%s]", result, pPackageId.get());
__fromDatabase = true;
result = pkgmgrinfo_pkginfo_get_pkgname(__packageInfoHandle, &pPackage);
if (result == PMINFO_R_OK)
{
- SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_pkgname(): package = [%s]", pPackage);
String package(pPackage);
__id = package;
}
result = pkgmgrinfo_pkginfo_get_version(__packageInfoHandle, &pVersion);
if (result == PMINFO_R_OK)
{
- SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_version(): version = [%s]", pVersion);
String version(pVersion);
__version = version;
}
result = pkgmgrinfo_pkginfo_get_type(__packageInfoHandle, &pType);
if (result == PMINFO_R_OK)
{
- SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_type(): type = [%s]", pType);
String type(pType);
__type = type;
}
result = pkgmgrinfo_pkginfo_get_label(__packageInfoHandle, &pName);
if (result == PMINFO_R_OK)
{
- SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_label(): name = [%s]", pName);
String Name(pName);
__displayName = Name;
}
result = pkgmgrinfo_pkginfo_get_icon(__packageInfoHandle, &pIconPath);
if (result == PMINFO_R_OK)
{
- SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_icon(): iconpath = [%s]", pIconPath);
String path(pIconPath);
__appIconPath = path;
}
result = pkgmgrinfo_pkginfo_is_removable(__packageInfoHandle, &removable);
if (result == PMINFO_R_OK)
{
- SysLog(NID_APP, "pkgmgrinfo_pkginfo_is_removable(): removable = [%d]", removable);
-
if (removable == false)
{
__uninstallable = false;
SysLog(NID_APP, "pkgmgrinfo_pkginfo_is_removable() is failed. result = [%d]", result);
}
+ result = pkgmgrinfo_pkginfo_is_movable(__packageInfoHandle, &movable);
+ if (result == PMINFO_R_OK)
+ {
+ __movable = movable;
+ }
+ else
+ {
+ SysLog(NID_APP, "pkgmgrinfo_pkginfo_is_movable() is failed. result = [%d]", result);
+ }
+
+ result = pkgmgrinfo_pkginfo_is_preload(__packageInfoHandle, &preloaded);
+ if (result == PMINFO_R_OK)
+ {
+ __preloaded = preloaded;
+ }
+ else
+ {
+ SysLog(NID_APP, "pkgmgrinfo_pkginfo_is_preload() is failed. result = [%d]", result);
+ }
+
+ result = pkgmgrinfo_pkginfo_is_update(__packageInfoHandle, &updated);
+ if (result == PMINFO_R_OK)
+ {
+ __updated = updated;
+ }
+ else
+ {
+ SysLog(NID_APP, "pkgmgrinfo_pkginfo_is_update() is failed. result = [%d]", result);
+ }
+
+ if (updated == true)
+ {
+ __downloaded = true;
+ }
+ else
+ {
+ if (preloaded == true)
+ {
+ __downloaded = false;
+ }
+ else
+ {
+ __downloaded = true;
+ }
+ }
+
result = pkgmgrinfo_pkginfo_get_description(__packageInfoHandle, &pDescription);
if (result == PMINFO_R_OK)
{
- SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_description(): description = [%s]", pDescription);
String description(pDescription);
__description = description;
}
result = pkgmgrinfo_pkginfo_get_author_name(__packageInfoHandle, &pAuthor);
if (result == PMINFO_R_OK)
{
- SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_author_name(): author = [%s]", pAuthor);
String author(pAuthor);
__author = author;
}
result = pkgmgrinfo_pkginfo_get_installed_time(__packageInfoHandle, &installedTime);
if (result == PMINFO_R_OK)
{
- SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_installed_time(): installedTime = [%d]", installedTime);
-
time_t dateTime = (time_t) installedTime;
struct tm* pGmTime = null;
DateTime tempTime;
tempTime.SetValue(pGmTime->tm_year + 1900, pGmTime->tm_mon + 1, pGmTime->tm_mday, pGmTime->tm_hour, pGmTime->tm_min, pGmTime->tm_sec);
__dateTime = tempTime;
- SysLog(NID_APP, "Time %d %d/%d, %d:%d:%d", tempTime.GetYear(), tempTime.GetMonth(), tempTime.GetDay(), tempTime.GetHour(), tempTime.GetMinute(), tempTime.GetSecond());
}
}
else
result = pkgmgrinfo_pkginfo_get_installed_storage(__packageInfoHandle, &storage);
if (result == PMINFO_R_OK)
{
- SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_installed_storage(): storage = [%d]", storage);
if (storage == PMINFO_EXTERNAL_STORAGE)
{
__externalStorage = true;
result = pkgmgrinfo_pkginfo_get_url(__packageInfoHandle, &pUrl);
if (result == PMINFO_R_OK)
{
- SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_url(): url = [%s]", pUrl);
String url(pUrl);
__url = url;
}
result = pkgmgrinfo_pkginfo_get_mainappid(__packageInfoHandle, &pMainAppId);
if (result == PMINFO_R_OK)
{
- SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_mainappid(): mainAppId = [%s]", pMainAppId);
AppId mainAppId(pMainAppId);
__mainAppId = mainAppId;
}
result = pkgmgrinfo_pkginfo_get_storeclientid(__packageInfoHandle, &pStoreClientId);
if (result == PMINFO_R_OK)
{
- SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_storeclientid(): storeClientId = [%s]", pStoreClientId);
String storeClientId(pStoreClientId);
__storeClientId = storeClientId;
}
result = pkgmgrinfo_pkginfo_get_root_path(__packageInfoHandle, &pRootPath);
if (result == PMINFO_R_OK)
{
- SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_root_path(): rootPath = [%s]", pRootPath);
String rootPath(pRootPath);
__appRootPath = rootPath;
}
SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_root_path() is failed. result = [%d]", result);
}
+ SysLog(NID_APP, "package(%ls), version(%ls), type(%ls), displayName(%ls), uninstallable(%d), downloaded(%d), updated(%d), preloaded(%d)"
+ "movable(%d), externalStorage(%d), mainApp(%ls), storeClient(%ls), appRootPath(%ls)",
+ __id.GetPointer(), __version.GetPointer(), __type.GetPointer(), __displayName.GetPointer(), __uninstallable, __downloaded, updated, preloaded,
+ __movable, __externalStorage, __mainAppId.GetPointer(), __storeClientId.GetPointer(), __appRootPath.GetPointer());
+
return r;
}