From fc62db6a3b7b8b06cc3529e20c34ecdd6f112298 Mon Sep 17 00:00:00 2001 From: Sunwook Bae Date: Fri, 6 Dec 2013 14:50:35 +0900 Subject: [PATCH] Update to handle the FG/BG on AppControl response callback Change-Id: I3f5fcebce1dd6ea19dd522055fe9845db5bbbaf5 Signed-off-by: Sunwook Bae --- src/app/FApp_AppArg.cpp | 27 +++++-------------------- src/app/FApp_AppControlEventArg.h | 10 ++++----- src/app/FApp_AppControlImpl.cpp | 2 +- src/app/FApp_AppControlManager.cpp | 23 ++++++++++----------- src/app/FApp_AppControlProviderManagerImpl.cpp | 11 ++++++++-- src/app/FApp_Aul.cpp | 11 +++------- src/app/FApp_DataControlProviderManagerImpl.cpp | 2 +- src/app/inc/FApp_AppArg.h | 8 ++------ src/app/inc/FApp_AppControlImpl.h | 3 +-- src/app/inc/FApp_AppControlManager.h | 4 ++-- src/app/inc/FApp_Aul.h | 2 +- 11 files changed, 41 insertions(+), 62 deletions(-) diff --git a/src/app/FApp_AppArg.cpp b/src/app/FApp_AppArg.cpp index 3f79949..a85fdeb 100644 --- a/src/app/FApp_AppArg.cpp +++ b/src/app/FApp_AppArg.cpp @@ -77,8 +77,7 @@ 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__"; +static const char OSP_K_RAISE_MODE[] = "__OSP_RAISE_MODE__"; _AppArg::_AppArg(void) @@ -1045,35 +1044,19 @@ _AppArg::UpdateKeyValue(bundle* pBundle, const char* pKey, const String& value) void -_AppArg::UpdateSubMode(bundle* pBundle) +_AppArg::UpdateRaiseMode(bundle* pBundle) { - appsvc_add_data(pBundle, OSP_K_SUBMODE_CALLEE, "1"); + appsvc_add_data(pBundle, OSP_K_RAISE_MODE, "1"); } bool -_AppArg::IsSubMode(bundle* pBundle) +_AppArg::IsRaiseMode(bundle* pBundle) { - const char* p = appsvc_get_data(pBundle, OSP_K_SUBMODE_CALLEE); + const char* p = appsvc_get_data(pBundle, OSP_K_RAISE_MODE); return (p && (strncmp(p, "1", sizeof(char)) == 0)); } - -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)); -} - - int _AppArg::GetRequestIdFromBundle(bundle* pBundle) { diff --git a/src/app/FApp_AppControlEventArg.h b/src/app/FApp_AppControlEventArg.h index 5585266..dd0a4ae 100644 --- a/src/app/FApp_AppControlEventArg.h +++ b/src/app/FApp_AppControlEventArg.h @@ -200,7 +200,7 @@ class _AppControlResponseEventArg , public Tizen::Base::Runtime::IEventArg { public: - _AppControlResponseEventArg(IAppControlResponseListener* pResponseListener, _AppControlResponseType type, const AppId& appId, const Tizen::Base::String& operationId, result res, AppCtrlResult appControlResult, const Tizen::Base::Collection::IMap* pExtraData, int reqId, bool isSubMode) + _AppControlResponseEventArg(IAppControlResponseListener* pResponseListener, _AppControlResponseType type, const AppId& appId, const Tizen::Base::String& operationId, result res, AppCtrlResult appControlResult, const Tizen::Base::Collection::IMap* pExtraData, int reqId, bool isRaiseMode) : __pResponseListener(pResponseListener) , __type(type) , __appId(appId.GetPointer()) @@ -209,7 +209,7 @@ public: , __appControlResult(appControlResult) , __pExtraData(pExtraData) , __reqId(reqId) - , __isSubMode(isSubMode) + , __isRaiseMode(isRaiseMode) { } @@ -258,9 +258,9 @@ public: return __reqId; } - bool IsSubMode(void) const + bool IsRaiseMode(void) const { - return __isSubMode; + return __isRaiseMode; } private: @@ -277,7 +277,7 @@ private: const AppCtrlResult __appControlResult; const Tizen::Base::Collection::IMap* __pExtraData; const int __reqId; - const bool __isSubMode; + const bool __isRaiseMode; }; // _AppControlEventArg } } // Tizen::App diff --git a/src/app/FApp_AppControlImpl.cpp b/src/app/FApp_AppControlImpl.cpp index 899c9ea..d11820d 100644 --- a/src/app/FApp_AppControlImpl.cpp +++ b/src/app/FApp_AppControlImpl.cpp @@ -510,7 +510,7 @@ _AppControlImpl::OnAppControlResponseEventReceivedN(const Tizen::Base::Runtime:: { 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); diff --git a/src/app/FApp_AppControlManager.cpp b/src/app/FApp_AppControlManager.cpp index c2b933d..cf8cd71 100644 --- a/src/app/FApp_AppControlManager.cpp +++ b/src/app/FApp_AppControlManager.cpp @@ -236,7 +236,7 @@ _AppControlManager::OnAppControlEventReceivedN(int reqId, const AppId& appId, co if (pResponseEvent != null) { String oId(operationId); - _AppControlResponseEventArg* pResponseEventArg = new (std::nothrow) _AppControlResponseEventArg(pListener, _APPCONTROL_RESPONSETYPE_START, actualAppId, oId, r, APP_CTRL_RESULT_SUCCEEDED, null, reqId, false); + _AppControlResponseEventArg* pResponseEventArg = new (std::nothrow) _AppControlResponseEventArg(pListener, _APPCONTROL_RESPONSETYPE_START, actualAppId, oId, r, APP_CTRL_RESULT_SUCCEEDED, null, reqId, true); if (pResponseEventArg != null) { @@ -259,11 +259,11 @@ _AppControlManager::OnAppControlEventReceivedN(int reqId, const AppId& appId, co void -_AppControlManager::InvokeAppControlCompleteListener(IAppControlResponseListener& listener, const AppId& appId, const String& op, AppCtrlResult res, const IMap* pExtraData, bool noRaise) +_AppControlManager::InvokeAppControlCompleteListener(IAppControlResponseListener& listener, const AppId& appId, const String& op, AppCtrlResult res, const IMap* pExtraData, bool isRaiseMode) { listener.OnAppControlCompleteResponseReceived(appId, op, res, pExtraData); - if (!noRaise) + if (isRaiseMode) { _AppImpl::GetInstance()->SendUserEvent(_APP_EVENT_RAISE, null, false); } @@ -273,11 +273,11 @@ _AppControlManager::InvokeAppControlCompleteListener(IAppControlResponseListener void -_AppControlManager::InvokeLegacyAppControlCompleteListener(IAppControlEventListener& listener, const AppId& appId, const String& op, const IList* pList, bool noRaise) +_AppControlManager::InvokeLegacyAppControlCompleteListener(IAppControlEventListener& listener, const AppId& appId, const String& op, const IList* pList, bool isRaiseMode) { listener.OnAppControlCompleted(appId, op, pList); - if (!noRaise) + if (isRaiseMode) { _AppImpl::GetInstance()->SendUserEvent(_APP_EVENT_RAISE, null, false); } @@ -318,8 +318,7 @@ _AppControlManager::OnAppControlPluginEventReceivedN(int reqId, int res, const A SysLog(NID_APP, "Invoking callback 0x%x for (%ls, %ls).", pInfo->pListener, aId.GetPointer(), oId.GetPointer()); - const bool isSubMode = (property & _APPCONTROL_PROPERTY_SUBMODE); - const bool isServiceCallee = (property & _APPCONTROL_PROPERTY_SERVICE_CALLEE); + const bool isRaiseMode = (property & _APPCONTROL_PROPERTY_RAISE_MODE); if (pInfo->isLegacy) { @@ -329,7 +328,7 @@ _AppControlManager::OnAppControlPluginEventReceivedN(int reqId, int res, const A ArrayList list(SingleObjectDeleter); _AppArg::FillLegacyAppControlResult(list, res, pArgs, aId); - InvokeLegacyAppControlCompleteListener(*pListener, aId, oId, &list, isSubMode | isServiceCallee); + InvokeLegacyAppControlCompleteListener(*pListener, aId, oId, &list, isRaiseMode); } else { @@ -347,7 +346,7 @@ _AppControlManager::OnAppControlPluginEventReceivedN(int reqId, int res, const A if (pResponseEvent != null) { - _AppControlResponseEventArg* pResponseEventArg = new (std::nothrow) _AppControlResponseEventArg(pListener, _APPCONTROL_RESPONSETYPE_COMPLETE, aId, oId, E_SUCCESS, static_cast(res), const_cast (pArgs), responseEventRequestId, isSubMode); + _AppControlResponseEventArg* pResponseEventArg = new (std::nothrow) _AppControlResponseEventArg(pListener, _APPCONTROL_RESPONSETYPE_COMPLETE, aId, oId, E_SUCCESS, static_cast(res), const_cast (pArgs), responseEventRequestId, isRaiseMode); if (pResponseEventArg != null) { pResponseEvent->Fire(*pResponseEventArg); @@ -356,7 +355,7 @@ _AppControlManager::OnAppControlPluginEventReceivedN(int reqId, int res, const A } else { - InvokeAppControlCompleteListener(*pListener, aId, oId, ConvertAppControlResultCode(res), pArgs, isSubMode | isServiceCallee); + InvokeAppControlCompleteListener(*pListener, aId, oId, ConvertAppControlResultCode(res), pArgs, isRaiseMode); SysLog(NID_APP, "Listener called directly"); delete pArgs; } @@ -825,7 +824,7 @@ void _AppControlManager::FinishAppControl(int reqId, int res, IMap* pMap) { SysLog(NID_APP, "req %d, res %d.", reqId, res); - _NativeAppControlEventArg* pArg = new (std::nothrow) _NativeAppControlEventArg(reqId, res, pMap, _APPCONTROL_PROPERTY_SUBMODE); + _NativeAppControlEventArg* pArg = new (std::nothrow) _NativeAppControlEventArg(reqId, res, pMap, _APPCONTROL_PROPERTY_RAISE_MODE); SysTryReturnVoidResult(NID_APP, pArg != null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Return argument allocation failure."); SendAppControlEvent(*pArg); @@ -953,7 +952,7 @@ _AppControlManager::OnAppControlResponseEventReceivedN(const Tizen::Base::Runtim } else { - InvokeAppControlCompleteListener(*pResponseListener, pEventArg->GetAppId(), pEventArg->GetOperationId(), pEventArg->GetAppControlResult(), pEventArg->GetExtraData(), pEventArg->IsSubMode()); + InvokeAppControlCompleteListener(*pResponseListener, pEventArg->GetAppId(), pEventArg->GetOperationId(), pEventArg->GetAppControlResult(), pEventArg->GetExtraData(), !pEventArg->IsRaiseMode()); SysLog(NID_APP, "Listener called"); _AppControlResponseEvent* pResponseEvent = null; diff --git a/src/app/FApp_AppControlProviderManagerImpl.cpp b/src/app/FApp_AppControlProviderManagerImpl.cpp index 1bc79a9..994e1dd 100644 --- a/src/app/FApp_AppControlProviderManagerImpl.cpp +++ b/src/app/FApp_AppControlProviderManagerImpl.cpp @@ -162,15 +162,22 @@ _AppControlProviderManagerImpl::SendAppControlResultPrimitive(RequestId reqId, _ } else { + const bool isSubMode = _AppInfo::IsSubMode(); + const bool isService = _AppInfo::GetAppType() & _APP_TYPE_SERVICE_APP; + bool isRaiseMode = true; + if (reqId == 0) { firstRequestSent = true; } - const bool isService = _AppInfo::GetAppType() & _APP_TYPE_SERVICE_APP; + if (isSubMode || isService) + { + isRaiseMode = false; + } //resArg.Print(); - result r = _Aul::SendResult(arg.GetBundle(), static_cast(ret), _AppInfo::IsSubMode(), isService); + result r = _Aul::SendResult(arg.GetBundle(), static_cast(ret), isRaiseMode); SysLog(NID_APP, "Sent AppControl event for %d.", reqId); return r; diff --git a/src/app/FApp_Aul.cpp b/src/app/FApp_Aul.cpp index 6abde09..c87413a 100644 --- a/src/app/FApp_Aul.cpp +++ b/src/app/FApp_Aul.cpp @@ -115,7 +115,7 @@ _Aul::GetConvertedResult(const int aul_ret, const char* pFunctionName) } result -_Aul::SendResult(bundle* b, appsvc_result_val res, bool isSubMode, bool isServiceApp) +_Aul::SendResult(bundle* b, appsvc_result_val res, bool isRaiseMode) { // to skip error handling, of appsvc_send_result, use aul_send_service_result() directly. //int ret = appsvc_send_result(b, res); @@ -124,14 +124,9 @@ _Aul::SendResult(bundle* b, appsvc_result_val res, bool isSubMode, bool isServic snprintf(tmp, 32, "%d", static_cast(res)); appsvc_add_data(b, APP_SVC_K_RES_VAL, tmp); - if (isSubMode) + if (isRaiseMode) { - _AppArg::UpdateSubMode(b); - } - - if (isServiceApp) - { - _AppArg::UpdateServiceApp(b); + _AppArg::UpdateRaiseMode(b); } const int aul_ret = aul_send_service_result(b); diff --git a/src/app/FApp_DataControlProviderManagerImpl.cpp b/src/app/FApp_DataControlProviderManagerImpl.cpp index a78c9f5..bcc5ba6 100644 --- a/src/app/FApp_DataControlProviderManagerImpl.cpp +++ b/src/app/FApp_DataControlProviderManagerImpl.cpp @@ -364,7 +364,7 @@ _DataControlProviderManagerImpl::SendDataControlResult(RequestId reqId, _DataCon resultArg.UpdateKeyValue(OSP_K_DATACONTROL_PROTOCOL_VERSION, version); //resultArg.Print(); - r = _Aul::SendResult(resultArg.GetBundle(), static_cast< appsvc_result_val >(0), false, false); + r = _Aul::SendResult(resultArg.GetBundle(), static_cast< appsvc_result_val >(0), false); SysTryCatch(NID_APP, !IsFailed(r), , r, "[%s] Failed to send result.", GetErrorMessage(r)); // Erases _AppArg after sending the result back to the caller diff --git a/src/app/inc/FApp_AppArg.h b/src/app/inc/FApp_AppArg.h index 49975e2..c9c0c30 100644 --- a/src/app/inc/FApp_AppArg.h +++ b/src/app/inc/FApp_AppArg.h @@ -175,13 +175,9 @@ public: static void UpdateKeyValue(bundle* b, const char* pKey, const Tizen::Base::String& value); - static void UpdateSubMode(bundle* b); + static void UpdateRaiseMode(bundle* b); - static bool IsSubMode(bundle* b); - - static void UpdateServiceApp(bundle* b); - - static bool IsServiceApp(bundle* b); + static bool IsRaiseMode(bundle* b); static AppId GetCalleeAppId(bundle* b); diff --git a/src/app/inc/FApp_AppControlImpl.h b/src/app/inc/FApp_AppControlImpl.h index 4996ccf..573ed92 100644 --- a/src/app/inc/FApp_AppControlImpl.h +++ b/src/app/inc/FApp_AppControlImpl.h @@ -53,8 +53,7 @@ enum _AppControlProperty { _APPCONTROL_PROPERTY_NONE = 0x0, _APPCONTROL_PROPERTY_PUBLIC = 0x01, - _APPCONTROL_PROPERTY_SUBMODE = 0x1000, - _APPCONTROL_PROPERTY_SERVICE_CALLEE = 0x2000, + _APPCONTROL_PROPERTY_RAISE_MODE = 0x1000, }; class _OSP_LOCAL_ _AppControlImpl diff --git a/src/app/inc/FApp_AppControlManager.h b/src/app/inc/FApp_AppControlManager.h index e3cf44b..e5b6def 100644 --- a/src/app/inc/FApp_AppControlManager.h +++ b/src/app/inc/FApp_AppControlManager.h @@ -164,9 +164,9 @@ public: void StopAppControlResponseListener(IAppControlResponseListener* pLisetener); - 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 InvokeAppControlCompleteListener(IAppControlResponseListener& listener, const AppId& appId, const Tizen::Base::String& op, AppCtrlResult res, const Tizen::Base::Collection::IMap* pExtraData, bool isRaiseMode); - static void InvokeLegacyAppControlCompleteListener(IAppControlEventListener& listener, const AppId& appId, const Tizen::Base::String& op, const Tizen::Base::Collection::IList* pList, bool noRaise); + static void InvokeLegacyAppControlCompleteListener(IAppControlEventListener& listener, const AppId& appId, const Tizen::Base::String& op, const Tizen::Base::Collection::IList* pList, bool isRaiseMode); private: _OSP_LOCAL_ _AppControlManager(void); diff --git a/src/app/inc/FApp_Aul.h b/src/app/inc/FApp_Aul.h index 39abc37..da5d17e 100644 --- a/src/app/inc/FApp_Aul.h +++ b/src/app/inc/FApp_Aul.h @@ -48,7 +48,7 @@ public: static result TerminateApplicationByPid(int pid); - static result SendResult(bundle* b, appsvc_result_val res, bool isSubMode, bool isServiceApp); + static result SendResult(bundle* b, appsvc_result_val res, bool isRaiseMode); static bool IsRunning(const Tizen::Base::String& appId); -- 2.7.4