refactoring 2.2_release submit/tizen_2.2/20130814.090636 submit/tizen_2.2/20130814.102004
authorkyeongwoo.lee <kyeongwoo.lee@samsung.com>
Tue, 6 Aug 2013 07:29:47 +0000 (16:29 +0900)
committerkyeongwoo.lee <kyeongwoo.lee@samsung.com>
Wed, 7 Aug 2013 05:06:03 +0000 (14:06 +0900)
Change-Id: I5d696ad3c1b92d7bada3da0d37053870b0b83fb0

inc/FShell_AppContext.h
inc/FShell_AppWidgetContext.h
inc/FShell_AppWidgetManagerService.h
inc/FShell_AppWidgetManagerStub.h
inc/FShell_AppWidgetPopupContext.h
inc/FShell_AppWidgetRemoteBuffer.h
src/FShell_AppContext.cpp
src/FShell_AppWidgetContext.cpp
src/FShell_AppWidgetManagerService.cpp

index ed3ff78..d888b41 100644 (file)
@@ -30,6 +30,7 @@
 namespace Tizen { namespace Base  { namespace Collection
 {
 class HashMap;
+class IList;
 }}}
 
 namespace Tizen { namespace Shell  { namespace App
@@ -57,33 +58,47 @@ public:
        _AppContext(const Tizen::App::AppId& appId);
        ~_AppContext(void);
 
-       _AppWidgetContext* AddAppWidget(const Tizen::Base::String& userInfo, const Tizen::Base::String& providerId, const Tizen::Base::String& instanceId, int width, int height, int period, int priority);
-       result RemoveAppWidget(const Tizen::Base::String& instanceId, bool isTriggeredByViewer = true);
-       result RequestUpdate(const Tizen::Base::String& providerName, const Tizen::Base::String& argument) const;
-       result OnAppWidgetBackgroundAll(void) const;
-       result OnAppWidgetForegroundAll(void) const;
+       result AddAppWidget(const Tizen::Base::String& userInfo, const Tizen::Base::String& providerId, const Tizen::Base::String& instanceId, int width, int height, int period, int priority);
+       result UpdateAppWidget(const Tizen::Base::String& instanceId);
+       result DestroyAppWidget(const Tizen::Base::String& instanceId, bool isTriggeredByViewer = true);
+       result ResizeAppWidget(const Tizen::Base::String& instanceId, int width, int height);
 
+       result CreateAppWidgetPopup(const Tizen::Base::String& instanceId, double x, double y, int width, int height);
+       result DestroyAppWidgetPopup(const Tizen::Base::String& instanceId);
+
+       result OnAppWidgetBackground(const Tizen::Base::String& instanceId);
+       result OnAppWidgetForeground(const Tizen::Base::String& instanceId);
+       result OnAppWidgetBackgroundAll(void);
+       result OnAppWidgetForegroundAll(void);
+
+       result RequestUpdate(const Tizen::Base::String& providerName, const Tizen::Base::String& argument);
        result SendRequestToApp(const Tizen::App::AppId& providerAppId, const Tizen::Base::String& operation, Tizen::Base::Collection::HashMap* pArgs);
        result SendPendingEvent(void);
 
        void OnIpcConnected(int clientId);
        void OnIpcDisconnected(void);
-
-       Tizen::App::AppId GetAppId(void) const;
-       int GetClientId(void) const;
        _ConnectionState GetConnectionState(void) const;
        bool GetWaitingStatus(void) const;
+       Tizen::App::AppId GetAppId(void) const;
+       int GetClientId(void) const;
 
        _AppWidgetContext* FindAppWidget(const Tizen::Base::String& instanceId) const;
        int GetProviderCount(const Tizen::Base::String& appId) const;
 
+       result RequestUpdateInstance(const Tizen::Base::String& instanceId, const Tizen::Base::String& argument);
+       result AcquireRemoteBuffer(const Tizen::Base::String& instanceId, int width, int height, int& bufferId);
+       result AcquireRemoteBufferForPD(const Tizen::Base::String& instanceId, int width, int height, int& bufferId);
+       result SyncRemoteBuffer(const Tizen::Base::String& instanceId, int width, int height);
+       result SyncRemoteBufferForPD(const Tizen::Base::String& instanceId);
+       result SendAccessStatus(const Tizen::Base::String& instanceId, int accessStatus);
+       void HandleUserEvent(Tizen::Base::Collection::IList* pArgs);
+
 private:
        void SetConnectionState(_ConnectionState state);
        void SetWaitingStatus(bool status);
        _AppWidgetContext* FindInvalidAppWidget(void) const;
 
 private:
-
        struct PendingEvent
        {
                PendingEvent(const Tizen::Base::String& operation, Tizen::Base::Collection::HashMap* pHashMap)
@@ -101,7 +116,6 @@ private:
        Tizen::Base::Collection::ArrayListT<PendingEvent*>* __pPendingEventList;
 };
 
-
 }}} // Tizen::Shell::App
 
 #endif // _FSHELL_INTERNAL_APP_CONTEXT_H_
index bbadc5b..49a2d48 100644 (file)
@@ -73,9 +73,10 @@ public:
        // handle dynamic box
        void OnAdded(void);
        void OnUpdate(const Tizen::Base::String& argument);
-       result OnUpdateAsync(const Tizen::Base::String& argument);
+       result OnUpdateAsync(_AppContext* pAppContext, const Tizen::Base::String& argument);
        void OnResize(int width, int height);
        result OnRemoved(bool isTriggeredByViewer = true);
+
        // dynamic box state
        void OnForeground(void);
        void OnBackground(void);
@@ -88,6 +89,8 @@ public:
        // handle drop view
        void OnPopupCreated(double x, double y, int width, int height);
        void OnPopupDestoyed(void);
+       int AcquireRemoteBufferForPD(int w, int h) const;
+       result SyncRemoteBufferForPD(void) const;
        _AppWidgetPopupContext* GetAppWidgetPopup(void) const;
        Tizen::Base::Collection::HashMap* CreateRequestArgsN(void) const;
 
@@ -103,11 +106,6 @@ public:
        int GetHeight(void) const;
        int GetPriority(void) const;
 
-//     void SetUserInfo(const Tizen::Base::String& userInfo);
-//     void SetProviderId(const Tizen::Base::String& providerId);
-//     void SetInstanceId(const Tizen::Base::String& instanceId);
-//     void SetPriority(int priority);
-
 private:
        result SendAddRequest(int width, int height) const;
        result SendUpdateRequest(int width, int height, const Tizen::Base::String& argument) const;
@@ -165,7 +163,6 @@ private:
        Tizen::Base::Collection::ArrayListT<PendingTouchEvent*>* __pPendingTouchEventList;
 };     // class _AppWidgetContext
 
-
 static const RequestId LOCAL_EVENT_REQUEST_UPDATE = 0;
 
 }}} // Tizen::Shell::App
