fix appcontrol result behavior from service callee
[platform/framework/native/appfw.git] / src / app / inc / FApp_AppControlManager.h
old mode 100755 (executable)
new mode 100644 (file)
index 8761a35..bc151ea
 #include <app_service.h>
 
 #include <FOspConfig.h>
-#include <FBaseColIListT.h>
-#include <FBaseColIList.h>
+#include <FBaseColArrayListT.h>
 #include <FBaseObject.h>
-#include <FBaseString.h>
 #include <FBaseRtIEventListener.h>
-#include <FAppAppManager.h>
-#include <FAppIAppControlEventListener.h>
+#include <FAppTypes.h>
 #include <FBaseSysLog.h>
 
 #include "FApp_Types.h"
 #include "FApp_IAppManagerServiceEventListener.h"
 #include "FApp_RequestManagerT.h"
 #include "FApp_IAppControlResponseEventListener.h"
+#include "FApp_LaunchInfo.h"
 
 namespace Tizen { namespace Base
 {
 class String;
-namespace Runtime
-{
-class _LibraryImpl;
-}
 namespace Collection
 {
 class IMap;
+class IList;
 }
 }}
 namespace Tizen { namespace Io
@@ -71,123 +66,14 @@ class _IAppManagerEventListener;
 class _AppManagerEventArg;
 class _AppMessageImpl;
 class _AppControlResponseEvent;
-
-typedef result (*LaunchCbType)(void* data, _AppArg* pArg, _AppArg* pResArg, service_result_e res, int prop, int reqId);
+class IAppControlEventListener;
+class IAppControlResponseListener;
 
 typedef void (*AppSvcResFn)(void* b, int requestCode, service_result_e res, void* data);
 
 
-////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-// _LaunchInfo handles the launch request from this process
-////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-const long LAUNCH_INFO_MAGIC = 0x494C;
 const int RESPONSE_EVENT_REQID_MAGIC = 65536;
 
-class _LaunchInfo
-{
-public:
-       _LaunchInfo(_AppArg* pArg, LaunchCbType pCb, void* pData, int prop)
-               : magic(LAUNCH_INFO_MAGIC)
-               , reqId(-1)
-               , pArg(pArg)
-               , launchCb(pCb)
-               , pUserData(pData)
-               , property(prop)
-       {
-       }
-
-       ~_LaunchInfo(void);
-
-private:
-       _LaunchInfo(const _LaunchInfo& rhs);
-       _LaunchInfo& operator =(const _LaunchInfo& rhs);
-
-public:
-       const long      magic;
-       int reqId;
-       _AppArg* pArg;
-       const LaunchCbType launchCb;
-       void* pUserData;
-       const int property;
-}; // _LaunchInfo
-
-
-////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-// _InAppRequestManager manges In-process AppControl request
-////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-struct _InProcessInfo
-{
-public:
-       _InProcessInfo(const Tizen::Base::String& aId, const Tizen::Base::String& oId, int prop, bool legacy, Tizen::Base::Runtime::_LibraryImpl& lib, Tizen::Base::Runtime::IEventListener* pListener)
-               : reqId(-1)
-               , providerId(aId)
-               , operationId(oId)
-               , property(prop)
-               , pLib(&lib)
-               , pListener(pListener)
-               , isLegacy(legacy)
-       {
-       }
-
-       ~_InProcessInfo(void);
-
-private:
-       _InProcessInfo(const _InProcessInfo& rhs);
-       _InProcessInfo& operator =(const _InProcessInfo& rhs);
-
-public:
-       int reqId;
-       const Tizen::Base::String providerId;
-       const Tizen::Base::String operationId;
-       const int property;
-       Tizen::Base::Runtime::_LibraryImpl* pLib;       // non-empty
-       Tizen::Base::Runtime::IEventListener* pListener;
-       bool isLegacy;
-}; // _InProcessInfo
-
-
-////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-// _RequestManager manges out-of-process launch request and handles the return arguments
-////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-class _ResultInfo
-{
-public:
-       _ResultInfo(_AppArg& arg)
-               : reqId(-1)
-               , arg(arg)
-       {
-       }
-
-       ~_ResultInfo(void)
-       {
-       }
-
-private:
-       _ResultInfo(const _ResultInfo& rhs);
-       _ResultInfo& operator =(const _ResultInfo& rhs);
-
-public:
-       int reqId;
-       _AppArg& arg;
-}; // _ResultInfo
-
-// partial specialization
-template<> inline void _RequestManagerT<_ResultInfo>::RemoveItem(int reqId)
-{
-       // 1st request is launch request itself and do not remove it ever.
-       if (reqId == 0)
-       {
-               return;
-       }
-
-       _ResultInfo* pItem = FindItem(reqId);
-       if (pItem)
-       {
-               __requestList.Remove(reqId);
-               delete pItem;
-       }
-}
-
 
 class _OSP_EXPORT_ _AppControlManager
        : public Tizen::Base::Object
@@ -230,19 +116,17 @@ public:
 
        virtual void OnAppControlEventReceivedN(int reqId, _AppArg* pAppArg, int res);
 
-       virtual void OnAppControlEventReceivedN(int reqId, int res, const Tizen::Base::Collection::IMap* pArgs);
+       virtual void OnAppControlEventReceivedN(int reqId, int res, const Tizen::Base::Collection::IMap* pArgs, int prop);
 
        virtual void OnAppControlEventReceivedN(int reqId, const AppId& appId, const Tizen::Base::String& operationId);
 
        _OSP_LOCAL_ result SendAppControlEvent(Tizen::Base::Runtime::IEventArg& arg);
 
        _OSP_LOCAL_ Tizen::Base::Collection::IMapT<int,_AppControlResponseEvent*>* GetAppControlResponseEventContainer(void);
+
        _OSP_LOCAL_ result RegisterRequest(service_s* service, int& req, _AppHandler& handler);
 
-       _OSP_LOCAL_ void RemoveResultRequest(int reqId)
-       {
-               __resultManager.RemoveItem(reqId);
-       }
+       _OSP_LOCAL_ void RemoveResultRequest(int reqId);
 
        const _AppArg* FindResultRequest(int reqId) const;
 
@@ -282,6 +166,10 @@ public:
 
        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 noRaise);
+
+       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);
 
@@ -300,12 +188,9 @@ private:
        _RequestManagerT<_ResultInfo> __resultManager;
        Tizen::Base::Collection::ArrayListT<void*> __listenerList;
 
-       Tizen::Base::Collection::HashMapT<int, _AppControlResponseEvent*>* __pAppControlResponseEventContainer;
+       Tizen::Base::Collection::HashMapT<int, _AppControlResponseEvent*> __appControlResponseEventContainer;
        Tizen::Base::Collection::ArrayListT<int> __appControlResponseEventList;
-       //friend class AppManager;
        friend class _AppControlImpl;
-       //friend class _SqlDataControlImpl;
-       //friend class _MapDataControlImpl;
        friend class _DataControlProviderManagerImpl;
        friend class _AppControlProviderManagerImpl;
        friend class Tizen::Io::_DataControlResultSetImpl;