N_SE-36002 : fix submode for implicit resolution
[platform/framework/native/appfw.git] / src / app / FApp_AppControlManager.cpp
index 4742158..79ea317 100755 (executable)
@@ -76,8 +76,6 @@ using namespace Tizen::Base::Runtime;
 using namespace Tizen::Base::Utility;
 using namespace Tizen::Io;
 
-//extern const char* _DATACONTROL_RESULTSET_DIR;
-
 namespace Tizen { namespace App
 {
 
@@ -200,7 +198,7 @@ _AppControlManager::OnAppControlEventReceivedN(int reqId, _AppArg* pAppArg, int
 void
 _AppControlManager::OnAppControlEventReceivedN(int reqId, const AppId& appId, const String& operationId)
 {
-       SysLog(NID_APP, "Received request Id %d, appId %ls, operationId %ls", reqId, appId.GetPointer(), operationId.GetPointer());
+       SysLog(NID_APP, "Received request Id %d, app %ls, operationId %ls", reqId, appId.GetPointer(), operationId.GetPointer());
 
        // get launch info from request Id
        _LaunchInfo* pInfo = __launchManager.FindItem(reqId);
@@ -252,7 +250,7 @@ _AppControlManager::OnAppControlEventReceivedN(int reqId, const AppId& appId, co
 void
 _AppControlManager::OnAppControlEventReceivedN(int reqId, int res, const IMap* pArgs)
 {
-       SysLog(NID_APP, "Received request Id %d, args 0x%x", reqId, pArgs);
+       SysLog(NID_APP, "Received request Id %d, res %d, args 0x%x", reqId, res, pArgs);
 
        // process proper callback
        _InProcessInfo* pInfo = __inAppManager.FindItem(reqId);
@@ -305,7 +303,7 @@ _AppControlManager::OnAppControlEventReceivedN(int reqId, int res, const IMap* p
 
                                if (pResponseEvent != null)
                                {
-                                       _AppControlResponseEventArg* pResponseEventArg = new (std::nothrow) _AppControlResponseEventArg(pListener, _APPCONTROL_RESPONSETYPE_COMPLETE, aId, oId, E_SUCCESS, static_cast<AppCtrlResult>(res), pArgs, responseEventRequestId);
+                                       _AppControlResponseEventArg* pResponseEventArg = new (std::nothrow) _AppControlResponseEventArg(pListener, _APPCONTROL_RESPONSETYPE_COMPLETE, aId, oId, E_SUCCESS, static_cast<AppCtrlResult>(res), const_cast<IMap*> (pArgs), responseEventRequestId);
                                        if (pResponseEventArg != null)
                                        {
                                                pResponseEvent->Fire(*pResponseEventArg);
@@ -314,8 +312,10 @@ _AppControlManager::OnAppControlEventReceivedN(int reqId, int res, const IMap* p
                                }
                                else
                                {
-                                       pListener->OnAppControlCompleteResponseReceived(aId, oId, static_cast<AppCtrlResult>(res), pArgs);
+                                       pListener->OnAppControlCompleteResponseReceived(aId, oId, ConvertAppControlResultCode(res), pArgs);
                                        SysLog(NID_APP, "OnAppControlCompleteResponseReceived called directly");
+                                       IMap* pMap = const_cast<IMap*> (pArgs);
+                                       delete pMap;
                                }
                        }
                        else
@@ -561,7 +561,7 @@ result
 _AppControlManager::LaunchApp(const AppId& appId, _AppArg* pArg, int req)
 {
        SysTryReturnResult(NID_APP, pArg != null, E_INVALID_ARG, "Invalid launch argument");
-       SysLog(NID_APP, "AppId: %ls.", appId.GetPointer());
+       SysLog(NID_APP, "App: %ls.", appId.GetPointer());
 
        String actualAppId = appId;
        if (appId.GetLength() == 10)
@@ -690,7 +690,7 @@ int
 _AppControlManager::Launch(const AppId& appId, _AppArg* pArg, AppSvcResFn pCb, void* pData, int req)
 {
        SysTryReturn(NID_APP, pArg != null, -1, E_INVALID_ARG, "[E_INVALID_ARG] Invalid launch argument");
-       SysLog(NID_APP, "AppId: %ls.", appId.GetPointer());
+       SysLog(NID_APP, "App: %ls.", appId.GetPointer());
 
        String actualAppId = appId;
        if (appId.GetLength() == 10)
@@ -788,6 +788,12 @@ _AppControlManager::LaunchAppImplicit(_AppArg* pArg, int req)
                _AppMessageImpl::AddData(kb, SELECTOR_NOTI_KEY, _AppInfo::GetApplicationId());
        }
 
+       if (_AppImpl::GetInstance() != null)
+       {
+               const long handle = _AppImpl::GetInstance()->GetWindowHandle();
+               _AppArg::UpdateWindowHandle(kb, handle);
+       }
+
        int pid = appsvc_run_service(kb, req, LaunchResultCb, this);
        if (pid > 0)
        {
@@ -834,7 +840,7 @@ _AppControlManager::LaunchAppImplicit(_AppArg* pArg, int req)
 void
 _AppControlManager::FinishAppControl(int reqId, int res, IMap* pMap)
 {
-       SysLog(NID_APP, "Enter.");
+       SysLog(NID_APP, "req %d, res %d.", reqId, res);
        _NativeAppControlEventArg* pArg = new (std::nothrow) _NativeAppControlEventArg(reqId, res, pMap);
        SysTryReturnVoidResult(NID_APP, pArg != null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Return argument allocation failure.");
 
@@ -879,7 +885,7 @@ _AppControlManager::RegisterRequest(service_s* service, int& req, _AppHandler& h
        bundle* b = _AppArg::GetBundleFromSvc(service);
 
        _AppArg* pArg = new (std::nothrow) _AppArg();
-       SysTryReturnResult(NID_APP, pArg != null, E_OUT_OF_MEMORY, "rrayList creation failure.");
+       SysTryReturnResult(NID_APP, pArg != null, E_OUT_OF_MEMORY, "ArrayList creation failure.");
        pArg->Construct(b);
 
        result r = E_SUCCESS;
@@ -917,6 +923,38 @@ _AppControlManager::IsAllowedAppControl(const char aTable[][2][96], int count, c
        return false;
 }
 
+
+AppCtrlResult
+_AppControlManager::ConvertAppControlResultCode(int resCode)
+{
+       AppCtrlResult ret = APP_CTRL_RESULT_FAILED;
+
+       switch(resCode)
+       {
+               case SERVICE_RESULT_SUCCEEDED:
+                       ret = APP_CTRL_RESULT_SUCCEEDED;
+                       break;
+               case SERVICE_RESULT_FAILED:
+                       ret = APP_CTRL_RESULT_CANCELED;
+                       break;
+               case SERVICE_RESULT_CANCELED:
+                       ret = APP_CTRL_RESULT_ABORTED;
+                       break;
+               case APPSVC_OSP_RES_FAIL:
+                       ret = APP_CTRL_RESULT_FAILED;
+                       break;
+               case APPSVC_OSP_RES_TERMINATE:
+                       ret = APP_CTRL_RESULT_TERMINATED;
+                       break;
+               default:
+                       ret = APP_CTRL_RESULT_FAILED;
+                       break;
+       }
+
+       return ret;
+}
+
+
 void
 _AppControlManager::OnAppControlResponseEventReceivedN(const Tizen::Base::Runtime::IEventArg* arg)
 {