#include <FBaseSysLog.h>
#include <FBaseRt.h>
#include <FBase_StringConverter.h>
-#include <FApp_AppMessageImpl.h>
-#include <FApp_AppArg.h>
-#include <FApp_AppControlManager.h>
#include "FShell_AppWidgetManagerImpl.h"
#include "FShell_AppWidgetContextBase.h"
#include "FShell_AppWidgetManagerService.h"
+#include "FShell_AppWidgetContextHelper.h"
// provider/src/fb.c
struct fb_info {
result
_AppWidgetContextBase::SendRequestToApp(const AppId& appId, const String& operation, HashMap* pArgs)
{
- result r = _AppWidgetRequestHelper::SendRequestToApp(appId, operation, pArgs);
+ result r = _AppWidgetRequestHelper::SendAppControlRequest(appId, operation, pArgs);
SysTryReturnResult(NID_SHELL, !IsFailed(r), E_SYSTEM, "Failed to SendRequestToApp");
return r;
__height = height;
}
-result
-_AppWidgetRequestHelper::SendRequestToApp(const AppId& appId, const String& operation, HashMap* pArgs)
-{
- const String* pInstanceId = dynamic_cast<const String*>(pArgs->GetValue(ARG_KEY_INSTANCE_ID));
- SysTryReturnResult(NID_SHELL, pInstanceId, E_FAILURE, "Failed to GetValue(%ls)", ARG_KEY_INSTANCE_ID.GetPointer() );
-
- SysSecureLog(NID_SHELL, "[ac] pInstanceId(%ls), operation(%ls), appId(%ls), arg count(%d)", pInstanceId->GetPointer(), operation.GetPointer(), appId.GetPointer(), pArgs->GetCount());
-
- _AppMessageImpl msg;
- msg.AddData(OSP_K_APPCONTROL_INTERNAL_OPERATION, L"appwidget");
- Tizen::App::_AppArg::AddStrMap(msg.GetBundle(), pArgs);
-
- std::unique_ptr<char[]> pAppId(_StringConverter::CopyToCharArrayN(appId) );
- std::unique_ptr<char[]> pOperation(_StringConverter::CopyToCharArrayN(operation) );
-
- const int TRY_COUNT = 3;
- const int TRY_SLEEP_TIME = 65;
-
- int retry = 0;
-
- result r = E_FAILURE;
- while (true)
- {
- r = Tizen::App::_AppControlManager::GetInstance()->LaunchPkg(msg, pAppId.get(), pOperation.get(), null, null, null, null);
- if( r == E_SUCCESS)
- {
- SysLog(NID_SHELL, "[%s] Successed to invoke LaunchPkg()", GetErrorMessage(r));
- break;
- }
-
- if( retry ++ >= TRY_COUNT)
- {
- break;
- }
-
- SysLog(NID_SHELL, "[%s] Failed to invoke LaunchPkg(%s), %dth retry.", GetErrorMessage(r), pOperation.get(), retry);
- Tizen::Base::Runtime::Thread::Sleep(TRY_SLEEP_TIME);
- }
-
- return r;
-}
-
-result
-_AppWidgetRequestHelper::SendRequestToApp(const int clientId, const String& operation, HashMap* pArgs)
-{
- const String* pInstanceId = dynamic_cast<const String*>(pArgs->GetValue(ARG_KEY_INSTANCE_ID));
- SysTryReturnResult(NID_SHELL, pInstanceId, E_FAILURE, "Failed to GetValue(%ls)", ARG_KEY_INSTANCE_ID.GetPointer() );
-
- SysSecureLog(NID_SHELL, "[ipc] pInstanceId(%ls), operation(%ls), clientId(%d)", pInstanceId->GetPointer(), operation.GetPointer(), clientId);
-
- bool sendResult = AppWidgetManagerService::GetInstance()->SendAppWidgetEvent(clientId, *pInstanceId, operation, pArgs);
- SysTryReturnResult(NID_SHELL, sendResult, E_FAILURE, "Propagated.");
-
- return E_SUCCESS;
-}
-
}}} // Tizen::Shell::App
////////////////////////////////////////////
--- /dev/null
+//
+// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+/**
+ * @file FShell_AppWidgetContextHelper.cpp
+ * @brief This is the implementation for the _AppWidgetContextHelper class.
+ */
+
+#include <unique_ptr.h>
+#include <FBaseColHashMap.h>
+#include <FBaseString.h>
+#include <FAppTypes.h>
+#include <FBase_StringConverter.h>
+#include <FApp_AppArg.h>
+#include <FApp_AppMessageImpl.h>
+#include <FApp_AppControlManager.h>
+#include "FShell_AppWidgetContextHelper.h"
+#include "FShell_AppWidgetManagerService.h"
+
+namespace Tizen { namespace Shell { namespace App
+{
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+
+result
+_AppWidgetRequestHelper::SendAppControlRequest(const AppId& appId, const String& operation, HashMap* pArgs)
+{
+ const String* pInstanceId = dynamic_cast<const String*>(pArgs->GetValue(ARG_KEY_INSTANCE_ID));
+ SysTryReturnResult(NID_SHELL, pInstanceId, E_FAILURE, "Failed to GetValue(%ls)", ARG_KEY_INSTANCE_ID.GetPointer() );
+
+ SysSecureLog(NID_SHELL, "[ac] pInstanceId(%ls), operation(%ls), appId(%ls), arg count(%d)", pInstanceId->GetPointer(), operation.GetPointer(), appId.GetPointer(), pArgs->GetCount());
+
+ _AppMessageImpl msg;
+ msg.AddData(OSP_K_APPCONTROL_INTERNAL_OPERATION, L"appwidget");
+ Tizen::App::_AppArg::AddStrMap(msg.GetBundle(), pArgs);
+
+ std::unique_ptr<char[]> pAppId(_StringConverter::CopyToCharArrayN(appId) );
+ std::unique_ptr<char[]> pOperation(_StringConverter::CopyToCharArrayN(operation) );
+
+ const int TRY_COUNT = 3;
+ const int TRY_SLEEP_TIME = 65;
+
+ int retry = 0;
+
+ result r = E_FAILURE;
+ while (true)
+ {
+ r = Tizen::App::_AppControlManager::GetInstance()->LaunchPkg(msg, pAppId.get(), pOperation.get(), null, null, null, null);
+ if( r == E_SUCCESS)
+ {
+ SysLog(NID_SHELL, "[%s] Successed to invoke LaunchPkg()", GetErrorMessage(r));
+ break;
+ }
+
+ if( retry ++ >= TRY_COUNT)
+ {
+ break;
+ }
+
+ SysLog(NID_SHELL, "[%s] Failed to invoke LaunchPkg(%s), %dth retry.", GetErrorMessage(r), pOperation.get(), retry);
+ Tizen::Base::Runtime::Thread::Sleep(TRY_SLEEP_TIME);
+ }
+
+ return r;
+}
+
+result
+_AppWidgetRequestHelper::SendIpcRequest(const int clientId, const String& operation, HashMap* pArgs)
+{
+ const String* pInstanceId = dynamic_cast<const String*>(pArgs->GetValue(ARG_KEY_INSTANCE_ID));
+ SysTryReturnResult(NID_SHELL, pInstanceId, E_FAILURE, "Failed to GetValue(%ls)", ARG_KEY_INSTANCE_ID.GetPointer() );
+
+ SysSecureLog(NID_SHELL, "[ipc] pInstanceId(%ls), operation(%ls), clientId(%d)", pInstanceId->GetPointer(), operation.GetPointer(), clientId);
+
+ bool sendResult = AppWidgetManagerService::GetInstance()->SendAppWidgetEvent(clientId, *pInstanceId, operation, pArgs);
+ SysTryReturnResult(NID_SHELL, sendResult, E_FAILURE, "Propagated.");
+
+ return E_SUCCESS;
+}
+
+}}} // Tizen::Shell::App
#include <FBaseColIList.h>
#include <FAppApp.h>
#include <FSystem.h>
+#include <FBaseComparerT.h>
#include <FApp_AppManagerImpl.h>
#include <FIo_IpcServer.h>
#include <FBase_StringConverter.h>
+#include <FBase.h>
#include "FShell_AppWidgetContext.h"
#include "FShell_AppWidgetPopupContext.h"
#include "FShell_AppWidgetManagerStub.h"
#include "FShell_AppWidgetManagerService.h"
+#include "FShell_TemplateUtil.h"
namespace Tizen { namespace Shell { namespace App {
+using namespace std;
using namespace Tizen::App;
using namespace Tizen::Base;
using namespace Tizen::Base::Collection;
_AppWidgetContext*
AppWidgetManagerService::Find(const String& appId, const String& instanceId) const
{
- for (int i = 0; i < __appWidgetContextList.GetCount(); i++)
- {
- _AppWidgetContext* pAppWidgetContext = null;
- __appWidgetContextList.GetAt(i, pAppWidgetContext);
+ _AppWidgetContext* pAppWidgetContext = null;
+ __appWidgetContextList.GetValue(instanceId, pAppWidgetContext);
- if (pAppWidgetContext->GetInstanceId() == instanceId)
- {
- return pAppWidgetContext;
- }
- }
- return null;
+ return pAppWidgetContext;
}
int
{
int clientId = -1;
- for (int i = 0; i < __appWidgetContextList.GetCount(); i++)
+ unique_ptr< IMapEnumeratorT<String, _AppWidgetContext*> > pAppWidgetContextEnum(__appWidgetContextList.GetMapEnumeratorN());
+ SysTryReturn(NID_SHELL, pAppWidgetContextEnum, clientId, E_SYSTEM, "[E_SYSTEM]");
+
+ while (pAppWidgetContextEnum->MoveNext() == E_SUCCESS)
{
- _AppWidgetContext* pAppWidgetContext = null;
- __appWidgetContextList.GetAt(i, pAppWidgetContext);
+ _AppWidgetContext* pValue = null;
+ pAppWidgetContextEnum->GetValue(pValue);
- if (pAppWidgetContext->GetProviderId() == appId)
+ if (pValue->GetProviderId() == appId)
{
- clientId = pAppWidgetContext->GetClientId();
+ clientId = pValue->GetClientId();
break;
}
}
SysLog(NID_SHELL, "clientId is %d", clientId);
-
return clientId;
}
result
AppWidgetManagerService::SetIpcClientIds(const Tizen::App::AppId& appId, int clientId)
{
- for (int i = 0; i < __appWidgetContextList.GetCount(); i++)
+ unique_ptr< IMapEnumeratorT<String, _AppWidgetContext*> > pAppWidgetContextEnum(__appWidgetContextList.GetMapEnumeratorN());
+ SysTryReturnResult(NID_SHELL, pAppWidgetContextEnum, E_SYSTEM, "");
+
+ while (pAppWidgetContextEnum->MoveNext() == E_SUCCESS)
{
- _AppWidgetContext* pAppWidgetContext = null;
- __appWidgetContextList.GetAt(i, pAppWidgetContext);
- SysSecureLog(NID_SHELL, "%ls, %ls, %ls", pAppWidgetContext->GetInstanceId().GetPointer(), pAppWidgetContext->GetProviderId().GetPointer(), appId.GetPointer());
+ _AppWidgetContext* pValue = null;
+ pAppWidgetContextEnum->GetValue(pValue);
+ SysSecureLog(NID_SHELL, "%ls, %ls, %ls", pValue->GetInstanceId().GetPointer(), pValue->GetProviderId().GetPointer(), appId.GetPointer());
- if (pAppWidgetContext->GetAppId() == appId)
+ if (pValue->GetAppId() == appId)
{
- pAppWidgetContext->SetIpcClientId(clientId);
+ pValue->SetIpcClientId(clientId);
- if( clientId == -1)
+ if (clientId == -1)
{
SysLog(NID_SHELL, "client is unregistered.");
- pAppWidgetContext->Suspend();
- if(pAppWidgetContext->GetAppWidgetPopup())
+ pValue->Suspend();
+
+ if (pValue->GetAppWidgetPopup())
{
- pAppWidgetContext->OnPopupDestoyed();
+ pValue->OnPopupDestoyed();
}
}
else
}
}
}
+
return E_SUCCESS;
}
{
SysSecureLog(NID_SHELL, "%ls, %ls, count(%d)", pAppWidgetContext->GetProviderId().GetPointer(), pAppWidgetContext->GetInstanceId().GetPointer(), __appWidgetContextList.GetCount());
- return __appWidgetContextList.Add(pAppWidgetContext);
+ return __appWidgetContextList.Add(pAppWidgetContext->GetInstanceId(), pAppWidgetContext);
}
result
_AppWidgetContext* pAppWidgetContext = Find(pPackageName, pId);
SysTryReturn(NID_SHELL, pAppWidgetContext, null, E_OBJ_NOT_FOUND, "[E_OBJ_NOT_FOUND]");
- result r = __appWidgetContextList.Remove(pAppWidgetContext);
+ result r = __appWidgetContextList.Remove(pAppWidgetContext->GetInstanceId());
delete pAppWidgetContext;
int
AppWidgetManagerService::UpdateAllAppWidgetsByAppId(const String& providerId)
{
- for( int i = 0; i < __appWidgetContextList.GetCount(); i++ )
+ unique_ptr< IMapEnumeratorT<String, _AppWidgetContext*> > pAppWidgetContextEnum(__appWidgetContextList.GetMapEnumeratorN());
+ SysTryReturn(NID_SHELL, pAppWidgetContextEnum, 0, E_SYSTEM, "[E_SYSTEM]");
+
+ while (pAppWidgetContextEnum->MoveNext() == E_SUCCESS)
{
- _AppWidgetContext* pAppWidgetContext = null;
- __appWidgetContextList.GetAt(i, pAppWidgetContext);
+ _AppWidgetContext* pValue = null;
+ pAppWidgetContextEnum->GetValue(pValue);
- if ( pAppWidgetContext->GetProviderId() == providerId )
+ if (pValue->GetProviderId() == providerId)
{
- pAppWidgetContext->OnUpdate(L"");
+ pValue->OnUpdate(L"");
}
}
- return E_SUCCESS;
+
+ return 0;
}
int
int
AppWidgetManagerService::OnAppWidgetPauseAll(struct event_arg *arg, void* data)
{
- SysLog(NID_SHELL, "I");
-
- AppWidgetManagerService* pAppManagerService = AppWidgetManagerService::GetInstance();
+ unique_ptr< IMapEnumeratorT<String, _AppWidgetContext*> > pAppWidgetContextEnum((AppWidgetManagerService::GetInstance()->__appWidgetContextList).GetMapEnumeratorN());
+ SysTryReturn(NID_SHELL, pAppWidgetContextEnum, -1, E_SYSTEM, "[E_SYSTEM]");
- for (int i = 0; i < (pAppManagerService->__appWidgetContextList).GetCount(); i++)
+ while (pAppWidgetContextEnum->MoveNext() == E_SUCCESS)
{
- _AppWidgetContext* pAppWidgetContext = null;
- (pAppManagerService->__appWidgetContextList).GetAt(i, pAppWidgetContext);
+ _AppWidgetContext* pValue = null;
+ pAppWidgetContextEnum->GetValue(pValue);
- pAppWidgetContext->OnBackground();
+ pValue->OnBackground();
}
- SysLog(NID_SHELL, "O");
- return 0;
+ return 0;
}
int
int
AppWidgetManagerService::OnAppWidgetResumeAll(struct event_arg *pArg, void* pData)
{
- SysLog(NID_SHELL, "I");
+ unique_ptr< IMapEnumeratorT<String, _AppWidgetContext*> > pAppWidgetContextEnum((AppWidgetManagerService::GetInstance()->__appWidgetContextList).GetMapEnumeratorN());
+ SysTryReturn(NID_SHELL, pAppWidgetContextEnum, -1, E_SYSTEM, "[E_SYSTEM]");
- AppWidgetManagerService* pAppManagerService = AppWidgetManagerService::GetInstance();
-
- for (int i = 0; i < (pAppManagerService->__appWidgetContextList).GetCount(); i++)
+ while (pAppWidgetContextEnum->MoveNext() == E_SUCCESS)
{
- _AppWidgetContext* pAppWidgetContext = null;
- (pAppManagerService->__appWidgetContextList).GetAt(i, pAppWidgetContext);
+ _AppWidgetContext* pValue = null;
+ pAppWidgetContextEnum->GetValue(pValue);
- pAppWidgetContext->OnForeground();
+ pValue->OnForeground();
}
- SysLog(NID_SHELL, "O");
- return 0;
+ return 0;
}
int
{
SysTryReturnResult(NID_SHELL, pIdForCoreDaemon != null, E_INVALID_ARG, "pIdForCoreDaemon should not be null!");
- __appWidgetContextList.Construct();
+ static __HashMapDefaultProviderT <String> strHashCodeProvider;
+ static ComparerT <String> strComparer;
+
+ result r = __appWidgetContextList.Construct(0, 0, strHashCodeProvider, strComparer);
+ SysTryReturnResult(NID_SHELL, !IsFailed(r), E_SYSTEM, "Failed to execute Construct.");
/*!
* \note
bool found = false;
bool updateAllSuspended = appId.IsEmpty();
- for( int i = 0; i < __appWidgetContextList.GetCount(); i++ )
+ unique_ptr< IMapEnumeratorT<String, _AppWidgetContext*> > pAppWidgetContextEnum((AppWidgetManagerService::GetInstance()->__appWidgetContextList).GetMapEnumeratorN());
+ SysTryReturnResult(NID_SHELL, pAppWidgetContextEnum, E_SYSTEM, "");
+
+ while (pAppWidgetContextEnum->MoveNext() == E_SUCCESS)
{
- _AppWidgetContext* pAppWidgetContext = null;
- __appWidgetContextList.GetAt(i, pAppWidgetContext);
- SysAssertf(pAppWidgetContext, "pAppWidgetContext is null!");
+ _AppWidgetContext* pValue = null;
+ pAppWidgetContextEnum->GetValue(pValue);
if ( (updateAllSuspended == true && AppManager::GetInstance()->IsRunning(appId) == false )
- || ( pAppWidgetContext->GetAppId() == appId && pAppWidgetContext->GetProviderName() == providerName ) )
+ || ( pValue->GetAppId() == appId && pValue->GetProviderName() == providerName ) )
{
ArrayList* pArray = new (std::nothrow) ArrayList();
SysTryReturnResult(NID_SHELL, pArray, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY]");
pArray->Construct();
- pArray->Add(pAppWidgetContext);
+ pArray->Add(pValue);
pArray->Add(new String(argument));
result r = __handlerThread.SendUserEvent(LOCAL_EVENT_REQUEST_UPDATE, pArray);
SysTryLog(NID_SHELL, !IsFailed(r), "[%s] Propagated.", GetErrorMessage(r));
- SysLog(NID_SHELL, "UserEvent(%d) is sent for '%ls.%ls'.", LOCAL_EVENT_REQUEST_UPDATE, pAppWidgetContext->GetAppId().GetPointer(), pAppWidgetContext->GetProviderName().GetPointer() );
+ SysLog(NID_SHELL, "UserEvent(%d) is sent for '%ls.%ls'.", LOCAL_EVENT_REQUEST_UPDATE, pValue->GetAppId().GetPointer(), pValue->GetProviderName().GetPointer() );
found = true;
}
}
+
SysLog(NID_SHELL, "Exit.");
return (found) ? E_SUCCESS : E_OBJ_NOT_FOUND;
}
SysLog(NID_SHELL, "pAppWidgetContext is null.");
}
- SysLog(NID_SHELL, "O");
return E_SUCCESS;
}
{
SysSecureLog(NID_SHELL, "%ls, %ls", instanceId.GetPointer(), argument.GetPointer() );
- for (int i = 0; i < __appWidgetContextList.GetCount(); i++ )
- {
- _AppWidgetContext* pAppWidgetContext = null;
- __appWidgetContextList.GetAt(i, pAppWidgetContext);
+ _AppWidgetContext* pAppWidgetContext = Find(L"", instanceId);
+ SysTryReturnResult(NID_SHELL, pAppWidgetContext, E_OBJ_NOT_FOUND, "Failed to find the object.");
- if (pAppWidgetContext->GetInstanceId() == instanceId)
- {
- SysLog(NID_SHELL, "OK");
+ ArrayList* pArray = new (std::nothrow) ArrayList();
+ SysTryReturnResult(NID_SHELL, pArray, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY]");
- ArrayList* pArray = new (std::nothrow) ArrayList();
- SysTryReturnResult(NID_SHELL, pArray, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY]");
+ pArray->Construct();
+ pArray->Add(pAppWidgetContext);
+ pArray->Add(new String(argument));
- pArray->Construct();
- pArray->Add(pAppWidgetContext);
- pArray->Add(new String(argument));
+ result r = __handlerThread.SendUserEvent(LOCAL_EVENT_REQUEST_UPDATE, pArray);
+ SysTryLog(NID_SHELL, !IsFailed(r), "[%s] Propagated.", GetErrorMessage(r));
- result r = __handlerThread.SendUserEvent(LOCAL_EVENT_REQUEST_UPDATE, pArray);
- SysTryLog(NID_SHELL, !IsFailed(r), "[%s] Propagated.", GetErrorMessage(r));
-
- return E_SUCCESS;
- }
- }
- SysLog(NID_SHELL, "Exit.");
- return E_OBJ_NOT_FOUND;
+ return E_SUCCESS;
}
result
if (instanceId == INVALID_INSTANCE)
{
- for (int i = 0; i < __appWidgetContextList.GetCount(); i++)
+ unique_ptr< IMapEnumeratorT<String, _AppWidgetContext*> > pAppWidgetContextEnum((AppWidgetManagerService::GetInstance()->__appWidgetContextList).GetMapEnumeratorN());
+ SysTryReturnResult(NID_SHELL, pAppWidgetContextEnum, E_SYSTEM, "");
+
+ while (pAppWidgetContextEnum->MoveNext() == E_SUCCESS)
{
- __appWidgetContextList.GetAt(i, pAppWidgetContext);
+ _AppWidgetContext* pValue = null;
+ pAppWidgetContextEnum->GetValue(pValue);
- if (!pAppWidgetContext->IsRunning())
+ if (!pValue->IsRunning())
{
break;
}
result
AppWidgetManagerService::RequestPendingEvent(void)
{
- for (int i = 0; i < __appWidgetContextList.GetCount(); i++ )
+ unique_ptr< IMapEnumeratorT<String, _AppWidgetContext*> > pAppWidgetContextEnum((AppWidgetManagerService::GetInstance()->__appWidgetContextList).GetMapEnumeratorN());
+ SysTryReturnResult(NID_SHELL, pAppWidgetContextEnum, E_SYSTEM, "");
+
+ while (pAppWidgetContextEnum->MoveNext() == E_SUCCESS)
{
- _AppWidgetContext* pAppWidgetContext = null;
- __appWidgetContextList.GetAt(i, pAppWidgetContext);
+ _AppWidgetContext* pValue = null;
+ pAppWidgetContextEnum->GetValue(pValue);
- pAppWidgetContext->SendPendingEvent();
+ pValue->SendPendingEvent();
}
return E_SUCCESS;