add exception handling code for abnormal app termination
[platform/framework/native/appwidget-service.git] / src / FShell_AppWidgetManagerService.cpp
index f892ab5..36a9940 100644 (file)
@@ -30,6 +30,7 @@
 #include <FSystem.h>
 #include <FBaseComparerT.h>
 #include <FApp_AppManagerImpl.h>
+#include <FSys_SettingInfoImpl.h>
 #include <FShell_AppWidgetManagerImpl.h>
 #include <FIo_IpcServer.h>
 #include <FBase_StringConverter.h>
@@ -71,6 +72,8 @@ AppWidgetManagerService::~AppWidgetManagerService(void)
        __pingTimer.Cancel();
 
        DeinitializeCoreDaemonEventReceiver();
+       _AppManagerImpl::GetInstance()->RemoveAppEventListener(*this);
+       _SettingInfoImpl::RemoveSettingEventListener(*this);
 
        IMapEnumeratorT<String, _AppContext*>* pMapEnum = __appContextList.GetMapEnumeratorN();
        if (pMapEnum != null)
@@ -147,6 +150,7 @@ AppWidgetManagerService::Construct(const char* pCoreDaemonId)
        InitializeCoreDaemonEventReceiver(pCoreDaemonId);
 
        SetSettingEventListener(*this);
+       _AppManagerImpl::GetInstance()->AddAppEventListener(*this);
 
        return E_SUCCESS;
 }
@@ -160,7 +164,7 @@ AppWidgetManagerService::SetSettingEventListener(Tizen::System::ISettingEventLis
 
        while (true)
        {
-               result r = SettingInfo::AddSettingEventListener(listener);
+               result r = _SettingInfoImpl::AddSettingEventListener(listener);
                if (r == E_SUCCESS)
                {
                        SysLog(NID_APP, "Succeeded to invoke AddSettingEventListener");
@@ -199,7 +203,7 @@ AppWidgetManagerService::OnAppWidgetServiceConnected(struct event_arg *arg, void
 }
 
 int
-AppWidgetManagerService::OnAppWidgetServiceCDisconnected(struct event_arg *arg, void* data)
+AppWidgetManagerService::OnAppWidgetServiceDisconnected(struct event_arg *arg, void* data)
 {
        SysLog(NID_SHELL, "Disconnected with master daemon");
     return 0;
@@ -250,6 +254,23 @@ AppWidgetManagerService::FindAppWidget(const AppId& appId, const String& instanc
 }
 
 void
+AppWidgetManagerService::OnApplicationLaunched(const AppId& appId, int pid)
+{
+
+}
+
+void
+AppWidgetManagerService::OnApplicationTerminated(const AppId& appId, int pid)
+{
+       _AppContext* pAppContext = null;
+       __appContextList.GetValue(appId, pAppContext);
+       if (pAppContext)
+       {
+               pAppContext->OnApplicationTerminated();
+       }
+}
+
+void
 AppWidgetManagerService::OnIpcClientConnected(const AppId& appId, int clientId)
 {
        SysLog(NID_SHELL, "appId(%ls)", appId.GetPointer());
@@ -560,7 +581,7 @@ AppWidgetManagerService::InitializeCoreDaemonEventReceiver(const char *pCoreDaem
     memset(&cbs, 0, sizeof(event_handler));
 
     cbs.connected = OnAppWidgetServiceConnected,
-    cbs.disconnected = OnAppWidgetServiceCDisconnected,
+    cbs.disconnected = OnAppWidgetServiceDisconnected,
     cbs.pause = OnAppWidgetBackgroundAll,
     cbs.resume = OnAppWidgetForegroundAll,
     cbs.lb_pause = OnAppWidgetBackground,