static const char OSP_V_REQUEST_TYPE_MAP_UPDATE[] = "map_update";
static const char OSP_V_REQUEST_TYPE_MAP_DELETE[] = "map_delete";
static const char OSP_V_VERSION_2_1_0_3[] = "ver_2.1.0.3";
+
static const char BUNDLE_KEY_PREFIX_AUL[] = "__AUL_";
static const char BUNDLE_KEY_PREFIX_SERVICE[] = "__APP_SVC_";
static const char BUNDLE_KEY_PREFIX_OSP[] = "__OSP_";
static const char BUNDLE_KEY_PREFIX_UG[] = "__UG_";
+
+static const char OSP_K_SUBMODE_CALLEE[] = "__OSP_SUB_CALLEE__";
+static const char OSP_K_SERVICE_CALLEE[] = "__OSP_SERVICE_CALLEE__";
+
const char TIZEN_NOTIFICATION_DATA[] = "http://tizen.org/appcontrol/data/notification";
const wchar_t LEGACY_OPERATION_MAIN[] = L"osp.operation.MAIN";
_AppArg::IsSubMode(bundle* pBundle)
{
const char* p = appsvc_get_data(pBundle, OSP_K_SUBMODE_CALLEE);
- if (p && (strncmp(p, "1", sizeof(char)) == 0))
- {
- return true;
- }
+ return (p && (strncmp(p, "1", sizeof(char)) == 0));
+}
- return false;
+
+void
+_AppArg::UpdateServiceApp(bundle* pBundle)
+{
+ appsvc_add_data(pBundle, OSP_K_SERVICE_CALLEE, "1");
+}
+
+
+bool
+_AppArg::IsServiceApp(bundle* pBundle)
+{
+ const char* p = appsvc_get_data(pBundle, OSP_K_SERVICE_CALLEE);
+ return (p && (strncmp(p, "1", sizeof(char)) == 0));
}
}
const bool isSubMode = _AppArg::IsSubMode(b);
+ const bool isServiceCallee = _AppArg::IsServiceApp(b);
std::unique_ptr<HashMap> pMap(pResArg->GetArgMapN());
ArrayList list(SingleObjectDeleter);
_AppArg::FillLegacyAppControlResult(list, res, pMap.get(), provider);
- _AppControlManager::InvokeLegacyAppControlCompleteListener(*pListener, provider, oId, &list, isSubMode);
+ _AppControlManager::InvokeLegacyAppControlCompleteListener(*pListener, provider, oId, &list, isSubMode | isServiceCallee);
return E_SUCCESS;
}
}
const bool isSubMode = _AppArg::IsSubMode(b);
+ const bool isServiceCallee = _AppArg::IsServiceApp(b);
std::unique_ptr<HashMap> pMap(pResArg->GetArgMapN());
if (pResponseEvent != null)
{
- _AppControlResponseEventArg* pResponseEventArg = new (std::nothrow) _AppControlResponseEventArg(pListener, _APPCONTROL_RESPONSETYPE_COMPLETE, provider, oId, E_SUCCESS, ret, pMap.release(), reqId, isSubMode);
+ _AppControlResponseEventArg* pResponseEventArg = new (std::nothrow) _AppControlResponseEventArg(pListener, _APPCONTROL_RESPONSETYPE_COMPLETE, provider, oId, E_SUCCESS, ret, pMap.release(), reqId, isSubMode | isServiceCallee);
pResponseEvent->Fire(*pResponseEventArg);
SysLog(NID_APP, "OnAppControlCompleteResponseReceived, pResponseEvent is Fired");
}
else
{
- _AppControlManager::InvokeAppControlCompleteListener(*pListener, provider, oId, ret, pMap.get(), isSubMode);
+ _AppControlManager::InvokeAppControlCompleteListener(*pListener, provider, oId, ret, pMap.get(), isSubMode | isServiceCallee);
}
return E_SUCCESS;
void
-_AppControlManager::InvokeAppControlCompleteListener(IAppControlResponseListener& listener, const AppId& appId, const String& op, AppCtrlResult res, const IMap* pExtraData, bool isSubMode)
+_AppControlManager::InvokeAppControlCompleteListener(IAppControlResponseListener& listener, const AppId& appId, const String& op, AppCtrlResult res, const IMap* pExtraData, bool noRaise)
{
listener.OnAppControlCompleteResponseReceived(appId, op, res, pExtraData);
- if (!isSubMode)
+ if (!noRaise)
{
_AppImpl::GetInstance()->SendUserEvent(_APP_EVENT_RAISE, null, false);
}
void
-_AppControlManager::InvokeLegacyAppControlCompleteListener(IAppControlEventListener& listener, const AppId& appId, const String& op, const IList* pList, bool isSubMode)
+_AppControlManager::InvokeLegacyAppControlCompleteListener(IAppControlEventListener& listener, const AppId& appId, const String& op, const IList* pList, bool noRaise)
{
listener.OnAppControlCompleted(appId, op, pList);
- if (!isSubMode)
+ if (!noRaise)
{
_AppImpl::GetInstance()->SendUserEvent(_APP_EVENT_RAISE, null, false);
}
}
const bool isSubMode = (property & _APPCONTROL_PROPERTY_SUBMODE);
+ const bool isServiceCallee = (property & _APPCONTROL_PROPERTY_SERVICE_CALLEE);
if (pInfo->isLegacy)
{
ArrayList list(SingleObjectDeleter);
_AppArg::FillLegacyAppControlResult(list, res, pArgs, aId);
- InvokeLegacyAppControlCompleteListener(*pListener, aId, oId, &list, isSubMode);
+ InvokeLegacyAppControlCompleteListener(*pListener, aId, oId, &list, isSubMode | isServiceCallee);
}
else
{
}
else
{
- InvokeAppControlCompleteListener(*pListener, aId, oId, ConvertAppControlResultCode(res), pArgs, isSubMode);
+ InvokeAppControlCompleteListener(*pListener, aId, oId, ConvertAppControlResultCode(res), pArgs, isSubMode | isServiceCallee);
SysLog(NID_APP, "Listener called directly");
delete pArgs;
}
result r = resArg.ConstructResult(arg, pResultList);
SysTryReturn(NID_APP, !IsFailed(r), r, r, "[%s] Propagating.", GetErrorMessage(r));
+ const bool isService = _AppInfo::GetAppType() & _APP_TYPE_SERVICE_APP;
+
//resArg.Print();
- r = _Aul::SendResult(resArg.GetBundle(), static_cast<appsvc_result_val>(0), _AppInfo::IsSubMode());
+ r = _Aul::SendResult(resArg.GetBundle(), static_cast<appsvc_result_val>(0), _AppInfo::IsSubMode(), isService);
SysLog(NID_APP, "Sent AppControl event for %d.", reqId);
// erase _AppArg after sending the result back to the caller
break;
}
+ const bool isService = _AppInfo::GetAppType() & _APP_TYPE_SERVICE_APP;
+
//resArg.Print();
- r = _Aul::SendResult(resArg.GetBundle(), static_cast<appsvc_result_val>(res), _AppInfo::IsSubMode());
+ r = _Aul::SendResult(resArg.GetBundle(), static_cast<appsvc_result_val>(res), _AppInfo::IsSubMode(), isService);
SysLog(NID_APP, "Sent AppControl event for %d.", reqId);
// erase _AppArg after sending the result back to the caller
}
result
-_Aul::SendResult(bundle* b, appsvc_result_val res, bool isSubMode)
+_Aul::SendResult(bundle* b, appsvc_result_val res, bool isSubMode, bool isServiceApp)
{
// to skip error handling, of appsvc_send_result, use aul_send_service_result() directly.
//int ret = appsvc_send_result(b, res);
_AppArg::UpdateSubMode(b);
}
+ if (isServiceApp)
+ {
+ _AppArg::UpdateServiceApp(b);
+ }
+
const int aul_ret = aul_send_service_result(b);
result r = GetConvertedResult(aul_ret, "SendResult");
resultArg.UpdateKeyValue(OSP_K_DATACONTROL_PROTOCOL_VERSION, version);
//resultArg.Print();
- r = _Aul::SendResult(resultArg.GetBundle(), static_cast< appsvc_result_val >(0), false);
+ r = _Aul::SendResult(resultArg.GetBundle(), static_cast< appsvc_result_val >(0), false, false);
SysTryCatch(NID_APP, !IsFailed(r), , r, "[%s] Failed to send result.", GetErrorMessage(r));
// Erases _AppArg after sending the result back to the caller
#define OSP_K_COND "__OSP_COND_NAME__"
#define OSP_K_APPID "__OSP_APPID__"
#define OSP_K_REQUEST_ID "__OSP_REQUEST_ID__"
-#define OSP_K_SUBMODE_CALLEE "__OSP_SUB_CALLEE__"
#define OSP_K_APPCONTROL_INTERNAL_OPERATION "__OSP_APPCONTROL_INTERNAL_INTERNAL_OPERATION__"
#define OSP_K_DATACONTROL_PROVIDER "__OSP_DATACONTROL_PROVIDER__"
#define OSP_K_DATACONTROL_DATA "__OSP_DATACONTROL_DATA__"
static bool IsSubMode(bundle* b);
+ static void UpdateServiceApp(bundle* b);
+
+ static bool IsServiceApp(bundle* b);
+
static result UpdateWindowHandle(bundle* b, long handle);
static Tizen::Base::Collection::ArrayList* GetListN(bundle* b, const char* key);
_APPCONTROL_PROPERTY_ALIAS = 0x400,
_APPCONTROL_PROPERTY_APPID_CHANGE = 0x800,
_APPCONTROL_PROPERTY_SUBMODE = 0x1000,
+ _APPCONTROL_PROPERTY_SERVICE_CALLEE = 0x2000,
};
class _OSP_EXPORT_ _AppControlImpl
static AppCtrlResult ConvertAppControlResultCode(int res);
- static void InvokeAppControlCompleteListener(IAppControlResponseListener& listener, const AppId& appId, const Tizen::Base::String& op, AppCtrlResult res, const Tizen::Base::Collection::IMap* pExtraData, bool isSubMode);
+ static void InvokeAppControlCompleteListener(IAppControlResponseListener& listener, const AppId& appId, const Tizen::Base::String& op, AppCtrlResult res, const Tizen::Base::Collection::IMap* pExtraData, bool noRaise);
- static void InvokeLegacyAppControlCompleteListener(IAppControlEventListener& listener, const AppId& appId, const Tizen::Base::String& op, const Tizen::Base::Collection::IList* pList, bool isSubMode);
+ static void InvokeLegacyAppControlCompleteListener(IAppControlEventListener& listener, const AppId& appId, const Tizen::Base::String& op, const Tizen::Base::Collection::IList* pList, bool noRaise);
private:
_OSP_LOCAL_ _AppControlManager(void);
static result TerminateApplicationByPid(int pid);
- static result SendResult(bundle* b, appsvc_result_val res, bool isSubMode);
+ static result SendResult(bundle* b, appsvc_result_val res, bool isSubMode, bool isServiceApp);
static bool IsRunning(const Tizen::Base::String& appId);