From 8a7579ff57c6e09a8edc0332be961e13a6de7622 Mon Sep 17 00:00:00 2001 From: "kyeongwoo.lee" Date: Sun, 12 May 2013 20:14:16 +0900 Subject: [PATCH] Implementation for "[ACR] change return type for Livebox pure virtual" Change-Id: Iddd09bfa45973bb139bdfb0b740d0841289eeb8c --- inc/FShell_AppWidgetContext.h | 2 +- inc/FShell_AppWidgetManagerService.h | 1 + inc/FShell_AppWidgetManagerStub.h | 2 ++ src/FShell_AppWidgetContext.cpp | 4 +-- src/FShell_AppWidgetContextBase.cpp | 2 +- src/FShell_AppWidgetManagerService.cpp | 39 ++++++++++++++++++++++---- src/FShell_AppWidgetManagerStub.cpp | 11 ++++++++ 7 files changed, 52 insertions(+), 9 deletions(-) diff --git a/inc/FShell_AppWidgetContext.h b/inc/FShell_AppWidgetContext.h index d2f14d9..e37b215 100644 --- a/inc/FShell_AppWidgetContext.h +++ b/inc/FShell_AppWidgetContext.h @@ -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); diff --git a/inc/FShell_AppWidgetManagerService.h b/inc/FShell_AppWidgetManagerService.h index a62ae74..421afe8 100644 --- a/inc/FShell_AppWidgetManagerService.h +++ b/inc/FShell_AppWidgetManagerService.h @@ -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); diff --git a/inc/FShell_AppWidgetManagerStub.h b/inc/FShell_AppWidgetManagerStub.h index 80566bb..5c81fae 100644 --- a/inc/FShell_AppWidgetManagerStub.h +++ b/inc/FShell_AppWidgetManagerStub.h @@ -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); diff --git a/src/FShell_AppWidgetContext.cpp b/src/FShell_AppWidgetContext.cpp index c9aa39a..caf2d4b 100644 --- a/src/FShell_AppWidgetContext.cpp +++ b/src/FShell_AppWidgetContext.cpp @@ -109,10 +109,10 @@ _AppWidgetContext::OnAdded(void) SendAddRequest(GetWidth(), GetHeight()); } -void +result _AppWidgetContext::OnRemoved(void) { - SendRemoveRequest(); + return SendRemoveRequest(); } void diff --git a/src/FShell_AppWidgetContextBase.cpp b/src/FShell_AppWidgetContextBase.cpp index 5b471de..669a71b 100644 --- a/src/FShell_AppWidgetContextBase.cpp +++ b/src/FShell_AppWidgetContextBase.cpp @@ -304,7 +304,7 @@ _AppWidgetRequestHelper::SendRequestToApp(const AppId& appId, const String& oper std::unique_ptr 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; } diff --git a/src/FShell_AppWidgetManagerService.cpp b/src/FShell_AppWidgetManagerService.cpp index 81bf33b..640e97b 100644 --- a/src/FShell_AppWidgetManagerService.cpp +++ b/src/FShell_AppWidgetManagerService.cpp @@ -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 packageName(_StringConverter::CopyToCharArrayN(pAppWidgetContext->GetProviderId())); + std::unique_ptr 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) { diff --git a/src/FShell_AppWidgetManagerStub.cpp b/src/FShell_AppWidgetManagerStub.cpp index 6060529..e1460f4 100644 --- a/src/FShell_AppWidgetManagerStub.cpp +++ b/src/FShell_AppWidgetManagerStub.cpp @@ -153,6 +153,16 @@ _AppWidgetManagerStub::OnRequestReleaseSharedMemoryForPD(const String& instanceI return true; } +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) { @@ -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() } -- 2.34.1