From: kyeongwoo.lee Date: Wed, 3 Jul 2013 05:30:24 +0000 (+0900) Subject: Adding a function to get the provider count X-Git-Tag: submit/tizen/20130912.075546~22 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4a1d6166b012c1aeba788b5f1f6d83c1c837b5e7;p=platform%2Fframework%2Fnative%2Fappwidget-service.git Adding a function to get the provider count Change-Id: I4dbaec1840287dc8e581768c7441fb0e4ebb8f57 --- diff --git a/inc/FShell_AppWidgetManagerService.h b/inc/FShell_AppWidgetManagerService.h index c8d97df..6ac4bf7 100644 --- a/inc/FShell_AppWidgetManagerService.h +++ b/inc/FShell_AppWidgetManagerService.h @@ -50,6 +50,7 @@ public: result RemoveAppWidget(const char* pPackageName, const char* pId, bool free); int Find(const Tizen::App::AppId& appId) const; result RequestUpdate(_AppWidgetContext* pAppWidgetContext, const Tizen::Base::String& argument); + int GetProviderCount(const Tizen::Base::String& appId) const; private: result Construct(const char* pServiceIdForCoreDaemon); @@ -82,6 +83,7 @@ private: virtual result RequestSyncSharedMemoryForPD(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId); virtual result RequestReleaseSharedMemory(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId); virtual result RequestReleaseSharedMemoryForPD(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId); + virtual result RequestProviderCount(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId, int& providerCount); virtual result SendResult(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId, bool isSucceeded); virtual result SendAccessStatus(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId, int accessStatus); diff --git a/inc/FShell_AppWidgetManagerStub.h b/inc/FShell_AppWidgetManagerStub.h index 1401f0a..4d10284 100644 --- a/inc/FShell_AppWidgetManagerStub.h +++ b/inc/FShell_AppWidgetManagerStub.h @@ -63,6 +63,7 @@ protected: bool OnRequestSyncSharedMemoryForPD(const Tizen::Base::String& instanceId, result* pRes); bool OnRequestReleaseSharedMemory(const Tizen::Base::String& instanceId, result* pRes); bool OnRequestReleaseSharedMemoryForPD(const Tizen::Base::String& instanceId, result* pRes); + bool OnRequestProviderCount(const Tizen::Base::String& instanceId, int* pProviderCount); bool OnSendResult(const Tizen::Base::String& instanceId, bool isSucceeded); bool OnSendAccessStatus(const Tizen::Base::String& instanceId, int accessStatus); @@ -75,6 +76,7 @@ protected: virtual result RequestSyncSharedMemoryForPD(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId) = 0; virtual result RequestReleaseSharedMemory(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId) = 0; virtual result RequestReleaseSharedMemoryForPD(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId) = 0; + virtual result RequestProviderCount(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId, int& pProviderCount) = 0; virtual result SendResult(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId, bool isSucceeded) = 0; virtual result SendAccessStatus(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId, int accessStatus) = 0; diff --git a/src/FShell_AppWidgetManagerService.cpp b/src/FShell_AppWidgetManagerService.cpp index a39fe6c..0624d51 100644 --- a/src/FShell_AppWidgetManagerService.cpp +++ b/src/FShell_AppWidgetManagerService.cpp @@ -183,6 +183,29 @@ AppWidgetManagerService::Find(const String& appId) const return clientId; } +int +AppWidgetManagerService::GetProviderCount(const String& appId) const +{ + int providerCount = 0; + + unique_ptr< IMapEnumeratorT > pAppWidgetContextEnum(__appWidgetContextList.GetMapEnumeratorN()); + SysTryReturn(NID_SHELL, pAppWidgetContextEnum, providerCount, E_SYSTEM, "[E_SYSTEM]"); + + while (pAppWidgetContextEnum->MoveNext() == E_SUCCESS) + { + _AppWidgetContext* pValue = null; + pAppWidgetContextEnum->GetValue(pValue); + + if (pValue->GetAppId() == appId) + { + providerCount++; + } + } + + SysLog(NID_SHELL, "The provider count is %d for %ls", providerCount, appId.GetPointer()); + return providerCount; +} + result AppWidgetManagerService::SetIpcClientIds(const Tizen::App::AppId& appId, int clientId) { @@ -742,6 +765,35 @@ AppWidgetManagerService::RequestReleaseSharedMemoryForPD(const Tizen::App::AppId return E_SUCCESS; } +result +AppWidgetManagerService::RequestProviderCount(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId, int& providerCount) +{ + SysLog(NID_SHELL, "ENTER"); + + _AppWidgetContext* pAppWidgetContext = this->Find(appId, instanceId); + SysSecureTryReturnResult(NID_SHELL, pAppWidgetContext, E_SYSTEM, "pAppWidgetContext is null for (%ls) (%ls)", appId.GetPointer(), instanceId.GetPointer()); + + providerCount = GetProviderCount(pAppWidgetContext->GetAppId()); + + std::unique_ptr packageName(_StringConverter::CopyToCharArrayN(pAppWidgetContext->GetProviderId())); + std::unique_ptr id(_StringConverter::CopyToCharArrayN(pAppWidgetContext->GetInstanceId())); + + int ret = provider_send_deleted(packageName.get(), id.get()); + SysTryReturnResult(NID_SHELL, ret >= 0 , E_SYSTEM, "Failed to execute provider_send_deleted."); + + //result r = pAppWidgetContext->OnRemoved(); + //SysTryReturnResult(NID_SHELL, !IsFailed(r), E_SYSTEM, "Failed to execute OnRemoved."); + + result r = RemoveAppWidget(packageName.get(), id.get(), true); + SysTryReturnResult(NID_SHELL, !IsFailed(r), E_SYSTEM, "Failed to execute RemoveAppWidget."); + + providerCount--; + + RequestPendingEvent(); + + return E_SUCCESS; +} + result AppWidgetManagerService::SendResult(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId, bool isSucceeded) { @@ -767,7 +819,7 @@ AppWidgetManagerService::SendResult(const Tizen::App::AppId& appId, const Tizen: } } } - else + else { pAppWidgetContext = this->Find(appId, instanceId); } diff --git a/src/FShell_AppWidgetManagerStub.cpp b/src/FShell_AppWidgetManagerStub.cpp index cc12591..28a8835 100644 --- a/src/FShell_AppWidgetManagerStub.cpp +++ b/src/FShell_AppWidgetManagerStub.cpp @@ -155,6 +155,16 @@ _AppWidgetManagerStub::OnRequestReleaseSharedMemoryForPD(const String& instanceI return true; } +bool +_AppWidgetManagerStub::OnRequestProviderCount(const String& instanceId, int* pProviderCount) +{ + SysSecureLog(NID_SHELL, "(instanceId:%ls)", instanceId.GetPointer()); + + RequestProviderCount(__pIpcServer->GetClientPackageId(), instanceId, *pProviderCount); + + return true; +} + bool _AppWidgetManagerStub::OnSendResult(const String& instanceId, bool isSucceeded) { @@ -221,6 +231,7 @@ _AppWidgetManagerStub::OnIpcRequestReceived(_IpcServer& server, const IPC::Messa IPC_MESSAGE_HANDLER_EX(AppWidgetManager_RequestSyncSharedMemoryForPD, &server, OnRequestSyncSharedMemoryForPD) IPC_MESSAGE_HANDLER_EX(AppWidgetManager_RequestReleaseSharedMemory, &server, OnRequestReleaseSharedMemory) IPC_MESSAGE_HANDLER_EX(AppWidgetManager_RequestReleaseSharedMemoryForPD, &server, OnRequestReleaseSharedMemoryForPD) + IPC_MESSAGE_HANDLER_EX(AppWidgetManager_RequestProviderCount, &server, OnRequestProviderCount) IPC_MESSAGE_HANDLER_EX(AppWidgetManager_SendResult, &server, OnSendResult) // IPC_MESSAGE_HANDLER_EX(AppWidgetManager_SendAccessStatus, &server, OnSendAccessStatus) IPC_END_MESSAGE_MAP()