#include <FBase_StringConverter.h>
#include "FAppPkg_PackageInfoImpl.h"
+#include "FApp_Aul.h"
#include "FApp_AppInfo.h"
using namespace Tizen::App::Package;
: __appState(TERMINATED)
, __appType(_APP_TYPE_NONE)
, __appRootDirFd(-1)
+ , __appSdDirFd(-1)
, __appHandlerType(_APP_HANDLER_NONE)
, __parentWindowHandle(-1)
, __pAppName(null)
, __isPackageInfoInitialized(false)
, __isSubMode(false)
, __isVirtualRoot(false)
+ , __isMultiWindow(false)
{
SysStaticAssert(sizeof(pid_t) == sizeof(int));
// closing may or may not succeed
close(__appRootDirFd);
+ close(__appSdDirFd);
}
_AppInfo*
const char* pPackageId = appinfo_get_packageid();
const char* pExecName = appinfo_get_execname();
-
if (strncmp(pExecName, SUBMODE_NAME, strlen(SUBMODE_NAME)) == 0)
{
SysLog(NID_APP, "Handling for submode.");
- const String& name = _PackageManagerImpl::GetInstance()->GetDefaultAppExecutableName(String(pPackageId));
-
- __isSubMode = true;
- std::unique_ptr<char[]> pActualExec(_StringConverter::CopyToCharArrayN(name));
- appinfo_update_submode_execname_and_appid(pActualExec.get());
- SysLog(NID_APP, "Executable name is changed to %s.", pActualExec.get());
+ const char* pAppId = appinfo_get_appid();
+ const String& mainId = _Aul::GetMainAppId(pAppId);
+ if (!mainId.IsEmpty())
+ {
+ std::unique_ptr<char[]> pMainId(_StringConverter::CopyToCharArrayN(mainId));
+ appinfo_update_submode_appid(pMainId.get());
+
+ __isSubMode = true;
+
+ SysLog(NID_APP, "Executable name is changed to %s.", pMainId.get());
+ }
}
result r = E_SUCCESS;
pFile = fdopen(fd, "r");
SysTryCatch(NID_APP, pFile != NULL, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] Opening appinfo file (%s) failed : %s.", appInfoPath, strerror(errno));
+ // sdcard
+ char sdInfoPath[PATH_MAX] = {0, };
+ strncpy(sdInfoPath, "/opt/storage/sdcard/app2sd/", strlen("/opt/storage/sdcard/app2sd/"));
+ strncat(sdInfoPath, pPackageId, MAX_APPID);
+
+ __appSdDirFd = open(sdInfoPath, O_RDONLY);
+ SysLog(NID_APP, "sd root directory (%s:%d) open.", sdInfoPath, __appSdDirFd);
+
char apiVersion[MAX_APIVERSION] = {0, };
char* pRet = fgets(apiVersion, MAX_APIVERSION - 1, pFile);
SysTryCatch(NID_APP, pRet != NULL, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] Reading appinfo file (%s) failed : %s.", appInfoPath, strerror(errno));
result r = E_SUCCESS;
std::unique_ptr<PackageInfo> pInfo(pPkg->GetPackageInfoN(packageId));
- SysTryReturn(NID_APP, pInfo != null, r, r, "[%s] Propagating.", GetErrorMessage(r));
+ if (pInfo.get() == null)
+ {
+ r = GetLastResult();
+ SysPropagate(NID_APP, r);
+ return r;
+ }
const _PackageInfoImpl* pPkgInfo = _PackageInfoImpl::GetInstance(pInfo.get());
SysTryReturnResult(NID_APP, pPkgInfo != null, E_INVALID_STATE, "Invalid PackageInfo instance.");
GetInstance()->__isPackageInfoInitialized = !update;
}
+bool
+_AppInfo::IsMultiWindow(void)
+{
+ return GetInstance()->__isMultiWindow;
+}
+
+void
+_AppInfo::SetMultiWindow(bool enable)
+{
+ GetInstance()->__isMultiWindow = enable;
+}
+
}} // Tizen::App