namespace
{
-static const int _REQ_ID_INVALID = -1;
const wchar_t ACTL_IMPLICIT_PLUGIN[] = L"libosp-ac-implicit.so";
+const wchar_t TIZEN_ALIAS_APPID_PREFIX[] = L"tizen.";
}
_AppControlImpl::_AppControlImpl(const AppControl& value)
: _appControl(value)
- , _reqId(_REQ_ID_INVALID)
+ , _reqId(APPCONTROL_REQUEST_ID_INVALID)
, _property(_APPCONTROL_PROPERTY_NONE)
- , _processId(_REQ_ID_INVALID)
+ , _processId(APPCONTROL_REQUEST_ID_INVALID)
{
__appControlResponseEventList.Construct();
}
SysTryReturn(NID_APP, !path.IsEmpty(), null, E_INVALID_ARG, "[E_INVALID_ARG] Path is empty.");
SysTryReturn(NID_APP, !aId.IsEmpty(), null, E_INVALID_ARG, "[E_INVALID_ARG] Provider Id is empty.");
- const AppId& actualAppId = _AppControlRegistry::GetInstance()->GetAliasAppId(aId);
+ String actualAppId = aId;
+ if (aId.StartsWith(TIZEN_ALIAS_APPID_PREFIX, 0))
+ {
+ // little bit of performance tweak
+ actualAppId = _AppControlRegistry::GetInstance()->GetAliasAppId(aId);
+ }
+
const bool isInstalled = _Aul::IsInstalled(actualAppId);
SysTryReturn(NID_APP, isInstalled, null, E_OBJ_NOT_FOUND, "[E_OBJ_NOT_FOUND] %ls not installed.", actualAppId.GetPointer());
pImpl->_path = path;
pImpl->_appId = aId;
- pImpl->_opId = oId;
+ pImpl->_opId = (oId.IsEmpty()) ? TIZEN_OPERATION_MAIN : oId;
pImpl->_property = prop;
return pAc;
}
-const _AppControlImpl*
-_AppControlImpl::GetInstance(const AppControl& ac)
-{
- return ac.__pAppControlImpl;
-}
-
-_AppControlImpl*
-_AppControlImpl::GetInstance(AppControl& ac)
-{
- return ac.__pAppControlImpl;
-}
-
_IAppControlPluginProvider*
_AppControlImpl::GetAppControlPluginProvider(const String& path)
{
if (pDataType)
{
- String mimeType = *pDataType;
-
- if ((*pDataType)[0] == L'.')
- {
- SysLog(NID_APP, "Extension to MIME conversion for %ls", pDataType->GetPointer());
-
-#if 0
- String ext;
- pDataType->SubString(1, ext);
-
- result r = _AppControlManager::GetMimeFromExt(ext, mimeType);
-
- SysTryReturn(NID_APP, !IsFailed(r), null, r, "[%s] MIME type conversion failure for %ls.", GetErrorMessage(r), ext.GetPointer());
-
- pMimeType = &mimeType;
-
- SysLog(NID_APP, "Conversion : %ls -> %ls.", pDataType->GetPointer(), pMimeType->GetPointer());
-#endif
- }
+ const String& mimeType = _AppControlManager::GetMimeTypeFromDataType(*pDataType);
_AppMessageImpl::SetMime(pBundle.get(), mimeType);
}
_AppControlImpl::StartImplicit(const _AppMessageImpl& msg, IEventListener* pListener, bool isLegacy)
{
SysLog(NID_APP, "Enter");
- int req = _REQ_ID_INVALID;
+ int req = APPCONTROL_REQUEST_ID_INVALID;
_IAppControlPluginProvider* pProvider = GetAppControlPluginProvider(ACTL_IMPLICIT_PLUGIN);
if (pProvider == null)
_InProcessInfo* pInfo = _AppControlManager::GetInstance()->__inAppManager.FindItem(_reqId);
SysTryReturnResult(NID_APP, pInfo == null, E_IN_PROGRESS, "Request ID %d is already in progress.", _reqId);
- int req = _REQ_ID_INVALID;
+ int req = APPCONTROL_REQUEST_ID_INVALID;
_IAppControlPluginProvider* pProvider = GetAppControlPluginProvider(_path);
if (pProvider == null)
_InProcessInfo* pInfo = _AppControlManager::GetInstance()->__inAppManager.FindItem(_reqId);
SysTryReturnResult(NID_APP, pInfo == null, E_IN_PROGRESS, "Request ID %d is already in progress.", _reqId);
- int req = _REQ_ID_INVALID;
+ int req = APPCONTROL_REQUEST_ID_INVALID;
result r = E_SUCCESS;
_IAppControlPluginProvider* pProvider = GetAppControlPluginProvider(_path);
req = _AppControlManager::GetInstance()->__inAppManager.InsertItem(pItem);
}
- if (_ThreadImpl::GetCurrentThreadImpl()->GetThreadType() == THREAD_TYPE_EVENT_DRIVEN)
+ const _ThreadImpl* pThreadImpl = _ThreadImpl::GetCurrentThreadImpl();
+ if (pThreadImpl && pThreadImpl->GetThreadType() == THREAD_TYPE_EVENT_DRIVEN)
{
_AppControlResponseEvent* pAppControlResponseEvent = new (std::nothrow) _AppControlResponseEvent();
result
_AppControlImpl::InvokeStartAppControl(_IAppControlPluginProvider* pProvider, int req, const String& appId, const String& oId, const String* pUri, const String* pMime, const IMap* pMap)
{
- _AppMessageImpl msg(appId, oId, pUri, pMime, pMap);
+ String data;
+
+ if (pMime)
+ {
+ data = _AppControlManager::GetMimeTypeFromDataType(*pMime);
+ }
+
+ _AppMessageImpl msg(appId, oId, pUri, &data, pMap);
return InvokeStartAppControl(pProvider, req, appId, msg);
}
}
-static bool
-IsValidAppControl(const String& appcontrolID)
-{
- return ((appcontrolID == L"osp.appcontrol.provider.audio")
- || (appcontrolID == L"osp.appcontrol.provider.bluetooth")
- || (appcontrolID == L"osp.appcontrol.provider.calendar")
- || (appcontrolID == L"osp.appcontrol.provider.camera")
- || (appcontrolID == L"osp.appcontrol.provider.contact")
- || (appcontrolID == L"osp.appcontrol.provider.certificatemanager")
- || (appcontrolID == L"osp.appcontrol.provider.email")
- || (appcontrolID == L"osp.appcontrol.provider.image")
- || (appcontrolID == L"osp.appcontrol.provider.media")
- || (appcontrolID == L"osp.appcontrol.provider.message")
- || (appcontrolID == L"osp.appcontrol.provider.video")
- || (appcontrolID == L"osp.appcontrol.provider.imageeditor")
- || (appcontrolID == L"osp.appcontrol.provider.allshare")
- || (appcontrolID == L"tizen.filemanager")
- || (appcontrolID == L"tizen.camera")
- || (appcontrolID == L"tizen.gallery")
- || (appcontrolID == L"tizen.imageviewer")
- || (appcontrolID == L"tizen.videoplayer")
- || (appcontrolID == L"tizen.memo")
- || (appcontrolID == L"tizen.contacts")
- || (appcontrolID == L"tizen.calendar")
- || (appcontrolID == L"tizen.todo")
- || (appcontrolID == L"tizen.email")
- || (appcontrolID == L"tizen.settings")
- || (appcontrolID == L"tizen.messages")
- || (appcontrolID == L"tizen.musicplayer")
- || (appcontrolID == L"tizen.bluetooth")
- || (appcontrolID == L"samsung.snote")
- || (appcontrolID == L"0pnxz8hbsr.MyFiles")
- || (appcontrolID == L"hdufar9ycj.Camera")
- || (appcontrolID == L"ijudt7w61q.Gallery")
- || (appcontrolID == L"jysyv9o1dc.ImageViewer")
- || (appcontrolID == L"npwf0scb88.VideoPlayer")
- || (appcontrolID == L"zunqjlsnce.Memo")
- || (appcontrolID == L"f9uev8hsyo.Contacts")
- || (appcontrolID == L"ph1vq2phrp.Calendar")
- || (appcontrolID == L"vxqbrefica.Email")
- || (appcontrolID == L"kto5jikgul.Settings")
- || (appcontrolID == L"8r4r5ddzzn.Messages")
- || (appcontrolID == L"dhrul6qzj3.MusicPlayer")
- || (appcontrolID == L"smemo-efl"));
-}
-
result
_AppControlImpl::Stop(void)
{
- const String appcontrolID(GetAppControlProviderId());
- SysTryReturnResult(NID_APP, IsValidAppControl(appcontrolID), E_INVALID_OPERATION, "Invalid appcontrolID(%ls)", appcontrolID.GetPointer());
-
+ result r = E_SUCCESS;
result (*pStop)(int req) = null;
- if (_reqId != _REQ_ID_INVALID)
+ if (_reqId != APPCONTROL_REQUEST_ID_INVALID)
{
_InProcessInfo* pInfo = _AppControlManager::GetInstance()->__inAppManager.FindItem(_reqId);
SysTryReturnResult(NID_APP, pInfo != null, E_INVALID_OPERATION, "Request ID %d is not found.", _reqId);
if (pInfo->pProvider)
{
- pInfo->pProvider->StopAppControlPlugin(_reqId);
+ r = pInfo->pProvider->StopAppControlPlugin(_reqId);
}
_AppControlManager::GetInstance()->__inAppManager.RemoveItem(_reqId);
- _reqId = _REQ_ID_INVALID;
+ _reqId = APPCONTROL_REQUEST_ID_INVALID;
}
else
{
_IAppControlPluginProvider* pProvider = GetAppControlPluginProvider(_path);
if (pProvider)
{
- pProvider->StopAppControlPlugin(-1);
- SysLog(NID_APP, "Request is stopped.");
+ r = pProvider->StopAppControlPlugin(-1);
pProvider->Release();
}
}
- return E_SUCCESS;
+ SysLog(NID_APP, "[%s] Request is stopped.", GetErrorMessage(r));
+
+ return r;
}
String
-_AppControlImpl::GetAppName(void)
+_AppControlImpl::GetAppName(void) const
{
if (_appName.IsEmpty())
{
AppId appId = GetAppId();
- AppId aliasAppId = _AppControlRegistry::GetInstance()->GetAliasAppId(appId);
+ const AppId& aliasAppId = _AppControlRegistry::GetInstance()->GetAliasAppId(appId);
if (!aliasAppId.IsEmpty())
{
appId = aliasAppId;
}
+ appId = _Aul::GetRealAppId(appId);
+
std::unique_ptr<PackageAppInfo> pInfo(_PackageManagerImpl::GetInstance()->GetPackageAppInfoN(appId));
if (pInfo.get())
{
- SysLog(NID_APP, "PackageInfo of appId(%ls) exists", appId.GetPointer());
- const String& name = pInfo->GetAppName();
- if (name == L"_AppControl")
- {
- // workaround for special case: requery with actual appId
- const PackageId& packageId = _PackageManagerImpl::GetPackageIdByAppId(appId);
- const String& defaultName = _PackageManagerImpl::GetInstance()->GetDefaultAppExecutableName(packageId);
-
- const String& convertedAppId = packageId + L'.' + defaultName;
-
- std::unique_ptr<PackageAppInfo> pNewInfo(_PackageManagerImpl::GetInstance()->GetPackageAppInfoN(convertedAppId));
-
- if (pNewInfo.get())
- {
- _appName = pNewInfo->GetAppDisplayName();
- }
- else
- {
- SysLog(NID_APP, "No default applicaiton information, possible database error.");
- }
- }
- else
- {
- _appName = pInfo->GetAppDisplayName();
- }
+ SysLog(NID_APP, "PackageInfo of [%ls] exists.", appId.GetPointer());
+ _appName = pInfo->GetAppDisplayName();
}
else
{
- SysLog(NID_APP, "PackageInfo of appId(%ls) does not exist", appId.GetPointer());
+ SysLog(NID_APP, "PackageInfo of [%ls] does not exist.", appId.GetPointer());
}
}
return _appName;
}
-String
-_AppControlImpl::GetAppId(void) const
-{
- return _appId;
-}
-
-const String&
-_AppControlImpl::GetAppControlProviderId(void) const
-{
- return _appId;
-}
-
-const String&
-_AppControlImpl::GetOperationId(void) const
-{
- return _opId;
-}
IList*
_AppControlImpl::GetCategoryListN(void) const
AppId appId = GetAppId();
SysTryReturn(NID_APP, !appId.IsEmpty(), null, E_SYSTEM, "[E_SYSTEM] Empty appId.");
- AppId aliasAppId = _AppControlRegistry::GetInstance()->GetAliasAppId(appId);
+ const AppId& aliasAppId = _AppControlRegistry::GetInstance()->GetAliasAppId(appId);
if (!aliasAppId.IsEmpty())
{
appId = aliasAppId;
{
if(pEventArg->GetType() == _APPCONTROL_RESPONSETYPE_COMPLETE)
{
- _AppControlManager::InvokeAppControlCompleteListener(*pResponseListener, pEventArg->GetAppId(), pEventArg->GetOperationId(), pEventArg->GetAppControlResult(), pEventArg->GetExtraData(), pEventArg->IsSubMode());
+ _AppControlManager::InvokeAppControlCompleteListener(*pResponseListener, pEventArg->GetAppId(), pEventArg->GetOperationId(), pEventArg->GetAppControlResult(), pEventArg->GetExtraData(), pEventArg->IsRaiseMode());
_AppControlResponseEvent* pResponseEvent = null;
_AppControlManager::GetInstance()->GetAppControlResponseEventContainer()->GetValue(pEventArg->GetRequestId(), pResponseEvent);