index c6db66e..be4f5ca 100644 (file)
@@ -38,6 +38,8 @@ class IList;
 
 namespace Tizen { namespace Shell  { namespace App {
 
+class _AppContext;
+
 /**
  * @class      AppWidgetManagerService
  * @brief      The AppWidgetManagerService class handles request from viewer and provider applications, and manages context of connected application.
@@ -50,7 +52,7 @@ class AppWidgetManagerService
 public:
        static AppWidgetManagerService* GetInstance(void);
        static AppWidgetManagerService* CreateInstance(const char* pServiceIdForCoreDaemon);
-       _AppWidgetContext* AddAppWidget(const Tizen::Base::String& userInfo, const Tizen::Base::String& appId, const Tizen::Base::String& instanceId, int width, int height, int period, int priority);
+       result AddAppWidget(const Tizen::Base::String& userInfo, const Tizen::Base::String& appId, const Tizen::Base::String& instanceId, int width, int height, int period, int priority);
        result RequestUpdate(_AppWidgetContext* pAppWidgetContext, const Tizen::Base::String& argument) const;
        void OnUserEventReceivedN(RequestId reqId, Tizen::Base::Collection::IList* pArgs);
 
@@ -71,9 +73,9 @@ private:
        static int OnAppWidgetPopupCreate(struct event_arg *arg, void* data);
        static int OnAppWidgetPopupDestroy(struct event_arg *arg, void* data);
        static int OnAppWidgetBackground(struct event_arg *arg, void* data);
-       static int OnAppWidgetForeground(struct event_arg *pArg, void* pData);
+       static int OnAppWidgetForeground(struct event_arg *arg, void* data);
        static int OnAppWidgetBackgroundAll(struct event_arg *arg, void* data);
-       static int OnAppWidgetForegroundAll(struct event_arg *pArg, void* pData);
+       static int OnAppWidgetForegroundAll(struct event_arg *arg, void* data);
        static int OnAppWidgetClick(struct event_arg *arg, void* data);
        static int OnAppWidgetResize(struct event_arg *arg, void* data);
        static int OnAppWidgetPeriodChanged(struct event_arg *arg, void* data);
@@ -104,13 +106,13 @@ private:
        virtual void OnSettingChanged(Tizen::Base::String &     key);
 
        // helpers
+       _AppContext* FindAppContext(const Tizen::App::AppId& appId) const;
        _AppWidgetContext* FindAppWidget(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId) const;
        void StartPingTimer(void);
        virtual void OnTimerExpired(Tizen::Base::Runtime::Timer& timer);
        result RequestUpdateAllSuspened(void) const;
 
 private:
-
        static AppWidgetManagerService* __pTheInstance;
        Tizen::Base::Collection::HashMapT<Tizen::Base::String, _AppContext*> __appContextList;
        Tizen::Base::Runtime::Timer __pingTimer;
@@ -121,7 +123,7 @@ class _AppWidgetHelper
 public:
        static Tizen::App::AppId ExtractAppId(const Tizen::Base::String& providerId);
        static Tizen::Base::String ExtractProviderName(const Tizen::Base::String& providerId);
-}; //AppWidgetHelper
+}; // class AppWidgetHelper
 
 }}} // Tizen::Shell::App
 
index 5523a45..fcd4000 100644 (file)
@@ -91,7 +91,6 @@ private:
        _AppWidgetManagerStub(const _AppWidgetManagerStub& value);
        _AppWidgetManagerStub& operator =(const _AppWidgetManagerStub& source);
 
-
 protected:
        Tizen::Io::_IpcServer *__pIpcServer;
 
index a013cec..7f981e8 100644 (file)
@@ -34,7 +34,7 @@ class HashMap;
 namespace Tizen { namespace Shell { namespace App
 {
 
-class _AppWidgetPopupContext;
+class _AppWidgetContext;
 
 /**
  * @class      _AppWidgetContext
index 749596d..3802ac1 100644 (file)
@@ -30,7 +30,6 @@
 namespace Tizen { namespace Shell  { namespace App
 {
 
-
 class _IAppWidgetRemoteBufferEventListener
        : virtual public Tizen::Base::Runtime::IEventListener
 {
@@ -42,7 +41,7 @@ public:
 };
 
 /**
- * @class      _AppWidgetContext
+ * @class      _AppWidgetRemoteBuffer
  * @brief      This class wraps provider_buffer_xxx of libprovider.
  */
 class _AppWidgetRemoteBuffer
index 5948eaa..19d3ad0 100644 (file)
@@ -78,24 +78,57 @@ _AppContext::~_AppContext(void)
        }
 }
 
-_AppWidgetContext*
+result
 _AppContext::AddAppWidget(const Tizen::Base::String& userInfo, const Tizen::Base::String& providerId, const Tizen::Base::String& instanceId, int width, int height, int period, int priority)
 {
        _AppWidgetContext* pAppWidgetContext = new (std::nothrow)_AppWidgetContext(this, instanceId, providerId, width, height, userInfo, period, priority);
-       SysTryReturn(NID_SHELL, pAppWidgetContext, 0, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY]");
+       SysTryReturnResult(NID_SHELL, pAppWidgetContext, E_OUT_OF_MEMORY, "");
 
        __appWidgetContextList.Add(pAppWidgetContext->GetInstanceId(), pAppWidgetContext);
        pAppWidgetContext->OnAdded();
 
        SysSecureLog(NID_SHELL, "%ls, %ls, count(%d)", pAppWidgetContext->GetProviderId().GetPointer(), pAppWidgetContext->GetInstanceId().GetPointer(), __appWidgetContextList.GetCount());
-       return pAppWidgetContext;
+       return E_SUCCESS;
 }
 
 result
-_AppContext::RemoveAppWidget(const Tizen::Base::String& instanceId, bool isTriggeredByViewer)
+_AppContext::UpdateAppWidget(const Tizen::Base::String& instanceId)
 {
        _AppWidgetContext* pAppWidgetContext = FindAppWidget(instanceId);
-       SysTryReturnResult(NID_SHELL, pAppWidgetContext, E_OBJ_NOT_FOUND, "[E_OBJ_NOT_FOUND]");
+       SysTryReturnResult(NID_SHELL, pAppWidgetContext, E_OBJ_NOT_FOUND, "Failed to find _AppWidgetContext.");
+
+       pAppWidgetContext->OnUpdate(L"");
+
+       return E_SUCCESS;
+}
+
+result
+_AppContext::ResizeAppWidget(const Tizen::Base::String& instanceId, int width, int height)
+{
+       _AppWidgetContext* pAppWidgetContext = FindAppWidget(instanceId);
+       SysTryReturnResult(NID_SHELL, pAppWidgetContext, E_OBJ_NOT_FOUND, "Failed to find _AppWidgetContext.");
+
+       pAppWidgetContext->OnResize(width, height);
+
+       return E_SUCCESS;
+}
+
+result
+_AppContext::CreateAppWidgetPopup(const Tizen::Base::String& instanceId, double x, double y, int width, int height)
+{
+       _AppWidgetContext* pAppWidgetContext = FindAppWidget(instanceId);
+       SysTryReturnResult(NID_SHELL, pAppWidgetContext, E_OBJ_NOT_FOUND, "Failed to find _AppWidgetContext.");
+
+       pAppWidgetContext->OnPopupCreated(x, y, width, height);
+
+       return E_SUCCESS;
+}
+
+result
+_AppContext::DestroyAppWidget(const Tizen::Base::String& instanceId, bool isTriggeredByViewer)
+{
+       _AppWidgetContext* pAppWidgetContext = FindAppWidget(instanceId);
+       SysTryReturnResult(NID_SHELL, pAppWidgetContext, E_OBJ_NOT_FOUND, "Failed to find _AppWidgetContext.");
 
        __appWidgetContextList.Remove(instanceId);
 
@@ -104,7 +137,18 @@ _AppContext::RemoveAppWidget(const Tizen::Base::String& instanceId, bool isTrigg
 
        delete pAppWidgetContext;
 
-    SysLog(NID_SHELL, "AppWidget(%ls, %ls) is removed. remain count(%d)", pAppWidgetContext->GetProviderId().GetPointer(), instanceId.GetPointer(), __appWidgetContextList.GetCount());
+    SysLog(NID_SHELL, "AppWidget(%ls) is removed. remain count(%d)", instanceId.GetPointer(), __appWidgetContextList.GetCount());
+       return E_SUCCESS;
+}
+
+result
+_AppContext::DestroyAppWidgetPopup(const Tizen::Base::String& instanceId)
+{
+       _AppWidgetContext* pAppWidgetContext = FindAppWidget(instanceId);
+       SysTryReturnResult(NID_SHELL, pAppWidgetContext, E_OBJ_NOT_FOUND, "Failed to find _AppWidgetContext.");
+
+       pAppWidgetContext->OnPopupDestoyed();
+
        return E_SUCCESS;
 }
 
@@ -224,6 +268,64 @@ _AppContext::SendPendingEvent(void)
        return E_SUCCESS;
 }
 
+result
+_AppContext::RequestUpdateInstance(const Tizen::Base::String& instanceId, const Tizen::Base::String& argument)
+{
+       _AppWidgetContext* pAppWidgetContext = FindAppWidget(instanceId);
+       SysTryReturnResult(NID_SHELL, pAppWidgetContext, E_OBJ_NOT_FOUND, "Failed to find _AppWidgetContext.");
+
+       return pAppWidgetContext->OnUpdateAsync(this, argument);
+}
+
+result
+_AppContext::AcquireRemoteBuffer(const Tizen::Base::String& instanceId, int width, int height, int& bufferId)
+{
+       _AppWidgetContext* pAppWidgetContext = FindAppWidget(instanceId);
+       SysTryReturnResult(NID_SHELL, pAppWidgetContext, E_OBJ_NOT_FOUND, "Failed to find _AppWidgetContext.");
+
+       bufferId = pAppWidgetContext->AcquireRemoteBuffer(width, height);
+
+       return E_SUCCESS;
+}
+
+result
+_AppContext::AcquireRemoteBufferForPD(const Tizen::Base::String& instanceId, int width, int height, int& bufferId)
+{
+       _AppWidgetContext* pAppWidgetContext = FindAppWidget(instanceId);
+       SysTryReturnResult(NID_SHELL, pAppWidgetContext, E_OBJ_NOT_FOUND, "Failed to find _AppWidgetContext.");
+
+       bufferId = pAppWidgetContext->AcquireRemoteBufferForPD(width, height);
+
+       return E_SUCCESS;
+}
+
+result
+_AppContext::SyncRemoteBuffer(const Tizen::Base::String& instanceId, int width, int height)
+{
+       _AppWidgetContext* pAppWidgetContext = FindAppWidget(instanceId);
+       SysTryReturnResult(NID_SHELL, pAppWidgetContext, E_OBJ_NOT_FOUND, "Failed to find _AppWidgetContext.");
+
+       return pAppWidgetContext->SyncRemoteBuffer(width, height);
+}
+
+result
+_AppContext::SyncRemoteBufferForPD(const Tizen::Base::String& instanceId)
+{
+       _AppWidgetContext* pAppWidgetContext = FindAppWidget(instanceId);
+       SysTryReturnResult(NID_SHELL, pAppWidgetContext, E_OBJ_NOT_FOUND, "Failed to find _AppWidgetContext.");
+
+       return pAppWidgetContext->SyncRemoteBufferForPD();
+}
+
+result
+_AppContext::SendAccessStatus(const Tizen::Base::String& instanceId, int accessStatus)
+{
+       _AppWidgetContext* pAppWidgetContext = FindAppWidget(instanceId);
+       SysTryReturnResult(NID_SHELL, pAppWidgetContext, E_OBJ_NOT_FOUND, "Failed to find _AppWidgetContext.");
+
+       return pAppWidgetContext->SendAccessStatus(accessStatus);
+}
+
 _AppWidgetContext*
 _AppContext::FindAppWidget(const String& instanceId) const
 {
@@ -269,7 +371,7 @@ _AppContext::GetProviderCount(const String& appId) const
 }
 
 result
-_AppContext::RequestUpdate(const Tizen::Base::String& providerName, const Tizen::Base::String& argument) const
+_AppContext::RequestUpdate(const Tizen::Base::String& providerName, const Tizen::Base::String& argument)
 {
        bool found = false;
        bool requestToAll = providerName.IsEmpty();
@@ -284,7 +386,7 @@ _AppContext::RequestUpdate(const Tizen::Base::String& providerName, const Tizen:
 
                if (pAppWidgetContext->GetProviderName() == providerName || requestToAll == true)
                {
-                       pAppWidgetContext->OnUpdateAsync(argument);
+                       pAppWidgetContext->OnUpdateAsync(this, argument);
                        found = true;
                }
        }
@@ -294,7 +396,18 @@ _AppContext::RequestUpdate(const Tizen::Base::String& providerName, const Tizen:
 }
 
 result
-_AppContext::OnAppWidgetBackgroundAll(void) const
+_AppContext::OnAppWidgetBackground(const Tizen::Base::String& instanceId)
+{
+       _AppWidgetContext* pAppWidgetContext = FindAppWidget(instanceId);
+       SysTryReturnResult(NID_SHELL, pAppWidgetContext, E_OBJ_NOT_FOUND, "Failed to find _AppWidgetContext.");
+
+       pAppWidgetContext->OnBackground();
+
+       return E_SUCCESS;
+}
+
+result
+_AppContext::OnAppWidgetBackgroundAll(void)
 {
        unique_ptr< IMapEnumeratorT<String, _AppWidgetContext*> > pAppWidgetContextEnum(__appWidgetContextList.GetMapEnumeratorN());
        SysTryReturnResult(NID_SHELL, pAppWidgetContextEnum, E_SYSTEM, "Failed to invoke GetMapEnumeratorN()");
@@ -313,7 +426,18 @@ _AppContext::OnAppWidgetBackgroundAll(void) const
 }
 
 result
-_AppContext::OnAppWidgetForegroundAll(void) const
+_AppContext::OnAppWidgetForeground(const Tizen::Base::String& instanceId)
+{
+       _AppWidgetContext* pAppWidgetContext = FindAppWidget(instanceId);
+       SysTryReturnResult(NID_SHELL, pAppWidgetContext, E_OBJ_NOT_FOUND, "Failed to find _AppWidgetContext.");
+
+       pAppWidgetContext->OnForeground();
+
+       return E_SUCCESS;
+}
+
+result
+_AppContext::OnAppWidgetForegroundAll(void)
 {
        unique_ptr< IMapEnumeratorT<String, _AppWidgetContext*> > pAppWidgetContextEnum(__appWidgetContextList.GetMapEnumeratorN());
        SysTryReturnResult(NID_SHELL, pAppWidgetContextEnum, E_SYSTEM, "Failed to invoke GetMapEnumeratorN()");
@@ -331,4 +455,16 @@ _AppContext::OnAppWidgetForegroundAll(void) const
        return E_SUCCESS;
 }
 
+void
+_AppContext::HandleUserEvent(Tizen::Base::Collection::IList* pArgs)
+{
+       _AppWidgetContext* pAppWidgetContext = dynamic_cast<_AppWidgetContext*>( pArgs->GetAt(1) );
+       SysTryReturnVoidResult(NID_SHELL, pAppWidgetContext != null, E_INVALID_STATE, "_AppWidget is null!.");
+
+       String* pArgument = dynamic_cast<String*>( pArgs->GetAt(2) );
+       SysTryReturnVoidResult(NID_SHELL, pArgument != null, E_INVALID_STATE, "pArgument is null!.");
+
+       pAppWidgetContext->OnUpdate(*pArgument);
+}
+
 }}}  // Tizen::Shell::App
