Implementation for "[ACR] change return type for Livebox pure virtual"
authorkyeongwoo.lee <kyeongwoo.lee@samsung.com>
Sun, 12 May 2013 11:14:16 +0000 (20:14 +0900)
committerkyeongwoo.lee <kyeongwoo.lee@samsung.com>
Mon, 13 May 2013 02:01:32 +0000 (11:01 +0900)
Change-Id: Iddd09bfa45973bb139bdfb0b740d0841289eeb8c

inc/FShell_AppWidgetContext.h
inc/FShell_AppWidgetManagerService.h
inc/FShell_AppWidgetManagerStub.h
src/FShell_AppWidgetContext.cpp
src/FShell_AppWidgetContextBase.cpp
src/FShell_AppWidgetManagerService.cpp
src/FShell_AppWidgetManagerStub.cpp

index d2f14d9..e37b215 100644 (file)
@@ -51,7 +51,7 @@ public:
        void OnAdded(void);
        void OnUpdate(const Tizen::Base::String& argument);
        void OnResize(int width, int height);
-       void OnRemoved(void);
+       result OnRemoved(void);
 
        bool IsPaused(void) const;
        void OnForeground(void);
index a62ae74..421afe8 100644 (file)
@@ -77,6 +77,7 @@ private:
        virtual result RequestSyncSharedMemoryForPD(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId);
        virtual result RequestReleaseSharedMemory(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId);
        virtual result RequestReleaseSharedMemoryForPD(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId);
+       virtual result SendResult(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId, bool isSucceeded);
 
        // internal functions
        AppWidgetManagerService(void);
index 80566bb..5c81fae 100644 (file)
@@ -57,6 +57,7 @@ protected:
        bool OnRequestSyncSharedMemoryForPD(const Tizen::Base::String& instanceId, result* pRes);
        bool OnRequestReleaseSharedMemory(const Tizen::Base::String& instanceId, result* pRes);
        bool OnRequestReleaseSharedMemoryForPD(const Tizen::Base::String& instanceId, result* pRes);
+       bool OnSendResult(const Tizen::Base::String& instanceId, bool isSucceeded);
 
        // interface to service
        virtual result RequestUpdate(const Tizen::App::AppId& appId, const Tizen::Base::String& providerName, const Tizen::Base::String& argument) = 0;
@@ -67,6 +68,7 @@ protected:
        virtual result RequestSyncSharedMemoryForPD(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId) = 0;
        virtual result RequestReleaseSharedMemory(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId) = 0;
        virtual result RequestReleaseSharedMemoryForPD(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId) = 0;
+       virtual result SendResult(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId, bool isSucceeded) = 0;
 
        // _IIpcServerEventListener
        virtual void OnIpcServerStarted(const Tizen::Io::_IpcServer& server);
index c9aa39a..caf2d4b 100644 (file)
@@ -109,10 +109,10 @@ _AppWidgetContext::OnAdded(void)
        SendAddRequest(GetWidth(), GetHeight());
 }
 
-void
+result
 _AppWidgetContext::OnRemoved(void)
 {
-       SendRemoveRequest();
+       return SendRemoveRequest();
 }
 
 void
index 5b471de..669a71b 100644 (file)
@@ -304,7 +304,7 @@ _AppWidgetRequestHelper::SendRequestToApp(const AppId& appId, const String& oper
        std::unique_ptr<char[]> pOperation(_StringConverter::CopyToCharArrayN(operation) );
 
        result r = Tizen::App::_AppControlManager::GetInstance()->LaunchPkg(msg, pAppId.get(), pOperation.get(), null, null, null, null);
-       SysLog(NID_SHELL, "The result of SendRequestToApp [%s]", GetErrorMessage(r));
+       SysLog(NID_SHELL, "[%s] The result of SendRequestToApp", GetErrorMessage(r));
 
        return r;
 }
