fix first AppControl result handling
authorYoung Ik Cho <youngik.cho@samsung.com>
Tue, 29 Oct 2013 10:31:52 +0000 (19:31 +0900)
committerYoung Ik Cho <youngik.cho@samsung.com>
Tue, 29 Oct 2013 10:56:17 +0000 (19:56 +0900)
Change-Id: I267d40ceaabe429abfd345f7c957320c1ea3e360
Signed-off-by: Young Ik Cho <youngik.cho@samsung.com>
packaging/osp-appfw.spec
src/app/FApp_AppControlProviderManagerImpl.cpp
src/app/FApp_AppControlProviderManagerImpl.h

index 8d447b4..255266f 100644 (file)
@@ -207,7 +207,6 @@ chmod 444 /opt/usr/etc/clocale.list
 %{_includedir}/osp/security/*
 %{_includedir}/osp/system/*
 %{_includedir}/osp/text/*
-%{_includedir}/osp/server/appfw/*
 %{_includedir}/osp/server/*
 %{_libdir}/pkgconfig/osp-appfw.pc
 %{_libdir}/pkgconfig/osp-appfw-server.pc
index 71aa878..1bc79a9 100644 (file)
@@ -78,15 +78,14 @@ _AppControlProviderManagerImpl::SendAppControlResult(RequestId reqId, const ILis
        result r = resArg.ConstructResult(arg, pResultList);
        if (IsFailed(r))
        {
+               // erase _AppArg after sending the result back to the caller
+               pAppMgr->__resultManager.RemoveItem(reqId);
+
                SysPropagate(NID_APP, r);
                return 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(), isService);
-       SysLog(NID_APP, "Sent AppControl event for %d.", reqId);
+       r = SendAppControlResultPrimitive(reqId, resArg, 0);
 
        // erase _AppArg after sending the result back to the caller
        pAppMgr->__resultManager.RemoveItem(reqId);
@@ -110,6 +109,9 @@ _AppControlProviderManagerImpl::SendAppControlResult(RequestId reqId, AppCtrlRes
        result r = resArg.ConstructResult(arg, pResultMap);
        if (IsFailed(r))
        {
+               // erase _AppArg after sending the result back to the caller
+               pAppMgr->__resultManager.RemoveItem(reqId);
+
                SysPropagate(NID_APP, r);
                return r;
        }
@@ -138,11 +140,7 @@ _AppControlProviderManagerImpl::SendAppControlResult(RequestId reqId, AppCtrlRes
                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(), isService);
-       SysLog(NID_APP, "Sent AppControl event for %d.", reqId);
+       r = SendAppControlResultPrimitive(reqId, resArg, res);
 
        // erase _AppArg after sending the result back to the caller
        pAppMgr->__resultManager.RemoveItem(reqId);
@@ -150,6 +148,36 @@ _AppControlProviderManagerImpl::SendAppControlResult(RequestId reqId, AppCtrlRes
        return r;
 }
 
+
+result
+_AppControlProviderManagerImpl::SendAppControlResultPrimitive(RequestId reqId, _AppArg& arg, int ret)
+{
+       static bool firstRequestSent = false;
+
+       if (reqId == 0 && firstRequestSent)
+       {
+               SysLog(NID_APP, "Sent main AppControl request already.");
+
+               return E_SUCCESS;
+       }
+       else
+       {
+               if (reqId == 0)
+               {
+                       firstRequestSent = true;
+               }
+
+               const bool isService = _AppInfo::GetAppType() & _APP_TYPE_SERVICE_APP;
+
+               //resArg.Print();
+               result r = _Aul::SendResult(arg.GetBundle(), static_cast<appsvc_result_val>(ret), _AppInfo::IsSubMode(), isService);
+               SysLog(NID_APP, "Sent AppControl event for %d.", reqId);
+
+               return r;
+       }
+}
+
+
 AppId
 _AppControlProviderManagerImpl::GetClientAppId(RequestId reqId) const
 {
index 58448ae..13db532 100644 (file)
@@ -27,7 +27,6 @@
 #include <FOspConfig.h>
 #include <FBaseObject.h>
 #include <FBaseDataType.h>
-#include <FBaseColIListT.h>
 
 namespace Tizen { namespace Base
 {
@@ -36,12 +35,14 @@ class ByteBuffer;
 }}
 
 namespace Tizen { namespace Base { namespace Collection { class IList; } } }
+namespace Tizen { namespace Base { namespace Collection { class IMap; } } }
 
 namespace Tizen { namespace App
 {
 
 class AppControlProviderManager;
 class IAppControlProviderEventListener;
+class _AppArg;
 
 /**
  * @class      _AppControlProviderManagerImpl
@@ -50,7 +51,6 @@ class IAppControlProviderEventListener;
  * The %_AppControlProviderManagerImpl class manages all the application controls.
  */
 class _AppControlProviderManagerImpl
-       : public Tizen::Base::Object
 {
 
 public:
@@ -81,7 +81,7 @@ private:
        /**
         * This is the destructor for this class.
         */
-       virtual ~_AppControlProviderManagerImpl(void);
+       ~_AppControlProviderManagerImpl(void);
 
        /**
         * This is the default copy constructor for this class.
@@ -93,6 +93,8 @@ private:
        */
        _AppControlProviderManagerImpl& operator =(const _AppControlProviderManagerImpl& rhs);
 
+       result SendAppControlResultPrimitive(RequestId reqId, _AppArg& arg, int ret);
+
        friend class AppControlProviderManager;
 };