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.
24 #include <unique_ptr.h>
29 #include <FBaseSysLog.h>
31 #include <FApp_AppManagerImpl.h>
32 #include <FIo_IpcServer.h>
33 #include <FBase_StringConverter.h>
35 #include "FShell_AppWidgetContext.h"
36 #include "FShell_AppWidgetPopupContext.h"
37 #include "FShell_AppWidgetManagerStub.h"
39 #include "FShell_AppWidgetManagerService.h"
41 namespace Tizen { namespace Shell { namespace App {
43 using namespace Tizen::App;
44 using namespace Tizen::Base;
45 using namespace Tizen::Base::Collection;
46 using namespace Tizen::Base::Runtime;
47 using namespace Tizen::Io;
48 using namespace Tizen::System;
49 using namespace Tizen::Shell::App;
54 static const RequestId LOCAL_EVENT_REQUEST_UPDATE = 0;
57 AppWidgetManagerService::AppWidgetManagerService()
61 AppWidgetManagerService::~AppWidgetManagerService()
64 DeinitializeMasterDaemonEventReceiver();
67 AppWidgetManagerService*
68 AppWidgetManagerService::GetInstance(void)
70 static AppWidgetManagerService* pSelf = null;
73 pSelf = new AppWidgetManagerService();
74 SysTryReturn(NID_SHELL, pSelf != null, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY]");
76 result r = pSelf->Construct();
77 SysAssertf(!IsFailed(r), "Failed to construct AppWidgetManagerService");
78 SysLog(NID_SHELL, "AppWidgetManagerService is created.");
84 AppWidgetManagerService::Construct()
86 // _AppManagerImpl::GetInstance()->AddEventListener(*this);
88 _AppWidgetManagerStub::StartIpcServer();
90 result r = __handlerThread.Construct(THREAD_TYPE_EVENT_DRIVEN);
91 SysTryReturn(NID_SHELL, IsFailed(r) == false, false, r, "[%s] Event thread creation failure.", GetErrorMessage(r));
93 r = __handlerThread.Start();
94 SysTryReturn(NID_SHELL, IsFailed(r) == false, false, r, "[%s] Event thread Start failure.", GetErrorMessage(r));
96 return InitializeMasterDaemonEventReceiver("osp-appwidget-service");
100 AppWidgetManagerService::AppWidgetConnected(struct event_arg *arg, void* data)
103 ret = provider_send_hello();
106 SysLog(NID_SHELL, "success to be connected with master daemon");
107 AppWidgetManagerService::GetInstance()->StartPingTimer();
112 SysLog(NID_SHELL, "failed to provider_send_hello()");
118 AppWidgetManagerService::AppWidgetDisconnected(struct event_arg *arg, void* data)
120 SysLog(NID_SHELL, "success to be disconnected with master daemon");
121 // aul_terminate_pid(getpid());
126 AppWidgetManagerService::StartPingTimer()
128 __pingTimer.Construct(*this);//, true);
129 __pingTimer.StartAsRepeatable(120000);
133 AppWidgetManagerService::OnTimerExpired(Timer& timer)
135 SysLog(NID_SHELL, "provider_send_ping");
136 provider_send_ping();
140 AppWidgetManagerService::Find(const String& appId, const String& instanceId) const
142 for( int i = 0; i < __appWidgetContextList.GetCount(); i++ )
144 _AppWidgetContext* pAppWidgetContext = null;
145 __appWidgetContextList.GetAt(i, pAppWidgetContext);
146 // SysLog(NID_SHELL, "%ls", pAppWidgetContext->__instanceId.GetPointer());
148 if ( pAppWidgetContext->__instanceId == instanceId )
150 // SysAssert(pAppWidgetContext->__appId == appId)
151 return pAppWidgetContext;
158 AppWidgetManagerService::SetIpcClientIds(const Tizen::App::AppId& appId, int clientId)
160 for( int i = 0; i < __appWidgetContextList.GetCount(); i++ )
162 _AppWidgetContext* pAppWidgetContext = null;
163 __appWidgetContextList.GetAt(i, pAppWidgetContext);
164 SysLog(NID_SHELL, "%ls", pAppWidgetContext->__instanceId.GetPointer());
165 SysLog(NID_SHELL, "%ls, %ls", pAppWidgetContext->__providerId.GetPointer(), appId.GetPointer());
167 if ( pAppWidgetContext->__appId == appId )
169 SysLog(NID_SHELL,"");
170 pAppWidgetContext->SetIpcClientId(clientId);
171 SysLog(NID_SHELL, "client is registered.(%d)", clientId);
173 if( clientId == -1)//disconnected
175 // pAppWidgetContext->ReleaseSharedMem();
176 pAppWidgetContext->Suspend();
177 if(pAppWidgetContext->GetAppWidgetPopup())
179 pAppWidgetContext->OnPopupDestoyed();
188 AppWidgetManagerService::OnIpcClientConnected(const _IpcServer& server, int clientId)
190 String appId = server.GetClientApplicationId();
191 SysLog(NID_SHELL, "(%ls)\n", appId.GetPointer());
193 this->SetIpcClientIds(appId, clientId);
197 AppWidgetManagerService::OnIpcClientDisconnected(const _IpcServer& server, int clientId)
199 String appId = server.GetClientApplicationId();
200 SysLog(NID_SHELL, "(%ls)\n", appId.GetPointer());
202 this->SetIpcClientIds(appId, -1);
206 AppWidgetManagerService::AddAppWidget(_AppWidgetContext* pAppWidgetContext)
208 SysLog(NID_SHELL, "%ls, %ls, count(%d)", pAppWidgetContext->__providerId.GetPointer(), pAppWidgetContext->__instanceId.GetPointer(), __appWidgetContextList.GetCount());
210 return __appWidgetContextList.Add(pAppWidgetContext);
214 AppWidgetManagerService::RemoveAppWidget(const char* pPackageName, const char* pId, bool free)
216 SysLog(NID_SHELL, "%s, %s, count(%d)", pPackageName, pId, __appWidgetContextList.GetCount());
218 SysTryReturn(NID_SHELL, ( pPackageName != null && pId != null), null, E_INVALID_ARG, "[E_INVALID_ARG]");
219 SysLog(NID_SHELL, "%s, %s", pPackageName, pId);
221 _AppWidgetContext* pAppWidgetContext = Find(pPackageName, pId);
222 SysTryReturn(NID_SHELL, pAppWidgetContext, null, E_OBJ_NOT_FOUND, "[E_OBJ_NOT_FOUND]");
224 result r = __appWidgetContextList.Remove(pAppWidgetContext);
226 if( __appWidgetContextList.GetCount() == 0 )
228 SysLog(NID_SHELL, "No running native appWidget app remains, terminating osp appWidget service...");
229 Tizen::App::App::GetInstance()->Terminate();
236 ///////////////////////////////////////////////////////
237 // MasterDaemonEventReceiver implementation
238 ///////////////////////////////////////////////////////
240 AppWidgetManagerService::OnAppWidgetCreate(struct event_arg *arg, int *width, int *height, double *priority, void* data)
242 SysTryReturn(NID_SHELL, arg != null, EINVAL, E_INVALID_ARG, "[E_INVALID_ARG]");
243 SysTryReturn(NID_SHELL, arg->pkgname != null, EINVAL, E_INVALID_ARG, "[E_INVALID_ARG]");
244 SysTryReturn(NID_SHELL, arg->id != null, EINVAL, E_INVALID_ARG, "[E_INVALID_ARG]");
245 SysTryReturn(NID_SHELL, arg->type == event_arg::EVENT_NEW, -EPERM, E_SUCCESS, "invalid argument from master");
247 SysLog(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);
248 SysTryReturn (NID_SHELL, AppWidgetManagerService::GetInstance()->Find(arg->pkgname, arg->id) == null, -EBUSY, E_SUCCESS,"already exist");
250 double default_priority = 1.0f;
251 _AppWidgetContext* pAppWidgetContext = new (std::nothrow)_AppWidgetContext( arg->info.lb_create.content, arg->pkgname, arg->id,
252 arg->info.lb_create.width, arg->info.lb_create.height, arg->info.lb_create.period * 1000, default_priority);
253 SysTryReturn(NID_SHELL, pAppWidgetContext, 0, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY]");
255 AppWidgetManagerService* pAppWidgetService = AppWidgetManagerService::GetInstance();
256 pAppWidgetService->AddAppWidget(pAppWidgetContext);
257 pAppWidgetContext->OnAdded();
259 *priority = pAppWidgetContext->__priority;
260 *height= pAppWidgetContext->__height;
261 *width = pAppWidgetContext->__width;
263 SysLog(NID_SHELL, "Exit. %d appWidget(es)", pAppWidgetService->__appWidgetContextList.GetCount());
268 AppWidgetManagerService::OnAppWidgetUpdate(struct event_arg *arg, void* data)
270 if( arg->id == null || strlen(arg->id) < 1)
272 SysLog(NID_SHELL, "updating alls");
273 AppWidgetManagerService::GetInstance()->UpdateAllAppWidgetsByAppId(arg->pkgname);
277 _AppWidgetContext* pAppWidgetContext = AppWidgetManagerService::GetInstance()->Find(arg->pkgname, arg->id);
278 SysTryReturnResult(NID_SHELL, pAppWidgetContext , E_SYSTEM, "[E_SYSTEM] pAppWidgetContext is null for appId(%s), instanceId(%s)", arg->pkgname, arg->id);
280 pAppWidgetContext->OnUpdate(L"");
287 AppWidgetManagerService::UpdateAllAppWidgetsByAppId(const String& providerId)
289 for( int i = 0; i < __appWidgetContextList.GetCount(); i++ )
291 _AppWidgetContext* pAppWidgetContext = null;
292 __appWidgetContextList.GetAt(i, pAppWidgetContext);
294 if ( pAppWidgetContext->__providerId == providerId )
296 pAppWidgetContext->OnUpdate(L"");
303 AppWidgetManagerService::OnAppWidgetDestroy(struct event_arg *arg, void* data)
305 SysTryReturn (NID_SHELL, arg->type == event_arg::EVENT_DELETE, -EPERM, E_SUCCESS, "invalid argument from master");
306 SysLog(NID_SHELL, "Enter");
308 AppWidgetManagerService* pAppWidgetManagerService = AppWidgetManagerService::GetInstance();
310 _AppWidgetContext* pAppWidgetContext = pAppWidgetManagerService->Find(arg->pkgname, arg->id);
311 SysTryReturnResult(NID_SHELL, pAppWidgetContext , E_SYSTEM, "[E_SYSTEM] pAppWidgetContext is null for appId(%s), instanceId(%s)", arg->pkgname, arg->id);
313 pAppWidgetContext->OnRemoved();
314 pAppWidgetManagerService->RemoveAppWidget( arg->pkgname, arg->id, true);
315 delete pAppWidgetContext;
317 SysLog(NID_SHELL, "Exit");
322 AppWidgetManagerService::OnAppWidgetPopupCreate(struct event_arg *arg, void* data)
324 SysTryReturn (NID_SHELL, arg->type == event_arg::EVENT_PD_CREATE, -EPERM, E_SUCCESS, "invalid argument from master");
325 SysLog(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);
327 _AppWidgetContext* pAppWidgetContext = AppWidgetManagerService::GetInstance()->Find(arg->pkgname, arg->id);
328 SysTryReturnResult(NID_SHELL, pAppWidgetContext , E_SYSTEM, "[E_SYSTEM] pAppWidgetContext is null for appId(%s), instanceId(%s)", arg->pkgname, arg->id);
330 /*if( pAppWidgetContext->GetAppWidgetPopup() )
332 pAppWidgetContext->OnPopupDestoyed();
334 pAppWidgetContext->OnPopupCreated(arg->info.pd_create.x, arg->info.pd_create.y, arg->info.pd_create.w, arg->info.pd_create.h);
340 AppWidgetManagerService::OnAppWidgetPopupDestroy(struct event_arg *arg, void* data)
342 SysTryReturn (NID_SHELL, arg->type == event_arg::EVENT_PD_DESTROY, -EPERM, E_SUCCESS, "invalid argument from master");
343 SysLog(NID_SHELL, "packageName(%s), id(%s)", arg->pkgname, arg->id);
344 _AppWidgetContext* pAppWidgetContext = AppWidgetManagerService::GetInstance()->Find(arg->pkgname, arg->id);
345 SysTryReturnResult(NID_SHELL, pAppWidgetContext , E_SYSTEM, "[E_SYSTEM] pAppWidgetContext is null for appId(%s), instanceId(%s)", arg->pkgname, arg->id);
347 pAppWidgetContext->OnPopupDestoyed();
353 AppWidgetManagerService::OnAppWidgetPause(struct event_arg *arg, void* data)
355 SysTryReturn(NID_SHELL, arg, 0, E_SUCCESS, "arg is null!");
357 _AppWidgetContext* pAppWidgetContext = AppWidgetManagerService::GetInstance()->Find(arg->pkgname, arg->id);
358 SysTryReturnResult(NID_SHELL, pAppWidgetContext , 0, "[E_SYSTEM] pAppWidgetContext is null for appId(%s), instanceId(%s)", arg->pkgname, arg->id);
360 SysLog(NID_SHELL, "packageName(%s), id(%s)", arg->pkgname, arg->id);
361 pAppWidgetContext->OnBackground();
366 AppWidgetManagerService::OnAppWidgetResume(struct event_arg *arg, void* data)
368 SysTryReturn(NID_SHELL, arg || arg->id || arg->pkgname, 0, E_SUCCESS, "arg is null!");
370 _AppWidgetContext* pAppWidgetContext = AppWidgetManagerService::GetInstance()->Find(arg->pkgname, arg->id);
371 SysTryReturnResult(NID_SHELL, pAppWidgetContext , E_SYSTEM, "[E_SYSTEM] pAppWidgetContext is null for appId(%s), instanceId(%s)", arg->pkgname, arg->id);
373 SysLog(NID_SHELL, "packageName(%s), id(%s)", arg->pkgname, arg->id);
374 pAppWidgetContext->OnForeground();
379 AppWidgetManagerService::OnAppWidgetPauseAll(struct event_arg *arg, void* data)
381 SysLog(NID_SHELL,"");
386 AppWidgetManagerService::OnAppWidgetResumeAll(struct event_arg *arg, void* data)
388 SysLog(NID_SHELL,"");
393 AppWidgetManagerService::OnAppWidgetClick(struct event_arg *arg, void* data)
395 SysTryReturn (NID_SHELL, arg->type == event_arg::EVENT_CLICKED, -EPERM, E_SUCCESS, "invalid argument from master");
396 SysTryReturn(NID_SHELL, arg != null, -EPERM, E_SUCCESS, "arg is null!");
397 SysLog(NID_SHELL, "packageName(%s), id(%s), clicked.event(%s), clicked.x(%d), clicked.y(%d)", arg->pkgname, arg->id, arg->info.clicked.event, arg->info.clicked.x, arg->info.clicked.y);
403 AppWidgetManagerService::OnAppWidgetResize(struct event_arg *arg, void* data)
405 SysTryReturn(NID_SHELL, arg || arg->id || arg->pkgname, 0, E_SUCCESS, "arg is null!");
406 SysTryReturn (NID_SHELL, arg->type == event_arg::EVENT_RESIZE, -EPERM, E_SUCCESS, "invalid argument from master");
408 SysLog(NID_SHELL, "packageName(%s), id(%s), resize.w(%d), resize.h(%d)", arg->pkgname, arg->id, arg->info.resize.w, arg->info.resize.h);
410 _AppWidgetContext* pAppWidgetContext = AppWidgetManagerService::GetInstance()->Find(arg->pkgname, arg->id);
411 SysTryReturnResult(NID_SHELL, pAppWidgetContext , E_SYSTEM, "[E_SYSTEM] pAppWidgetContext is null for appId(%s), instanceId(%s)", arg->pkgname, arg->id);
413 pAppWidgetContext->OnResize(arg->info.resize.w, arg->info.resize.h);
419 AppWidgetManagerService::OnAppWidgetPeriodChaned(struct event_arg *arg, void* data)
421 SysTryReturn(NID_SHELL, arg != null, 0, E_SUCCESS, "arg is null!");
422 SysLog(NID_SHELL, "packageName(%s), id(%s), width(%d), height(%d), priority(%d)", arg->pkgname, arg->id);
427 AppWidgetManagerService::OnAppWidgetRecreate(struct event_arg *arg, void* data)
429 SysLog(NID_SHELL, "");
434 AppWidgetManagerService::InitializeMasterDaemonEventReceiver(const char *pServiceExecutableName)
436 SysTryReturnResult(NID_SHELL, pServiceExecutableName != null, E_INVALID_ARG, "");
437 SysLog(NID_SHELL, "Enter.");
439 __appWidgetContextList.Construct();
443 * Only for the buffer type
445 struct event_handler cbs;
446 memset(&cbs, 0, sizeof(event_handler));
448 cbs.connected = AppWidgetConnected,
449 cbs.disconnected = AppWidgetDisconnected,
450 cbs.pause = OnAppWidgetPauseAll,
451 cbs.resume = OnAppWidgetResumeAll,
452 cbs.lb_pause = OnAppWidgetPause,
453 cbs.lb_resume = OnAppWidgetResume,
454 cbs.lb_create = OnAppWidgetCreate,
455 cbs.lb_destroy = OnAppWidgetDestroy,
456 cbs.update_content = OnAppWidgetUpdate,
457 cbs.pd_create = OnAppWidgetPopupCreate,
458 cbs.pd_destroy = OnAppWidgetPopupDestroy,
459 cbs.clicked = OnAppWidgetClick,
460 cbs.resize = OnAppWidgetResize,
461 cbs.set_period = OnAppWidgetPeriodChaned;
462 cbs.lb_recreate = OnAppWidgetRecreate;/* Recover from the fault of slave */
463 //cbs.content_event = OnAppWidgetContentEvent,
465 int ret = provider_init(null, pServiceExecutableName, &cbs, this);
466 SysTryReturnResult(NID_SHELL, ret == 0, E_SYSTEM, "provider_init failed.");
468 SysLog(NID_SHELL, "Exit.");
473 AppWidgetManagerService::DeinitializeMasterDaemonEventReceiver()
475 SysLog(NID_SHELL, "Enter.");
477 SysLog(NID_SHELL, "Exit.");
481 ///////////////////////////////////////////////////////
482 // stub implmentation
483 ///////////////////////////////////////////////////////
486 AppWidgetManagerService::RequestUpdate(const Tizen::App::AppId& appId, const Tizen::Base::String& providerName, const Tizen::Base::String& argument)
488 SysLog(NID_SHELL, "%ls, %ls", appId.GetPointer(), providerName.GetPointer() );
491 for( int i = 0; i < __appWidgetContextList.GetCount(); i++ )
493 _AppWidgetContext* pAppWidgetContext = null;
494 __appWidgetContextList.GetAt(i, pAppWidgetContext);
496 if ( pAppWidgetContext->__appId == appId && pAppWidgetContext->__providerName == providerName)
498 SysLog(NID_SHELL, "OK");
500 ArrayList* pArray = new (std::nothrow) ArrayList();
501 SysTryReturnResult(NID_SHELL, pArray, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY]");
504 pArray->Add(pAppWidgetContext);
505 pArray->Add(new String(argument));
507 result r = __handlerThread.SendUserEvent(LOCAL_EVENT_REQUEST_UPDATE, pArray);
508 SysTryLog(NID_SHELL, !IsFailed(r), "[%s] Propagated.", GetErrorMessage(r));
513 SysLog(NID_SHELL, "Exit.");
514 return (found) ? E_SUCCESS : E_OBJ_NOT_FOUND;
519 AppWidgetManagerService::RequestUpdateInstance(const Tizen::Base::String& instanceId, const Tizen::Base::String& argument)
521 SysLog(NID_SHELL, "%ls, %ls", instanceId.GetPointer(), argument.GetPointer() );
523 for( int i = 0; i < __appWidgetContextList.GetCount(); i++ )
525 _AppWidgetContext* pAppWidgetContext = null;
526 __appWidgetContextList.GetAt(i, pAppWidgetContext);
528 if ( pAppWidgetContext->__instanceId == instanceId)
530 SysLog(NID_SHELL, "OK");
532 ArrayList* pArray = new (std::nothrow) ArrayList();
533 SysTryReturnResult(NID_SHELL, pArray, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY]");
536 pArray->Add(pAppWidgetContext);
537 pArray->Add(new String(argument));
539 result r = __handlerThread.SendUserEvent(LOCAL_EVENT_REQUEST_UPDATE, pArray);
540 SysTryLog(NID_SHELL, !IsFailed(r), "[%s] Propagated.", GetErrorMessage(r));
545 SysLog(NID_SHELL, "Exit.");
546 return E_OBJ_NOT_FOUND;
550 AppWidgetManagerService::RequestSharedMemoryId(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId, int width, int height, int& shmId)
552 _AppWidgetContext* pAppWidgetContext = this->Find(appId, instanceId);
553 SysTryReturnResult(NID_SHELL, pAppWidgetContext , E_SYSTEM, "[E_SYSTEM] pAppWidgetContext is null for (%ls) (%ls)", appId.GetPointer(), instanceId.GetPointer());
555 // if(pAppWidgetContext->HasValidClientId() == false)
557 // String fullAppId = __pIpcServer->GetClientApplicationId();
558 // this->SetIpcClientIds(fullAppId, __pIpcServer->GetClientId());
561 shmId = pAppWidgetContext->GetSharedMemId(width, height);
562 SysTryReturnResult(NID_SHELL, pAppWidgetContext , shmId != -1, "[E_SYSTEM] failed to GetSharedMemId for (%ls) (%ls)", appId.GetPointer(), instanceId.GetPointer());
568 AppWidgetManagerService::RequestSharedMemoryIdForPD(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId, int width, int height, int& shmId)
570 _AppWidgetContext* pAppWidgetContext = this->Find(appId, instanceId);
571 SysTryReturnResult(NID_SHELL, pAppWidgetContext , E_SYSTEM, "[E_SYSTEM] pAppWidgetContext is null for (%ls) (%ls)", appId.GetPointer(), instanceId.GetPointer());
573 _AppWidgetPopupContext* pPd = pAppWidgetContext->GetAppWidgetPopup();
574 SysTryReturnResult(NID_SHELL, pPd , E_SYSTEM, "[E_SYSTEM] pPd is null for (%ls) (%ls)", appId.GetPointer(), instanceId.GetPointer());
576 if(pPd->HasValidClientId() == false)
578 String fullAppId = __pIpcServer->GetClientApplicationId();
579 pPd->SetIpcClientId(__pIpcServer->GetClientId());
582 shmId = pPd->GetSharedMemId(width, height);
583 SysTryReturnResult(NID_SHELL, pAppWidgetContext , shmId != -1, "[E_SYSTEM] failed to GetSharedMemId for (%ls) (%ls)", appId.GetPointer(), instanceId.GetPointer());
589 AppWidgetManagerService::RequestSyncSharedMemory(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId, int width, int height)
591 _AppWidgetContext* pAppWidgetContext = this->Find(appId, instanceId);
592 SysTryReturnResult(NID_SHELL, pAppWidgetContext , E_SYSTEM, "[E_SYSTEM] pAppWidgetContext is null for (%ls) (%ls)", appId.GetPointer(), instanceId.GetPointer());
594 return pAppWidgetContext->RequestUpdateRemote(width, height);
598 AppWidgetManagerService::RequestSyncSharedMemoryForPD(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId)
600 _AppWidgetContext* pAppWidgetContext = this->Find(appId, instanceId);
601 SysTryReturnResult(NID_SHELL, pAppWidgetContext , E_SYSTEM, "[E_SYSTEM] pAppWidgetContext is null for (%ls) (%ls)", appId.GetPointer(), instanceId.GetPointer());
602 SysTryReturnResult(NID_SHELL, pAppWidgetContext->GetAppWidgetPopup(), E_SYSTEM, "[E_SYSTEM] GetAppWidgetPopup() returns null for (%ls) (%ls)", appId.GetPointer(), instanceId.GetPointer());
604 return pAppWidgetContext->GetAppWidgetPopup()->RequestUpdateRemote();
608 AppWidgetManagerService::RequestReleaseSharedMemory(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId)
610 // std::unique_ptr<char[]> pkgname(_StringConverter::CopyToCharArrayN(appId));
611 // std::unique_ptr<char[]> id(_StringConverter::CopyToCharArrayN(instanceId));
613 // _AppWidgetContext* pAppWidgetContext = this->Find(appId, instanceId);
614 // SysTryReturnResult(NID_SHELL, pAppWidgetContext , E_SYSTEM, "[E_SYSTEM] pAppWidgetContext is null for (%ls) (%ls)", appId.GetPointer(), instanceId.GetPointer());
616 // return pAppWidgetContext->ReleaseSharedMem();
621 AppWidgetManagerService::RequestReleaseSharedMemoryForPD(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId)
623 // std::unique_ptr<char[]> pkgname(_StringConverter::CopyToCharArrayN(appId));
624 // std::unique_ptr<char[]> id(_StringConverter::CopyToCharArrayN(instanceId));
626 // _AppWidgetContext* pAppWidgetContext = this->Find(appId, instanceId);
627 // SysTryReturnResult(NID_SHELL, pAppWidgetContext , E_SYSTEM, "[E_SYSTEM] pAppWidgetContext is null for (%ls) (%ls)", appId.GetPointer(), instanceId.GetPointer());
628 // SysTryReturnResult(NID_SHELL, pAppWidgetContext->GetAppWidgetPopup(), E_SYSTEM, "[E_SYSTEM] GetAppWidgetPopup() returns null for (%ls) (%ls)", appId.GetPointer(), instanceId.GetPointer());
630 // return pAppWidgetContext->GetAppWidgetPopup()->ReleaseSharedMem();
634 AppWidgetManagerService::_TaskHandlerThread::~_TaskHandlerThread(void)
640 AppWidgetManagerService::_TaskHandlerThread::OnUserEventReceivedN(RequestId reqId, IList* pArgs)
642 SysTryReturnVoidResult(NID_SHELL, pArgs != null, E_INVALID_STATE, "pArgs is null!.");
644 SysLog(NID_SHELL, "Enter.");
648 case LOCAL_EVENT_REQUEST_UPDATE:
650 _AppWidgetContext* pAppWidgetContext = dynamic_cast<_AppWidgetContext*>( pArgs->GetAt(0) );
651 SysTryReturnVoidResult(NID_SHELL, pAppWidgetContext != null, E_INVALID_STATE, "_AppWidget is null!.");
653 String* pArgument = dynamic_cast<String*>( pArgs->GetAt(1) );
654 SysTryReturnVoidResult(NID_SHELL, pArgument != null, E_INVALID_STATE, "pArgument is null!.");
656 pAppWidgetContext->OnUpdate(*pArgument);
665 SysAssertf(false, "never get here!");
668 SysLog(NID_SHELL, "Exit.");
671 } } } //namespace Tizen { namespace Shell { namespace App {