index 23baf02..750eb47 100644 (file)
@@ -205,12 +205,13 @@ _AppWidgetContext::OnUpdate(const String& argument)
 }
 
 result
-_AppWidgetContext::OnUpdateAsync(const String& argument)
+_AppWidgetContext::OnUpdateAsync(_AppContext* pAppContext, const String& argument)
 {
        ArrayList* pArray = new (std::nothrow) ArrayList();
        SysTryReturnResult(NID_SHELL, pArray, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY]");
 
        pArray->Construct();
+       pArray->Add(pAppContext);
        pArray->Add(this);
        pArray->Add(new String(argument));
 
@@ -245,17 +246,15 @@ _AppWidgetContext::OnForeground(void)
 
        if (__hasPendingRequest == true)
        {
-               SysLog(NID_SHELL, "There is pending update request.");
-//             OnUpdateAsync(__pendingArgument);
-               OnUpdate(__pendingArgument);
+               SysLog(NID_SHELL, "There is pending request.");
+               OnUpdateAsync(__pAppContext, __pendingArgument);
        }
        else
        {
                if (IsUpdatePeriodExpired() == true)
                {
                        SysLog(NID_SHELL, "The period is expired.");
-//                     OnUpdateAsync(L"");
-                       OnUpdate(L"");
+                       OnUpdateAsync(__pAppContext, L"");
                }
        }
 }
