#include <FAppAppRegistry.h>
#include <FBaseErrors.h>
#include <FBaseSysLog.h>
+#include <FAppPkgPackageInfo.h>
#include <FBaseRt_LibraryImpl.h>
int
_ServiceAppImpl::GetPrivilegeLevel(void)
{
- const AppId appId = _AppInfo::GetApplicationId();
+ static int visibility = _API_VISIBILITY_NONE;
+ if( visibility == _API_VISIBILITY_NONE)
+ {
+ const AppId appId = _AppInfo::GetApplicationId();
- _PackageManagerImpl* pPkg = _PackageManagerImpl::GetInstance();
- SysTryReturn(NID_APP, pPkg != null, _API_VISIBILITY_PUBLIC, E_INVALID_STATE, "Invalid PackageManager instance.");
+ _PackageManagerImpl* pPkg = _PackageManagerImpl::GetInstance();
+ SysTryReturn(NID_APP, pPkg != null, _API_VISIBILITY_PUBLIC, E_INVALID_STATE, "Invalid PackageManager instance.");
- String pkgId = _PackageManagerImpl::GetPackageIdByAppId(appId);
- SysTryReturn(NID_APP, !pkgId.IsEmpty(), _API_VISIBILITY_PUBLIC, E_INVALID_STATE, "Invalid appId(%ls).", appId.GetPointer() );
+ String pkgId = _PackageManagerImpl::GetPackageIdByAppId(appId);
+ SysTryReturn(NID_APP, !pkgId.IsEmpty(), _API_VISIBILITY_PUBLIC, E_INVALID_STATE, "Invalid appId(%ls).", appId.GetPointer() );
- PackageInfo* pInfo = pPkg->GetPackageInfoN(pkgId);
- SysTryReturn(NID_APP, pInfo != null, _API_VISIBILITY_PUBLIC, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
+ std::unique_ptr<PackageInfo> pPkgInfo (pPkg->GetPackageInfoN(pkgId) );
+ SysTryReturn(NID_APP, pPkgInfo != null, _API_VISIBILITY_PUBLIC, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
- const _PackageInfoImpl* pPkgInfo = _PackageInfoImpl::GetInstance(pInfo);
- SysTryReturn(NID_APP, pPkgInfo != null, _API_VISIBILITY_PUBLIC, E_INVALID_STATE, "Invalid PackageInfo instance.");
+ const _PackageInfoImpl* pPkgInfoImpl = _PackageInfoImpl::GetInstance(pPkgInfo.get());
+ SysTryReturn(NID_APP, pPkgInfoImpl != null, _API_VISIBILITY_PUBLIC, E_INVALID_STATE, "Invalid PackageInfo instance.");
- return pPkgInfo->GetApiVisibility();
+ visibility = pPkgInfoImpl->GetApiVisibility();
+ }
+ return visibility;
}
} } //Tizen::App