2 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
4 // Licensed under the Flora License, Version 1.1 (the License);
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
8 // http://floralicense.org/license/
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
18 * @file FShell_AppWidgetManagerService.cpp
19 * @brief This is the implementation for the AppWidgetManagerService class.
22 #include <unique_ptr.h>
24 #include <FBaseSysLog.h>
25 #include <FBaseColIList.h>
27 #include <FApp_AppManagerImpl.h>
28 #include <FIo_IpcServer.h>
29 #include <FBase_StringConverter.h>
30 #include "FShell_AppWidgetContext.h"
31 #include "FShell_AppWidgetPopupContext.h"
32 #include "FShell_AppWidgetManagerStub.h"
33 #include "FShell_AppWidgetManagerService.h"
35 namespace Tizen { namespace Shell { namespace App {
37 using namespace Tizen::App;
38 using namespace Tizen::Base;
39 using namespace Tizen::Base::Collection;
40 using namespace Tizen::Base::Runtime;
41 using namespace Tizen::Io;
42 using namespace Tizen::System;
43 using namespace Tizen::Shell::App;
47 static const RequestId LOCAL_EVENT_REQUEST_UPDATE = 0;
50 extern const int UPDATE_PERIOD_MSEC_MIN;
52 AppWidgetManagerService::AppWidgetManagerService(void)
57 AppWidgetManagerService::~AppWidgetManagerService(void)
60 DeinitializeMasterDaemonEventReceiver();
63 AppWidgetManagerService*
64 AppWidgetManagerService::GetInstance(void)
66 static AppWidgetManagerService* pSelf = null;
69 pSelf = new AppWidgetManagerService();
70 SysTryReturn(NID_SHELL, pSelf != null, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY]");
72 result r = pSelf->Construct();
73 SysAssertf(!IsFailed(r), "Failed to construct AppWidgetManagerService");
74 SysLog(NID_SHELL, "AppWidgetManagerService is created.");
80 AppWidgetManagerService::Construct(void)
82 _AppWidgetManagerStub::StartIpcServer();
84 result r = __handlerThread.Construct(THREAD_TYPE_EVENT_DRIVEN);
85 SysTryReturnResult(NID_SHELL, IsFailed(r) == false, r, "Event thread creation failure.");
87 r = __handlerThread.Start();
88 SysTryReturnResult(NID_SHELL, IsFailed(r) == false, r, "Event thread Start failure.");
90 return InitializeMasterDaemonEventReceiver("osp-appwidget-service");
94 AppWidgetManagerService::AppWidgetConnected(struct event_arg *arg, void* data)
97 ret = provider_send_hello();
100 SysLog(NID_SHELL, "success to be connected with master daemon");
101 AppWidgetManagerService::GetInstance()->StartPingTimer();
106 SysLog(NID_SHELL, "failed to provider_send_hello()");
112 AppWidgetManagerService::AppWidgetDisconnected(struct event_arg *arg, void* data)
114 SysLog(NID_SHELL, "success to be disconnected with master daemon");
119 AppWidgetManagerService::StartPingTimer(void)
121 __pingTimer.Construct(*this);
122 __pingTimer.StartAsRepeatable(120000);
126 AppWidgetManagerService::OnTimerExpired(Timer& timer)
128 SysLog(NID_SHELL, "provider_send_ping");
129 provider_send_ping();
132 //TODO: remove unused param 'appId'
134 AppWidgetManagerService::Find(const String& appId, const String& instanceId) const
136 for (int i = 0; i < __appWidgetContextList.GetCount(); i++)
138 _AppWidgetContext* pAppWidgetContext = null;
139 __appWidgetContextList.GetAt(i, pAppWidgetContext);
141 if (pAppWidgetContext->GetInstanceId() == instanceId)
143 return pAppWidgetContext;
150 AppWidgetManagerService::Find(const String& appId) const
154 for (int i = 0; i < __appWidgetContextList.GetCount(); i++)
156 _AppWidgetContext* pAppWidgetContext = null;
157 __appWidgetContextList.GetAt(i, pAppWidgetContext);
159 if (pAppWidgetContext->GetProviderId() == appId)
161 clientId = pAppWidgetContext->GetClientId();
166 SysLog(NID_SHELL, "clientId is %d", clientId);
172 AppWidgetManagerService::SetIpcClientIds(const Tizen::App::AppId& appId, int clientId)
174 for (int i = 0; i < __appWidgetContextList.GetCount(); i++)
176 _AppWidgetContext* pAppWidgetContext = null;
177 __appWidgetContextList.GetAt(i, pAppWidgetContext);
178 SysSecureLog(NID_SHELL, "%ls, %ls, %ls", pAppWidgetContext->GetInstanceId().GetPointer(), pAppWidgetContext->GetProviderId().GetPointer(), appId.GetPointer());
180 if (pAppWidgetContext->GetAppId() == appId)
182 pAppWidgetContext->SetIpcClientId(clientId);
186 SysLog(NID_SHELL, "client is unregistered.");
187 pAppWidgetContext->Suspend();
188 if(pAppWidgetContext->GetAppWidgetPopup())
190 pAppWidgetContext->OnPopupDestoyed();
195 SysLog(NID_SHELL, "client is registered.(%d)", clientId);
203 AppWidgetManagerService::OnIpcClientConnected(const _IpcServer& server, int clientId)
205 String appId = server.GetClientApplicationId();
206 SysLog(NID_SHELL, "(%ls)\n", appId.GetPointer());
208 this->SetIpcClientIds(appId, clientId);
212 AppWidgetManagerService::OnIpcClientDisconnected(const _IpcServer& server, int clientId)
214 String appId = server.GetClientApplicationId();
215 SysLog(NID_SHELL, "(%ls)\n", appId.GetPointer());
217 this->SetIpcClientIds(appId, -1);
221 AppWidgetManagerService::AddAppWidget(_AppWidgetContext* pAppWidgetContext)
223 SysSecureLog(NID_SHELL, "%ls, %ls, count(%d)", pAppWidgetContext->GetProviderId().GetPointer(), pAppWidgetContext->GetInstanceId().GetPointer(), __appWidgetContextList.GetCount());
225 return __appWidgetContextList.Add(pAppWidgetContext);
229 AppWidgetManagerService::RemoveAppWidget(const char* pPackageName, const char* pId, bool free)
231 SysTryReturn(NID_SHELL, ( pPackageName != null && pId != null), null, E_INVALID_ARG, "[E_INVALID_ARG]");
233 _AppWidgetContext* pAppWidgetContext = Find(pPackageName, pId);
234 SysTryReturn(NID_SHELL, pAppWidgetContext, null, E_OBJ_NOT_FOUND, "[E_OBJ_NOT_FOUND]");
236 result r = __appWidgetContextList.Remove(pAppWidgetContext);
238 delete pAppWidgetContext;
240 SysLog(NID_SHELL, "AppWidget(%s, %s) is removed. remain count(%d)", pPackageName, pId, __appWidgetContextList.GetCount());
244 ///////////////////////////////////////////////////////
245 // MasterDaemonEventReceiver implementation
246 ///////////////////////////////////////////////////////
248 AppWidgetManagerService::OnAppWidgetCreate(struct event_arg *arg, int *width, int *height, double *priority, void* data)
250 SysTryReturn(NID_SHELL, arg != null, EINVAL, E_INVALID_ARG, "[E_INVALID_ARG]");
251 SysTryReturn(NID_SHELL, arg->pkgname != null, EINVAL, E_INVALID_ARG, "[E_INVALID_ARG]");
252 SysTryReturn(NID_SHELL, arg->id != null, EINVAL, E_INVALID_ARG, "[E_INVALID_ARG]");
253 SysTryReturn(NID_SHELL, arg->type == event_arg::EVENT_NEW, -EPERM, E_SUCCESS, "invalid argument from master");
255 SysSecureLog(NID_SHELL, "packageName(%s) id(%s) content(%s) cluster(%s) category(%s)", arg->pkgname, arg->id, arg->info.lb_create.content, arg->info.lb_create.cluster, arg->info.lb_create.category);
256 SysTryReturn (NID_SHELL, AppWidgetManagerService::GetInstance()->Find(arg->pkgname, arg->id) == null, -EBUSY, E_SUCCESS,"already exist");
258 double default_priority = 1.0f;
259 _AppWidgetContext* pAppWidgetContext = new (std::nothrow)_AppWidgetContext( arg->info.lb_create.content, arg->pkgname, arg->id,
260 arg->info.lb_create.width, arg->info.lb_create.height, arg->info.lb_create.period * 1000, default_priority);
261 SysTryReturn(NID_SHELL, pAppWidgetContext, 0, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY]");
263 int clientId = AppWidgetManagerService::GetInstance()->Find(arg->pkgname);
266 SysLog(NID_SHELL, "There is same parent application.");
267 pAppWidgetContext->SetIpcClientId(clientId);
271 SysLog(NID_SHELL, "There is no same parent application.");
274 AppWidgetManagerService* pAppWidgetService = AppWidgetManagerService::GetInstance();
275 pAppWidgetService->AddAppWidget(pAppWidgetContext);
276 pAppWidgetContext->OnAdded();
278 *priority = pAppWidgetContext->GetPriority();
279 *height= pAppWidgetContext->GetHeight();
280 *width = pAppWidgetContext->GetWidth();
282 SysLog(NID_SHELL, "Exit. %d appWidget(s)", pAppWidgetService->__appWidgetContextList.GetCount());
287 AppWidgetManagerService::OnAppWidgetUpdate(struct event_arg *arg, void* data)
289 if( arg->id == null || strlen(arg->id) < 1)
291 SysLog(NID_SHELL, "updating alls");
292 AppWidgetManagerService::GetInstance()->UpdateAllAppWidgetsByAppId(arg->pkgname);
296 _AppWidgetContext* pAppWidgetContext = AppWidgetManagerService::GetInstance()->Find(arg->pkgname, arg->id);
297 SysSecureTryReturnResult(NID_SHELL, pAppWidgetContext , E_SYSTEM, "[E_SYSTEM] pAppWidgetContext is null for appId(%s), instanceId(%s)", arg->pkgname, arg->id);
299 pAppWidgetContext->OnUpdate(L"");
306 AppWidgetManagerService::UpdateAllAppWidgetsByAppId(const String& providerId)
308 for( int i = 0; i < __appWidgetContextList.GetCount(); i++ )
310 _AppWidgetContext* pAppWidgetContext = null;
311 __appWidgetContextList.GetAt(i, pAppWidgetContext);
313 if ( pAppWidgetContext->GetProviderId() == providerId )
315 pAppWidgetContext->OnUpdate(L"");
322 AppWidgetManagerService::OnAppWidgetDestroy(struct event_arg *arg, void* data)
324 SysTryReturn (NID_SHELL, arg->type == event_arg::EVENT_DELETE, -EPERM, E_SUCCESS, "invalid argument from master");
325 SysLog(NID_SHELL, "Enter");
327 AppWidgetManagerService* pAppWidgetManagerService = AppWidgetManagerService::GetInstance();
329 _AppWidgetContext* pAppWidgetContext = pAppWidgetManagerService->Find(arg->pkgname, arg->id);
330 SysSecureTryReturn(NID_SHELL, pAppWidgetContext, 0, E_SYSTEM, "[E_SYSTEM] pAppWidgetContext is null for appId(%s), instanceId(%s)", arg->pkgname, arg->id);
332 result r = pAppWidgetContext->OnRemoved();
333 SysTryReturn(NID_SHELL, !IsFailed(r), 0, E_SYSTEM, "[E_SYSTEM] Failed to execute OnRemoved.");
335 r = pAppWidgetManagerService->RemoveAppWidget(arg->pkgname, arg->id, true);
336 SysTryReturn(NID_SHELL, !IsFailed(r), 0, E_SYSTEM, "[E_SYSTEM] Failed to execute RemoveAppWidget.");
338 SysLog(NID_SHELL, "Exit");
343 AppWidgetManagerService::OnAppWidgetPopupCreate(struct event_arg *arg, void* data)
345 SysTryReturn (NID_SHELL, arg->type == event_arg::EVENT_PD_CREATE, -EPERM, E_SUCCESS, "invalid argument from master");
346 SysSecureLog(NID_SHELL, "packageName(%s), id(%s), x(%d), y(%d), width(%f), height(%f), priority(%d)", arg->pkgname, arg->id, arg->info.pd_create.x, arg->info.pd_create.y, arg->info.pd_create.w, arg->info.pd_create.h);
348 _AppWidgetContext* pAppWidgetContext = AppWidgetManagerService::GetInstance()->Find(arg->pkgname, arg->id);
349 SysSecureTryReturnResult(NID_SHELL, pAppWidgetContext , E_SYSTEM, "[E_SYSTEM] pAppWidgetContext is null for appId(%s), instanceId(%s)", arg->pkgname, arg->id);
351 pAppWidgetContext->OnPopupCreated(arg->info.pd_create.x, arg->info.pd_create.y, arg->info.pd_create.w, arg->info.pd_create.h);
357 AppWidgetManagerService::OnAppWidgetPopupDestroy(struct event_arg *arg, void* data)
359 SysTryReturn (NID_SHELL, arg->type == event_arg::EVENT_PD_DESTROY, -EPERM, E_SUCCESS, "invalid argument from master");
360 _AppWidgetContext* pAppWidgetContext = AppWidgetManagerService::GetInstance()->Find(arg->pkgname, arg->id);
361 SysSecureTryReturnResult(NID_SHELL, pAppWidgetContext , E_SYSTEM, "[E_SYSTEM] pAppWidgetContext is null for appId(%s), instanceId(%s)", arg->pkgname, arg->id);
363 SysSecureLog(NID_SHELL, "packageName(%s), id(%s)", arg->pkgname, arg->id);
364 pAppWidgetContext->OnPopupDestoyed();
370 AppWidgetManagerService::OnAppWidgetPause(struct event_arg *arg, void* data)
372 SysTryReturn(NID_SHELL, arg, 0, E_SUCCESS, "arg is null!");
374 _AppWidgetContext* pAppWidgetContext = AppWidgetManagerService::GetInstance()->Find(arg->pkgname, arg->id);
375 SysSecureTryReturnResult(NID_SHELL, pAppWidgetContext , 0, "[E_SYSTEM] pAppWidgetContext is null for appId(%s), instanceId(%s)", arg->pkgname, arg->id);
377 SysSecureLog(NID_SHELL, "packageName(%s), id(%s)", arg->pkgname, arg->id);
378 pAppWidgetContext->OnBackground();
384 AppWidgetManagerService::OnAppWidgetPauseAll(struct event_arg *arg, void* data)
386 SysLog(NID_SHELL, "OnAppWidgetPauseAll");
388 AppWidgetManagerService* pAppManagerService = AppWidgetManagerService::GetInstance();
390 for (int i = 0; i < (pAppManagerService->__appWidgetContextList).GetCount(); i++)
392 _AppWidgetContext* pAppWidgetContext = null;
393 (pAppManagerService->__appWidgetContextList).GetAt(i, pAppWidgetContext);
395 pAppWidgetContext->OnBackground();
402 AppWidgetManagerService::OnAppWidgetResume(struct event_arg *pArg, void* pData)
404 SysTryReturn(NID_SHELL, pArg || pArg->id || pArg->pkgname, 0, E_SUCCESS, "pArg is null!");
406 _AppWidgetContext* pAppWidgetContext = AppWidgetManagerService::GetInstance()->Find(pArg->pkgname, pArg->id);
407 SysSecureTryReturnResult(NID_SHELL, pAppWidgetContext , E_SYSTEM, "[E_SYSTEM] pAppWidgetContext is null for appId(%s), instanceId(%s)", pArg->pkgname, pArg->id);
409 SysSecureLog(NID_SHELL, "packageName(%s), id(%s)", pArg->pkgname, pArg->id);
410 pAppWidgetContext->OnForeground();
415 AppWidgetManagerService::OnAppWidgetResumeAll(struct event_arg *pArg, void* pData)
417 SysLog(NID_SHELL, "OnAppWidgetResumeAll");
419 AppWidgetManagerService* pAppManagerService = AppWidgetManagerService::GetInstance();
421 for (int i = 0; i < (pAppManagerService->__appWidgetContextList).GetCount(); i++)
423 _AppWidgetContext* pAppWidgetContext = null;
424 (pAppManagerService->__appWidgetContextList).GetAt(i, pAppWidgetContext);
426 pAppWidgetContext->OnForeground();
433 AppWidgetManagerService::OnAppWidgetClick(struct event_arg *arg, void* data)
435 SysTryReturn (NID_SHELL, arg->type == event_arg::EVENT_CLICKED, -EPERM, E_SUCCESS, "invalid argument from master");
436 SysTryReturn(NID_SHELL, arg != null, -EPERM, E_SUCCESS, "arg is null!");
437 SysSecureLog(NID_SHELL, "packageName(%s), id(%s), clicked.event(%s), clicked.x(%f), clicked.y(%f)", arg->pkgname, arg->id, arg->info.clicked.event, arg->info.clicked.x, arg->info.clicked.y);
443 AppWidgetManagerService::OnAppWidgetResize(struct event_arg *arg, void* data)
445 SysTryReturn(NID_SHELL, arg || arg->id || arg->pkgname, 0, E_SUCCESS, "arg is null!");
446 SysTryReturn (NID_SHELL, arg->type == event_arg::EVENT_RESIZE, -EPERM, E_SUCCESS, "invalid argument from master");
448 SysSecureLog(NID_SHELL, "packageName(%s), id(%s), resize.w(%d), resize.h(%d)", arg->pkgname, arg->id, arg->info.resize.w, arg->info.resize.h);
450 _AppWidgetContext* pAppWidgetContext = AppWidgetManagerService::GetInstance()->Find(arg->pkgname, arg->id);
451 SysSecureTryReturnResult(NID_SHELL, pAppWidgetContext , E_SYSTEM, "[E_SYSTEM] pAppWidgetContext is null for appId(%s), instanceId(%s)", arg->pkgname, arg->id);
453 pAppWidgetContext->OnResize(arg->info.resize.w, arg->info.resize.h);
459 AppWidgetManagerService::OnAppWidgetPeriodChaned(struct event_arg *arg, void* data)
461 SysTryReturn(NID_SHELL, arg != null, 0, E_SUCCESS, "arg is null!");
462 SysSecureLog(NID_SHELL, "packageName(%s), id(%s), width(%d), height(%d), priority(%d)", arg->pkgname, arg->id);
467 AppWidgetManagerService::OnAppWidgetRecreate(struct event_arg *arg, void* data)
469 SysLog(NID_SHELL, "");
474 AppWidgetManagerService::InitializeMasterDaemonEventReceiver(const char *pServiceExecutableName)
476 SysTryReturnResult(NID_SHELL, pServiceExecutableName != null, E_INVALID_ARG, "");
477 SysLog(NID_SHELL, "Enter.");
479 __appWidgetContextList.Construct();
483 * Only for the buffer type
485 struct event_handler cbs;
486 memset(&cbs, 0, sizeof(event_handler));
488 cbs.connected = AppWidgetConnected,
489 cbs.disconnected = AppWidgetDisconnected,
490 cbs.pause = OnAppWidgetPauseAll,
491 cbs.resume = OnAppWidgetResumeAll,
492 cbs.lb_pause = OnAppWidgetPause,
493 cbs.lb_resume = OnAppWidgetResume,
494 cbs.lb_create = OnAppWidgetCreate,
495 cbs.lb_destroy = OnAppWidgetDestroy,
496 cbs.update_content = OnAppWidgetUpdate,
497 cbs.pd_create = OnAppWidgetPopupCreate,
498 cbs.pd_destroy = OnAppWidgetPopupDestroy,
499 cbs.clicked = OnAppWidgetClick,
500 cbs.resize = OnAppWidgetResize,
501 cbs.set_period = OnAppWidgetPeriodChaned;
502 cbs.lb_recreate = OnAppWidgetRecreate;/* Recover from the fault of slave */
503 //cbs.content_event = OnAppWidgetContentEvent,
505 int ret = provider_init(null, pServiceExecutableName, &cbs, this);
506 SysTryReturnResult(NID_SHELL, ret == 0, E_SYSTEM, "provider_init failed.");
508 SysLog(NID_SHELL, "Exit.");
513 AppWidgetManagerService::DeinitializeMasterDaemonEventReceiver(void)
515 SysLog(NID_SHELL, "Enter.");
517 SysLog(NID_SHELL, "Exit.");
521 ///////////////////////////////////////////////////////
522 // stub implementation
523 ///////////////////////////////////////////////////////
525 AppWidgetManagerService::RequestUpdate(const Tizen::App::AppId& appId, const Tizen::Base::String& providerName, const Tizen::Base::String& argument)
527 SysLog(NID_SHELL, "%ls, %ls", appId.GetPointer(), providerName.GetPointer() );
530 for( int i = 0; i < __appWidgetContextList.GetCount(); i++ )
532 _AppWidgetContext* pAppWidgetContext = null;
533 __appWidgetContextList.GetAt(i, pAppWidgetContext);
535 if ( pAppWidgetContext->GetAppId() == appId && pAppWidgetContext->GetProviderName() == providerName)
537 ArrayList* pArray = new (std::nothrow) ArrayList();
538 SysTryReturnResult(NID_SHELL, pArray, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY]");
541 pArray->Add(pAppWidgetContext);
542 pArray->Add(new String(argument));
544 result r = __handlerThread.SendUserEvent(LOCAL_EVENT_REQUEST_UPDATE, pArray);
545 SysTryLog(NID_SHELL, !IsFailed(r), "[%s] Propagated.", GetErrorMessage(r));
550 SysLog(NID_SHELL, "Exit.");
551 return (found) ? E_SUCCESS : E_OBJ_NOT_FOUND;
555 AppWidgetManagerService::RequestUpdateInstance(const Tizen::Base::String& instanceId, const Tizen::Base::String& argument)
557 SysSecureLog(NID_SHELL, "%ls, %ls", instanceId.GetPointer(), argument.GetPointer() );
559 for (int i = 0; i < __appWidgetContextList.GetCount(); i++ )
561 _AppWidgetContext* pAppWidgetContext = null;
562 __appWidgetContextList.GetAt(i, pAppWidgetContext);
564 if (pAppWidgetContext->GetInstanceId() == instanceId)
566 SysLog(NID_SHELL, "OK");
568 ArrayList* pArray = new (std::nothrow) ArrayList();
569 SysTryReturnResult(NID_SHELL, pArray, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY]");
572 pArray->Add(pAppWidgetContext);
573 pArray->Add(new String(argument));
575 result r = __handlerThread.SendUserEvent(LOCAL_EVENT_REQUEST_UPDATE, pArray);
576 SysTryLog(NID_SHELL, !IsFailed(r), "[%s] Propagated.", GetErrorMessage(r));
581 SysLog(NID_SHELL, "Exit.");
582 return E_OBJ_NOT_FOUND;
586 AppWidgetManagerService::RequestSharedMemoryId(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId, int width, int height, int& shmId)
588 _AppWidgetContext* pAppWidgetContext = this->Find(appId, instanceId);
589 SysSecureTryReturnResult(NID_SHELL, pAppWidgetContext , E_SYSTEM, "[E_SYSTEM] pAppWidgetContext is null for (%ls) (%ls)", appId.GetPointer(), instanceId.GetPointer());
591 shmId = pAppWidgetContext->GetSharedMemId(width, height);
592 SysSecureTryReturnResult(NID_SHELL, pAppWidgetContext , shmId != -1, "[E_SYSTEM] failed to GetSharedMemId for (%ls) (%ls)", appId.GetPointer(), instanceId.GetPointer());
598 AppWidgetManagerService::RequestSharedMemoryIdForPD(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId, int width, int height, int& shmId)
600 _AppWidgetContext* pAppWidgetContext = this->Find(appId, instanceId);
601 SysSecureTryReturnResult(NID_SHELL, pAppWidgetContext , E_SYSTEM, "[E_SYSTEM] pAppWidgetContext is null for (%ls) (%ls)", appId.GetPointer(), instanceId.GetPointer());
603 _AppWidgetPopupContext* pPd = pAppWidgetContext->GetAppWidgetPopup();
604 SysSecureTryReturnResult(NID_SHELL, pPd , E_SYSTEM, "[E_SYSTEM] pPd is null for (%ls) (%ls)", appId.GetPointer(), instanceId.GetPointer());
606 if(pPd->HasValidClientId() == false)
608 String fullAppId = __pIpcServer->GetClientApplicationId();
609 pPd->SetIpcClientId(__pIpcServer->GetClientId());
612 shmId = pPd->GetSharedMemId(width, height);
613 SysSecureTryReturnResult(NID_SHELL, pAppWidgetContext , shmId != -1, "[E_SYSTEM] failed to GetSharedMemId for (%ls) (%ls)", appId.GetPointer(), instanceId.GetPointer());
619 AppWidgetManagerService::RequestSyncSharedMemory(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId, int width, int height)
621 _AppWidgetContext* pAppWidgetContext = this->Find(appId, instanceId);
622 SysSecureTryReturnResult(NID_SHELL, pAppWidgetContext , E_SYSTEM, "[E_SYSTEM] pAppWidgetContext is null for (%ls) (%ls)", appId.GetPointer(), instanceId.GetPointer());
624 return pAppWidgetContext->RequestUpdateRemote(width, height);
628 AppWidgetManagerService::RequestSyncSharedMemoryForPD(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId)
630 _AppWidgetContext* pAppWidgetContext = this->Find(appId, instanceId);
631 SysSecureTryReturnResult(NID_SHELL, pAppWidgetContext , E_SYSTEM, "[E_SYSTEM] pAppWidgetContext is null for (%ls) (%ls)", appId.GetPointer(), instanceId.GetPointer());
632 SysSecureTryReturnResult(NID_SHELL, pAppWidgetContext->GetAppWidgetPopup(), E_SYSTEM, "[E_SYSTEM] GetAppWidgetPopup() returns null for (%ls) (%ls)", appId.GetPointer(), instanceId.GetPointer());
634 return pAppWidgetContext->GetAppWidgetPopup()->RequestUpdateRemote();
638 AppWidgetManagerService::RequestReleaseSharedMemory(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId)
644 AppWidgetManagerService::RequestReleaseSharedMemoryForPD(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId)
650 AppWidgetManagerService::SendResult(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId, bool isSucceeded)
654 _AppWidgetContext* pAppWidgetContext = this->Find(appId, instanceId);
655 SysSecureTryReturnResult(NID_SHELL, pAppWidgetContext, E_SYSTEM, "[E_SYSTEM] pAppWidgetContext is null for (%ls) (%ls)", appId.GetPointer(), instanceId.GetPointer());
657 std::unique_ptr<char[]> packageName(_StringConverter::CopyToCharArrayN(pAppWidgetContext->GetProviderId()));
658 std::unique_ptr<char[]> id(_StringConverter::CopyToCharArrayN(pAppWidgetContext->GetInstanceId()));
660 int ret = provider_send_deleted(packageName.get(), id.get());
661 SysTryReturnResult(NID_SHELL, ret >= 0 , E_SYSTEM, "Failed to execute provider_send_deleted.");
663 result r = pAppWidgetContext->OnRemoved();
664 SysTryReturn(NID_SHELL, !IsFailed(r), 0, E_SYSTEM, "[E_SYSTEM] Failed to execute OnRemoved.");
666 r = RemoveAppWidget(packageName.get(), id.get(), true);
667 SysTryReturn(NID_SHELL, !IsFailed(r), 0, E_SYSTEM, "[E_SYSTEM] Failed to execute RemoveAppWidget.");
673 AppWidgetManagerService::_TaskHandlerThread::~_TaskHandlerThread(void)
679 AppWidgetManagerService::_TaskHandlerThread::OnUserEventReceivedN(RequestId reqId, IList* pArgs)
681 SysTryReturnVoidResult(NID_SHELL, pArgs != null, E_INVALID_STATE, "pArgs is null!.");
683 SysLog(NID_SHELL, "Enter.");
687 case LOCAL_EVENT_REQUEST_UPDATE:
689 _AppWidgetContext* pAppWidgetContext = dynamic_cast<_AppWidgetContext*>( pArgs->GetAt(0) );
690 SysTryReturnVoidResult(NID_SHELL, pAppWidgetContext != null, E_INVALID_STATE, "_AppWidget is null!.");
692 String* pArgument = dynamic_cast<String*>( pArgs->GetAt(1) );
693 SysTryReturnVoidResult(NID_SHELL, pArgument != null, E_INVALID_STATE, "pArgument is null!.");
695 pAppWidgetContext->OnUpdate(*pArgument);
704 SysAssertf(false, "Never get here!");
708 SysLog(NID_SHELL, "Exit.");
711 }}} // Tizen::Shell::App