@@ -404,6 +403,15 @@ _AppWidgetContext::SyncRemoteBuffer(int width, int height)
 }
 
 result
+_AppWidgetContext::SyncRemoteBufferForPD(void) const
+{
+       _AppWidgetPopupContext* pPopupContext = GetAppWidgetPopup();
+       SysSecureTryReturnResult(NID_SHELL, pPopupContext , E_SYSTEM, "pPopupContext is null for (%ls)", GetProviderId().GetPointer());
+
+       return pPopupContext->SyncRemoteBuffer();
+}
+
+result
 _AppWidgetContext::SendAccessStatus(int accessStatus) const
 {
        std::unique_ptr<char[]> providerId(_StringConverter::CopyToCharArrayN(GetProviderId()));
@@ -565,4 +573,16 @@ _AppWidgetContext::AcquireRemoteBuffer(int w, int h) const
        return id;
 }
 
+int
+_AppWidgetContext::AcquireRemoteBufferForPD(int w, int h) const
+{
+       _AppWidgetPopupContext* pPopupContext = GetAppWidgetPopup();
+       SysSecureTryReturnResult(NID_SHELL, pPopupContext , E_SYSTEM, "pPopupContext is null for (%ls)", GetProviderId().GetPointer());
+
+       int bufferId = pPopupContext->AcquireRemoteBuffer(w, h);
+       SysSecureTryReturnResult(NID_SHELL, bufferId != -1, E_SYSTEM, "Failed to AcquireRemoteBuffer for (%ls)", GetProviderId().GetPointer());
+
+       return bufferId;
+}
+
 }}}  // Tizen::Shell::App
index 6ea0997..0b1a999 100644 (file)
@@ -34,7 +34,7 @@
 #include <FIo_IpcServer.h>
 #include <FBase_StringConverter.h>
 
-#include "FShell_AppWidgetContext.h"
+#include "FShell_AppContext.h"
 #include "FShell_AppWidgetPopupContext.h"
 #include "FShell_AppWidgetManagerService.h"
 #include "FShell_TemplateUtil.h"
@@ -154,6 +154,16 @@ AppWidgetManagerService::OnTimerExpired(Timer& timer)
        provider_send_ping();
 }
 
+_AppContext*
+AppWidgetManagerService::FindAppContext(const Tizen::App::AppId& appId) const
+{
+    _AppContext* pAppContext = null;
+       result r = __appContextList.GetValue(appId, pAppContext);
+       SysTryReturn(NID_SHELL, !IsFailed(r), null, E_OBJ_NOT_FOUND, "[E_OBJ_NOT_FOUND]");
+
+       return pAppContext;
+}
+
 _AppWidgetContext*
 AppWidgetManagerService::FindAppWidget(const AppId& appId, const String& instanceId) const
 {
@@ -210,7 +220,7 @@ AppWidgetManagerService::OnSettingChanged(Tizen::Base::String& key)
        }
 }
 
