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;
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);
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();
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;
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)
{
}
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,"");
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()
}