index 81bf33b..640e97b 100644 (file)
@@ -214,7 +214,10 @@ AppWidgetManagerService::RemoveAppWidget(const char* pPackageName, const char* p
 
        result r = __appWidgetContextList.Remove(pAppWidgetContext);
 
-       if( __appWidgetContextList.GetCount() == 0 )
+       delete pAppWidgetContext;
+       pAppWidgetContext = null;
+
+       if (__appWidgetContextList.GetCount() == 0)
        {
                SysLog(NID_SHELL, "No running native appWidget app remains, terminating osp appWidget service...");
                Tizen::App::App::GetInstance()->Terminate();
@@ -298,11 +301,13 @@ AppWidgetManagerService::OnAppWidgetDestroy(struct event_arg *arg, void* data)
        AppWidgetManagerService* pAppWidgetManagerService = AppWidgetManagerService::GetInstance();
 
        _AppWidgetContext* pAppWidgetContext = pAppWidgetManagerService->Find(arg->pkgname, arg->id);
-       SysTryReturnResult(NID_SHELL, pAppWidgetContext , E_SYSTEM, "[E_SYSTEM] pAppWidgetContext is null for appId(%s), instanceId(%s)", arg->pkgname, arg->id);
+       SysTryReturn(NID_SHELL, pAppWidgetContext, 0, E_SYSTEM, "[E_SYSTEM] pAppWidgetContext is null for appId(%s), instanceId(%s)", arg->pkgname, arg->id);
 
-    pAppWidgetContext->OnRemoved();
-    pAppWidgetManagerService->RemoveAppWidget( arg->pkgname, arg->id, true);
-    delete pAppWidgetContext;
+    result r = pAppWidgetContext->OnRemoved();
+    SysTryReturn(NID_SHELL, !IsFailed(r), 0, E_SYSTEM, "[E_SYSTEM] Failed to execute OnRemoved.");
+
+    r = pAppWidgetManagerService->RemoveAppWidget(arg->pkgname, arg->id, true);
+    SysTryReturn(NID_SHELL, !IsFailed(r), 0, E_SYSTEM, "[E_SYSTEM] Failed to execute RemoveAppWidget.");
 
     SysLog(NID_SHELL, "Exit");
     return 0;
@@ -620,6 +625,30 @@ AppWidgetManagerService::RequestReleaseSharedMemoryForPD(const Tizen::App::AppId
        return E_SUCCESS;
 }
 
+result
+AppWidgetManagerService::SendResult(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId, bool isSucceeded)
+{
+       if (!isSucceeded)
+       {
+               _AppWidgetContext* pAppWidgetContext = this->Find(appId, instanceId);
+               SysTryReturnResult(NID_SHELL, pAppWidgetContext, E_SYSTEM, "[E_SYSTEM] pAppWidgetContext is null for (%ls) (%ls)", appId.GetPointer(), instanceId.GetPointer());
+
+               std::unique_ptr<char[]> packageName(_StringConverter::CopyToCharArrayN(pAppWidgetContext->GetProviderId()));
+               std::unique_ptr<char[]> id(_StringConverter::CopyToCharArrayN(pAppWidgetContext->GetInstanceId()));
+
+               int ret = provider_send_deleted(packageName.get(), id.get());
+               SysTryReturnResult(NID_SHELL, ret >= 0 , E_SYSTEM, "Failed to execute provider_send_deleted.");
+
+               result r = pAppWidgetContext->OnRemoved();
+               SysTryReturn(NID_SHELL, !IsFailed(r), 0, E_SYSTEM, "[E_SYSTEM] Failed to execute OnRemoved.");
+
+               r = RemoveAppWidget(packageName.get(), id.get(), true);
+               SysTryReturn(NID_SHELL, !IsFailed(r), 0, E_SYSTEM, "[E_SYSTEM] Failed to execute RemoveAppWidget.");
+       }
+
+       return E_SUCCESS;
+}
+
 AppWidgetManagerService::_TaskHandlerThread::~_TaskHandlerThread(void)
 {
 
index 6060529..e1460f4 100644 (file)
@@ -154,6 +154,16 @@ _AppWidgetManagerStub::OnRequestReleaseSharedMemoryForPD(const String& instanceI
 }
 
 bool
+_AppWidgetManagerStub::OnSendResult(const String& instanceId, bool isSucceeded)
+{
+       SysLog(NID_SHELL, "(instanceId:%ls, data:%d)", instanceId.GetPointer(), isSucceeded);
+
+       SendResult(__pIpcServer->GetClientPackageId(), instanceId, isSucceeded);
+
+       return true;
+}
+
+bool
 _AppWidgetManagerStub::SendTouchEvent(const int clientId, const String& instanceId, int eventType, double timestamp, double x, double y)
 {
        SysLog(NID_SHELL,"");
@@ -188,6 +198,7 @@ _AppWidgetManagerStub::OnIpcRequestReceived(_IpcServer& server, const IPC::Messa
                IPC_MESSAGE_HANDLER_EX(AppWidgetManager_RequestSyncSharedMemoryForPD, &server, OnRequestSyncSharedMemoryForPD)
                IPC_MESSAGE_HANDLER_EX(AppWidgetManager_RequestReleaseSharedMemory, &server, OnRequestReleaseSharedMemory)
                IPC_MESSAGE_HANDLER_EX(AppWidgetManager_RequestReleaseSharedMemoryForPD, &server, OnRequestReleaseSharedMemoryForPD)
+               IPC_MESSAGE_HANDLER_EX(AppWidgetManager_SendResult, &server, OnSendResult)
        IPC_END_MESSAGE_MAP()
 }