-_AppWidgetContext*
+result
 AppWidgetManagerService::AddAppWidget(const Tizen::Base::String& userInfo, const Tizen::Base::String& providerId, const Tizen::Base::String& instanceId, int width, int height, int period, int priority)
 {
        AppId appId;
@@ -223,7 +233,7 @@ AppWidgetManagerService::AddAppWidget(const Tizen::Base::String& userInfo, const
        if( containsKey == false)
        {
                pAppContext = new(std::nothrow) _AppContext(appId);
-               SysTryReturn(NID_SHELL, pAppContext, 0, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY]");
+               SysTryReturnResult(NID_SHELL, pAppContext, E_OUT_OF_MEMORY, "");
                __appContextList.Add(appId, pAppContext);
        }
        else
@@ -240,21 +250,17 @@ AppWidgetManagerService::AddAppWidget(const Tizen::Base::String& userInfo, const
 int
 AppWidgetManagerService::OnAppWidgetCreate(struct event_arg *arg, int *width, int *height, double *priority, void* data)
 {
-       SysTryReturn(NID_SHELL, arg != null, EINVAL, E_INVALID_ARG, "[E_INVALID_ARG]");
-       SysTryReturn(NID_SHELL, arg->pkgname != null, EINVAL, E_INVALID_ARG, "[E_INVALID_ARG]");
-       SysTryReturn(NID_SHELL, arg->id != null, EINVAL, E_INVALID_ARG, "[E_INVALID_ARG]");
-       SysTryReturn(NID_SHELL, arg->type == event_arg::EVENT_NEW, -EPERM, E_SUCCESS, "invalid argument from master");
+       SysAssertf(arg != null && arg->pkgname != null && arg->id != null && arg->type == event_arg::EVENT_NEW, "The status of data-provider-master is invalid.");
 
        SysSecureLog(NID_SHELL, "providerId(%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);
-       AppWidgetManagerService* pAppWidgetService = AppWidgetManagerService::GetInstance();
-//     SysTryReturn (NID_SHELL, pAppWidgetService->FindAppWidget(ExtractAppId(arg->pkgname), arg->id) == null, -EBUSY, E_SUCCESS,"already exist");
 
        const double default_priority = 1.0f;
-       _AppWidgetContext* pAppWidgetContext = pAppWidgetService->AddAppWidget(arg->info.lb_create.content, arg->pkgname, arg->id, arg->info.lb_create.width, arg->info.lb_create.height, arg->info.lb_create.period * 1000, default_priority);
+       result r = AppWidgetManagerService::GetInstance()->AddAppWidget(arg->info.lb_create.content, arg->pkgname, arg->id, arg->info.lb_create.width, arg->info.lb_create.height, arg->info.lb_create.period * 1000, default_priority);
+       SysTryReturn(NID_SHELL, !IsFailed(r), -1, r, "[%s] Failed to execute AddAppWidget.", GetErrorMessage(r));
 
-       *priority = pAppWidgetContext->GetPriority();
-       *height= pAppWidgetContext->GetHeight();
-       *width = pAppWidgetContext->GetWidth();
+       *priority = default_priority;
+       *height= arg->info.lb_create.height;
+       *width = arg->info.lb_create.width;
 
     return 0;
 }
@@ -262,6 +268,8 @@ AppWidgetManagerService::OnAppWidgetCreate(struct event_arg *arg, int *width, in
 int
 AppWidgetManagerService::OnAppWidgetUpdate(struct event_arg *arg, void* data)
 {
+       SysAssertf(arg != null && arg->type == event_arg::EVENT_UPDATE_CONTENT, "The status of data-provider-master is invalid.");
+
        bool isInstanceIdSpecified = (arg->id == null || strlen(arg->id) < 1) ? false : true;
        if (isInstanceIdSpecified == false)
        {
@@ -273,10 +281,11 @@ AppWidgetManagerService::OnAppWidgetUpdate(struct event_arg *arg, void* data)
        }
        else
        {
-               _AppWidgetContext* pAppWidgetContext = AppWidgetManagerService::GetInstance()->FindAppWidget(_AppWidgetHelper::ExtractAppId(arg->pkgname), arg->id);
-               SysSecureTryReturnResult(NID_SHELL, pAppWidgetContext , E_SYSTEM, "pAppWidgetContext is null for providerId(%s), instanceId(%s)", arg->pkgname, arg->id);
+               _AppContext* pAppContext = AppWidgetManagerService::GetInstance()->FindAppContext(_AppWidgetHelper::ExtractAppId(arg->pkgname));
+               SysTryReturn(NID_SHELL, pAppContext != null, -1, E_OBJ_NOT_FOUND, "Failed to find _AppContext.");
 
-               pAppWidgetContext->OnUpdate(L"");
+               result r = pAppContext->UpdateAppWidget(arg->id);
+               SysTryReturn(NID_SHELL, !IsFailed(r), -1, E_OBJ_NOT_FOUND, "Failed to update _AppContext.");
        }
 
        return 0;
@@ -285,63 +294,66 @@ AppWidgetManagerService::OnAppWidgetUpdate(struct event_arg *arg, void* data)
 int
 AppWidgetManagerService::OnAppWidgetDestroy(struct event_arg *arg, void* data)
 {
-       SysTryReturn (NID_SHELL, arg->type == event_arg::EVENT_DELETE, -EPERM, E_SUCCESS, "invalid argument from master");
-       SysLog(NID_SHELL, "Enter");
+       SysAssertf(arg != null && arg->type == event_arg::EVENT_DELETE, "The status of data-provider-master is invalid.");
 
-    _AppContext* pAppContext = null;
-       result r = AppWidgetManagerService::GetInstance()->__appContextList.GetValue(_AppWidgetHelper::ExtractAppId(arg->pkgname), pAppContext);
-       SysTryReturn(NID_SHELL, !IsFailed(r), null, E_OBJ_NOT_FOUND, "[E_OBJ_NOT_FOUND]");
+       _AppContext* pAppContext = AppWidgetManagerService::GetInstance()->FindAppContext(_AppWidgetHelper::ExtractAppId(arg->pkgname));
+       SysTryReturn(NID_SHELL, pAppContext != null, -1, E_OBJ_NOT_FOUND, "[E_OBJ_NOT_FOUND] Failed to find _AppContext.");
 
-       pAppContext->RemoveAppWidget(arg->id);
+       pAppContext->DestroyAppWidget(arg->id);
 
-    SysLog(NID_SHELL, "Exit");
-    return 0;
+       return 0;
 }
 
 int
 AppWidgetManagerService::OnAppWidgetPopupCreate(struct event_arg *arg, void* data)
 {
-       SysTryReturn (NID_SHELL, arg->type == event_arg::EVENT_PD_CREATE, -EPERM, E_SUCCESS, "invalid argument from master");
+       SysAssertf(arg != null && arg->type == event_arg::EVENT_PD_CREATE, "The status of data-provider-master is invalid.");
+
        SysSecureLog(NID_SHELL, "providerId(%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);
 
-       _AppWidgetContext* pAppWidgetContext = AppWidgetManagerService::GetInstance()->FindAppWidget(_AppWidgetHelper::ExtractAppId(arg->pkgname), arg->id);
-       SysSecureTryReturnResult(NID_SHELL, pAppWidgetContext , E_SYSTEM, "[E_SYSTEM] pAppWidgetContext is null for providerId(%s), instanceId(%s)", arg->pkgname, arg->id);
+       _AppContext* pAppContext = AppWidgetManagerService::GetInstance()->FindAppContext(_AppWidgetHelper::ExtractAppId(arg->pkgname));
+       SysTryReturn(NID_SHELL, pAppContext != null, -1, E_OBJ_NOT_FOUND, "[E_OBJ_NOT_FOUND] Failed to find _AppContext.");
 
-       pAppWidgetContext->OnPopupCreated(arg->info.pd_create.x, arg->info.pd_create.y, arg->info.pd_create.w, arg->info.pd_create.h);
+       pAppContext->CreateAppWidgetPopup(arg->id, arg->info.pd_create.x, arg->info.pd_create.y, arg->info.pd_create.w, arg->info.pd_create.h);
 
-    return 0;
+       return 0;
 }
 
- int
- AppWidgetManagerService::OnAppWidgetPopupDestroy(struct event_arg *arg, void* data)
+int
+AppWidgetManagerService::OnAppWidgetPopupDestroy(struct event_arg *arg, void* data)
 {
-       SysTryReturn (NID_SHELL, arg->type == event_arg::EVENT_PD_DESTROY, -EPERM, E_SUCCESS, "invalid argument from master");
-       _AppWidgetContext* pAppWidgetContext = AppWidgetManagerService::GetInstance()->FindAppWidget(_AppWidgetHelper::ExtractAppId(arg->pkgname), arg->id);
-       SysSecureTryReturnResult(NID_SHELL, pAppWidgetContext , E_SYSTEM, "[E_SYSTEM] pAppWidgetContext is null for providerId(%s), instanceId(%s)", arg->pkgname, arg->id);
+       SysAssertf(arg != null && arg->type == event_arg::EVENT_PD_DESTROY, "The status of data-provider-master is invalid.");
 
        SysSecureLog(NID_SHELL, "providerId(%s), id(%s)", arg->pkgname, arg->id);
-       pAppWidgetContext->OnPopupDestoyed();
 
-    return 0;
+       _AppContext* pAppContext = AppWidgetManagerService::GetInstance()->FindAppContext(_AppWidgetHelper::ExtractAppId(arg->pkgname));
+       SysTryReturn(NID_SHELL, pAppContext != null, -1, E_OBJ_NOT_FOUND, "[E_OBJ_NOT_FOUND] Failed to find _AppContext.");
+
+       pAppContext->DestroyAppWidgetPopup(arg->id);
+
+       return 0;
 }
 
 int
 AppWidgetManagerService::OnAppWidgetBackground(struct event_arg *arg, void* data)
 {
-        SysTryReturn(NID_SHELL, arg, 0, E_SUCCESS, "arg is null!");
+       SysAssertf(arg != null && arg->type == event_arg::EVENT_LB_PAUSE, "The status of data-provider-master is invalid.");
 
-        _AppWidgetContext* pAppWidgetContext = AppWidgetManagerService::GetInstance()->FindAppWidget(_AppWidgetHelper::ExtractAppId(arg->pkgname), arg->id);
-        SysSecureTryReturnResult(NID_SHELL, pAppWidgetContext , 0, "[E_SYSTEM] pAppWidgetContext is null for providerId(%s), instanceId(%s)", arg->pkgname, arg->id);
+       SysSecureLog(NID_SHELL, "providerId(%s), id(%s)", arg->pkgname, arg->id);
 
-        SysSecureLog(NID_SHELL, "providerId(%s), id(%s)", arg->pkgname, arg->id);
-        pAppWidgetContext->OnBackground();
+       _AppContext* pAppContext = AppWidgetManagerService::GetInstance()->FindAppContext(_AppWidgetHelper::ExtractAppId(arg->pkgname));
+       SysTryReturn(NID_SHELL, pAppContext != null, -1, E_OBJ_NOT_FOUND, "[E_OBJ_NOT_FOUND] Failed to find _AppContext.");
 
-    return 0;
+       pAppContext->OnAppWidgetBackground(arg->id);
+
+       return 0;
 }
 
 int
 AppWidgetManagerService::OnAppWidgetBackgroundAll(struct event_arg *arg, void* data)
 {
+       SysAssertf(arg != null && arg->type == event_arg::EVENT_PAUSE, "The status of data-provider-master is invalid.");
+
        unique_ptr< IMapEnumeratorT<String, _AppContext*> > pAppContextEnum(AppWidgetManagerService::GetInstance()->__appContextList.GetMapEnumeratorN());
        SysTryReturnResult(NID_SHELL, pAppContextEnum, E_SYSTEM, "Failed to invoke __appContextList.GetMapEnumeratorN()");
 
@@ -360,22 +372,26 @@ AppWidgetManagerService::OnAppWidgetBackgroundAll(struct event_arg *arg, void* d
 }
 
 int
-AppWidgetManagerService::OnAppWidgetForeground(struct event_arg *pArg, void* pData)
+AppWidgetManagerService::OnAppWidgetForeground(struct event_arg *arg, void* data)
 {
-       SysTryReturn(NID_SHELL, pArg || pArg->id || pArg->pkgname, 0, E_SUCCESS, "pArg is null!");
-       SysSecureLog(NID_SHELL, "providerId(%s), id(%s)", pArg->pkgname, pArg->id);
+       SysAssertf(arg != null && arg->type == event_arg::EVENT_LB_RESUME, "The status of data-provider-master is invalid.");
 
-       _AppWidgetContext* pAppWidgetContext = AppWidgetManagerService::GetInstance()->FindAppWidget(_AppWidgetHelper::ExtractAppId(pArg->pkgname), pArg->id);
-       SysSecureTryReturnResult(NID_SHELL, pAppWidgetContext , E_SYSTEM, "[E_SYSTEM] pAppWidgetContext is null for providerId(%s), instanceId(%s)", pArg->pkgname, pArg->id);
+       SysTryReturn(NID_SHELL, arg || arg->id || arg->pkgname, 0, E_SUCCESS, "arg is null!");
+       SysSecureLog(NID_SHELL, "providerId(%s), id(%s)", arg->pkgname, arg->id);
+
+       _AppContext* pAppContext = AppWidgetManagerService::GetInstance()->FindAppContext(_AppWidgetHelper::ExtractAppId(arg->pkgname));
+       SysTryReturn(NID_SHELL, pAppContext != null, -1, E_OBJ_NOT_FOUND, "[E_OBJ_NOT_FOUND] Failed to find _AppContext.");
 
-       pAppWidgetContext->OnForeground();
+       pAppContext->OnAppWidgetForeground(arg->id);
 
        return 0;
 }
 
 int
-AppWidgetManagerService::OnAppWidgetForegroundAll(struct event_arg *pArg, void* pData)
+AppWidgetManagerService::OnAppWidgetForegroundAll(struct event_arg *arg, void* data)
 {
+       SysAssertf(arg != null && arg->type == event_arg::EVENT_RESUME, "The status of data-provider-master is invalid.");
+
        unique_ptr< IMapEnumeratorT<String, _AppContext*> > pAppContextEnum(AppWidgetManagerService::GetInstance()->__appContextList.GetMapEnumeratorN());
        SysTryReturnResult(NID_SHELL, pAppContextEnum, E_SYSTEM, "Failed to invoke __appContextList.GetMapEnumeratorN()");
 
@@ -396,8 +412,8 @@ AppWidgetManagerService::OnAppWidgetForegroundAll(struct event_arg *pArg, void*
 int
 AppWidgetManagerService::OnAppWidgetClick(struct event_arg *arg, void* data)
 {
-       SysTryReturn (NID_SHELL, arg->type == event_arg::EVENT_CLICKED, -EPERM, E_SUCCESS, "invalid argument from master");
-       SysTryReturn(NID_SHELL, arg != null, -EPERM, E_SUCCESS, "arg is null!");
+       SysAssertf(arg != null && arg->type == event_arg::EVENT_CLICKED, "The status of data-provider-master is invalid.");
+
        SysSecureLog(NID_SHELL, "providerId(%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);
 
     return 0;
@@ -406,15 +422,14 @@ AppWidgetManagerService::OnAppWidgetClick(struct event_arg *arg, void* data)
 int
 AppWidgetManagerService::OnAppWidgetResize(struct event_arg *arg, void* data)
 {
-       SysTryReturn(NID_SHELL, arg || arg->id || arg->pkgname, 0, E_SUCCESS, "arg is null!");
-       SysTryReturn (NID_SHELL, arg->type == event_arg::EVENT_RESIZE, -EPERM, E_SUCCESS, "invalid argument from master");
+       SysAssertf(arg != null && arg->type == event_arg::EVENT_RESIZE, "The status of data-provider-master is invalid.");
 
        SysSecureLog(NID_SHELL, "providerId(%s), id(%s), resize.w(%d), resize.h(%d)", arg->pkgname, arg->id, arg->info.resize.w, arg->info.resize.h);
 
-       _AppWidgetContext* pAppWidgetContext = AppWidgetManagerService::GetInstance()->FindAppWidget(_AppWidgetHelper::ExtractAppId(arg->pkgname), arg->id);
-       SysSecureTryReturnResult(NID_SHELL, pAppWidgetContext , E_SYSTEM, "[E_SYSTEM] pAppWidgetContext is null for providerId(%s), instanceId(%s)", arg->pkgname, arg->id);
+       _AppContext* pAppContext = AppWidgetManagerService::GetInstance()->FindAppContext(_AppWidgetHelper::ExtractAppId(arg->pkgname));
+       SysTryReturn(NID_SHELL, pAppContext != null, -1, E_OBJ_NOT_FOUND, "[E_OBJ_NOT_FOUND] Failed to find _AppContext.");
 
-       pAppWidgetContext->OnResize(arg->info.resize.w, arg->info.resize.h);
+       pAppContext->ResizeAppWidget(arg->id, arg->info.resize.w, arg->info.resize.h);
 
     return 0;
 }
@@ -422,18 +437,17 @@ AppWidgetManagerService::OnAppWidgetResize(struct event_arg *arg, void* data)
 int
 AppWidgetManagerService::OnAppWidgetPeriodChanged(struct event_arg *arg, void* data)
 {
-       SysTryReturn(NID_SHELL, arg != null, 0, E_SUCCESS, "arg is null!");
+       SysAssertf(arg != null && arg->type == event_arg::EVENT_SET_PERIOD, "The status of data-provider-master is invalid.");
+
        SysSecureLog(NID_SHELL, "providerId(%s), id(%s), width(%d), height(%d), priority(%d)", arg->pkgname, arg->id);
+
     return 0;
 }
 
 int
 AppWidgetManagerService::OnAppWidgetRecreate(struct event_arg *arg, void* data)
 {
-       SysTryReturn(NID_SHELL, arg != null, EINVAL, E_INVALID_ARG, "[E_INVALID_ARG]");
-       SysTryReturn(NID_SHELL, arg->pkgname != null, EINVAL, E_INVALID_ARG, "[E_INVALID_ARG]");
-       SysTryReturn(NID_SHELL, arg->id != null, EINVAL, E_INVALID_ARG, "[E_INVALID_ARG]");
-       SysTryReturn(NID_SHELL, arg->type == event_arg::EVENT_RENEW, -EPERM, E_SUCCESS, "invalid argument from master");
+       SysAssertf(arg != null && arg->pkgname != null && arg->id != null && arg->type == event_arg::EVENT_RENEW, "The status of data-provider-master is invalid.");
 
        SysSecureLog(NID_SHELL, "providerId(%s) id(%s) content(%s) cluster(%s) category(%s)", arg->pkgname, arg->id, arg->info.lb_recreate.content, arg->info.lb_recreate.cluster, arg->info.lb_recreate.category);
 
@@ -441,8 +455,8 @@ AppWidgetManagerService::OnAppWidgetRecreate(struct event_arg *arg, void* data)
        SysTryReturn(NID_SHELL, pAppWidgetManagerService != null, -EBUSY, E_SYSTEM, "Failed to get the instance for AppWidgetManagerService.");
 
        const double default_priority = 1.0f;
-       _AppWidgetContext* pAppWidgetContext = pAppWidgetManagerService->AddAppWidget(arg->info.lb_create.content, arg->pkgname, arg->id, arg->info.lb_create.width, arg->info.lb_create.height, arg->info.lb_create.period * 1000, default_priority);
-       SysTryReturn(NID_SHELL, pAppWidgetContext != null, -EBUSY, E_SYSTEM, "Failed to add the appwidget.");
+       result r = pAppWidgetManagerService->AddAppWidget(arg->info.lb_create.content, arg->pkgname, arg->id, arg->info.lb_create.width, arg->info.lb_create.height, arg->info.lb_create.period * 1000, default_priority);
+       SysTryReturn(NID_SHELL, !IsFailed(r), -EBUSY, r, "[%s] Failed to execute AddAppWidget.", GetErrorMessage(r));
 
        return 0;
 }
@@ -489,8 +503,6 @@ AppWidgetManagerService::DeinitializeCoreDaemonEventReceiver(void)
 ///////////////////////////////////////////////////////
 // stub implementation
 ///////////////////////////////////////////////////////
-
-
 result
 AppWidgetManagerService::RequestUpdate(const Tizen::App::AppId& appId, const Tizen::Base::String& providerName, const Tizen::Base::String& argument) const
 {
@@ -516,7 +528,6 @@ AppWidgetManagerService::RequestUpdateAllSuspened(void) const
                {
                        pAppContext->RequestUpdate(L"", L"");
                }
-
        }
 
        SysLog(NID_SHELL, "Exit.");
@@ -528,21 +539,23 @@ AppWidgetManagerService::RequestUpdateInstance(const Tizen::App::AppId& appId, c
 {
        SysSecureLog(NID_SHELL, "%ls, %ls", instanceId.GetPointer(), argument.GetPointer() );
 
-       _AppWidgetContext* pAppWidgetContext = FindAppWidget(appId, instanceId);
-       SysTryReturnResult(NID_SHELL, pAppWidgetContext, E_OBJ_NOT_FOUND, "Failed to find the object(%ls).", instanceId.GetPointer());
+       _AppContext* pAppContext = AppWidgetManagerService::GetInstance()->FindAppContext(appId);
+       SysTryReturnResult(NID_SHELL, pAppContext != null, E_OBJ_NOT_FOUND, "Failed to find _AppContext.");
+
+       result r = pAppContext->RequestUpdateInstance(instanceId, argument);
+       SysTryReturnResult(NID_SHELL, !IsFailed(r), E_OBJ_NOT_FOUND, "Failed to execute RequestUpdateInstance.");
 
-       pAppWidgetContext->OnUpdateAsync(argument);
        return E_SUCCESS;
 }
 
 result
 AppWidgetManagerService::AcquireRemoteBuffer(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId, int width, int height, int& bufferId)
 {
-       _AppWidgetContext* pAppWidgetContext = this->FindAppWidget(appId, instanceId);
-       SysSecureTryReturnResult(NID_SHELL, pAppWidgetContext , E_SYSTEM, "[E_SYSTEM] pAppWidgetContext is null for (%ls) (%ls)", appId.GetPointer(), instanceId.GetPointer());
+       _AppContext* pAppContext = AppWidgetManagerService::GetInstance()->FindAppContext(appId);
+       SysTryReturnResult(NID_SHELL, pAppContext != null, E_OBJ_NOT_FOUND, "Failed to find _AppContext.");
 
-       bufferId = pAppWidgetContext->AcquireRemoteBuffer(width, height);
-       SysSecureTryReturnResult(NID_SHELL, pAppWidgetContext , bufferId != -1, "[E_SYSTEM] failed to AcquireRemoteBuffer for (%ls) (%ls)", appId.GetPointer(), instanceId.GetPointer());
+       pAppContext->AcquireRemoteBuffer(instanceId, width, height, bufferId);
+       SysSecureTryReturnResult(NID_SHELL, bufferId != -1, E_SYSTEM, "Failed to execute AcquireRemoteBuffer for (%ls) (%ls)", appId.GetPointer(), instanceId.GetPointer());
 
     return E_SUCCESS;
 }
@@ -550,35 +563,31 @@ AppWidgetManagerService::AcquireRemoteBuffer(const Tizen::App::AppId& appId, con
 result
 AppWidgetManagerService::AcquireRemoteBufferForPD(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId, int width, int height, int& bufferId)
 {
-       _AppWidgetContext* pAppWidgetContext = this->FindAppWidget(appId, instanceId);
-       SysSecureTryReturnResult(NID_SHELL, pAppWidgetContext , E_SYSTEM, "pAppWidgetContext is null for (%ls) (%ls)", appId.GetPointer(), instanceId.GetPointer());
+       _AppContext* pAppContext = AppWidgetManagerService::GetInstance()->FindAppContext(appId);
+       SysTryReturnResult(NID_SHELL, pAppContext != null, E_OBJ_NOT_FOUND, "Failed to find _AppContext.");
 
-       _AppWidgetPopupContext* pPopupContext = pAppWidgetContext->GetAppWidgetPopup();
-       SysSecureTryReturnResult(NID_SHELL, pPopupContext , E_SYSTEM, "[E_SYSTEM] pPd is null for (%ls) (%ls)", appId.GetPointer(), instanceId.GetPointer());
+       pAppContext->AcquireRemoteBufferForPD(instanceId, width, height, bufferId);
+       SysSecureTryReturnResult(NID_SHELL, bufferId != -1, E_SYSTEM, "Failed to execute AcquireRemoteBufferForPD for (%ls) (%ls)", appId.GetPointer(), instanceId.GetPointer());
 
-       bufferId = pPopupContext->AcquireRemoteBuffer(width, height);
-       SysSecureTryReturnResult(NID_SHELL, bufferId != -1, E_SYSTEM, "Failed to AcquireRemoteBuffer for (%ls) (%ls)", appId.GetPointer(), instanceId.GetPointer());
-
-    return E_SUCCESS;
+       return E_SUCCESS;
 }
 
 result
 AppWidgetManagerService::SyncRemoteBuffer(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId, int width, int height)
 {
-       _AppWidgetContext* pAppWidgetContext = this->FindAppWidget(appId, instanceId);
-       SysSecureTryReturnResult(NID_SHELL, pAppWidgetContext , E_SYSTEM, "[E_SYSTEM] pAppWidgetContext is null for (%ls) (%ls)", appId.GetPointer(), instanceId.GetPointer());
+       _AppContext* pAppContext = AppWidgetManagerService::GetInstance()->FindAppContext(appId);
+       SysTryReturnResult(NID_SHELL, pAppContext != null, E_OBJ_NOT_FOUND, "Failed to find _AppContext.");
 
-       return pAppWidgetContext->SyncRemoteBuffer(width, height);
+       return pAppContext->SyncRemoteBuffer(instanceId, width, height);
 }
 
 result
 AppWidgetManagerService::SyncRemoteBufferForPD(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId)
 {
-       _AppWidgetContext* pAppWidgetContext = this->FindAppWidget(appId, instanceId);
-       SysSecureTryReturnResult(NID_SHELL, pAppWidgetContext , E_SYSTEM, "[E_SYSTEM] pAppWidgetContext is null for (%ls) (%ls)", appId.GetPointer(), instanceId.GetPointer());
-       SysSecureTryReturnResult(NID_SHELL, pAppWidgetContext->GetAppWidgetPopup(), E_SYSTEM, "[E_SYSTEM] GetAppWidgetPopup() returns null for (%ls) (%ls)", appId.GetPointer(), instanceId.GetPointer());
+       _AppContext* pAppContext = AppWidgetManagerService::GetInstance()->FindAppContext(appId);
+       SysTryReturnResult(NID_SHELL, pAppContext != null, E_OBJ_NOT_FOUND, "Failed to find _AppContext.");
 
-       return pAppWidgetContext->GetAppWidgetPopup()->SyncRemoteBuffer();
+       return pAppContext->SyncRemoteBufferForPD(instanceId);
 }
 
 result
@@ -600,12 +609,12 @@ AppWidgetManagerService::RequestProviderCount(const Tizen::App::AppId& appId, co
 
        _AppContext* pAppContext = null;
        result r = __appContextList.GetValue(appId, pAppContext);
-       SysTryReturn(NID_SHELL, pAppContext, null, E_OBJ_NOT_FOUND, "[E_OBJ_NOT_FOUND]");
+       SysTryReturnResult(NID_SHELL, pAppContext, E_OBJ_NOT_FOUND, "Failed to find _AppContext.");
 
        providerCount = pAppContext->GetProviderCount(appId);
 
-       r = pAppContext->RemoveAppWidget(instanceId, false);
-       SysTryReturnResult(NID_SHELL, !IsFailed(r), E_SYSTEM, "Failed to execute RemoveAppWidget.");
+       r = pAppContext->DestroyAppWidget(instanceId, false);
+       SysTryReturnResult(NID_SHELL, !IsFailed(r), E_SYSTEM, "Failed to execute DestroyAppWidget.");
 
        providerCount--;
 
@@ -619,11 +628,11 @@ AppWidgetManagerService::SendResult(const Tizen::App::AppId& appId, const Tizen:
 {
        _AppContext* pAppContext = null;
        result r = __appContextList.GetValue(appId, pAppContext);
-       SysTryReturn(NID_SHELL, !IsFailed(r), null, E_OBJ_NOT_FOUND, "appId(%ls) is not found", appId.GetPointer() );
+       SysTryReturnResult(NID_SHELL, !IsFailed(r), E_OBJ_NOT_FOUND, "appId(%ls) is not found.", appId.GetPointer());
 
        if (!isSucceeded)
        {
-               r = pAppContext->RemoveAppWidget(instanceId, false);
+               r = pAppContext->DestroyAppWidget(instanceId, false);
                SysTryReturnResult(NID_SHELL, !IsFailed(r), E_SYSTEM, "Failed to execute RemoveAppWidget.");
        }
        else    // for pending event excluding touch event.
@@ -639,10 +648,10 @@ AppWidgetManagerService::SendResult(const Tizen::App::AppId& appId, const Tizen:
 result
 AppWidgetManagerService::SendAccessStatus(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId, int accessStatus)
 {
-       _AppWidgetContext* pAppWidgetContext = this->FindAppWidget(appId, instanceId);
-       SysSecureTryReturnResult(NID_SHELL, pAppWidgetContext , E_SYSTEM, "[E_SYSTEM] pAppWidgetContext is null for (%ls) (%ls)", appId.GetPointer(), instanceId.GetPointer());
+       _AppContext* pAppContext = AppWidgetManagerService::GetInstance()->FindAppContext(appId);
+       SysTryReturnResult(NID_SHELL, pAppContext != null, E_OBJ_NOT_FOUND, "Failed to find _AppContext.");
 
-       return pAppWidgetContext->SendAccessStatus(accessStatus);
+       return pAppContext->SendAccessStatus(instanceId, accessStatus);
 }
 
 void
@@ -656,15 +665,11 @@ AppWidgetManagerService::OnUserEventReceivedN(RequestId reqId, IList* pArgs)
        {
        case LOCAL_EVENT_REQUEST_UPDATE:
        {
-               _AppWidgetContext* pAppWidgetContext = dynamic_cast<_AppWidgetContext*>( pArgs->GetAt(0) );
-               SysTryReturnVoidResult(NID_SHELL, pAppWidgetContext != null, E_INVALID_STATE, "_AppWidget is null!.");
-
-               String* pArgument = dynamic_cast<String*>( pArgs->GetAt(1) );
-               SysTryReturnVoidResult(NID_SHELL, pArgument != null, E_INVALID_STATE, "pArgument is null!.");
+               _AppContext* pAppContext = dynamic_cast<_AppContext*>( pArgs->GetAt(0) );
+               SysTryReturnVoidResult(NID_SHELL, pAppContext != null, E_OBJ_NOT_FOUND, "");
 
-               pAppWidgetContext->OnUpdate(*pArgument);
+               pAppContext->HandleUserEvent(pArgs);
 
-               delete pArgument;
                pArgs->RemoveAll();
                delete pArgs;
        }