}
extern const int UPDATE_PERIOD_MSEC_MIN;
+const wchar_t INVALID_INSTANCE[] = L"file://invalid instance id";
AppWidgetManagerService* AppWidgetManagerService::__pTheInstance = null;
int
AppWidgetManagerService::OnAppWidgetPauseAll(struct event_arg *arg, void* data)
{
- SysLog(NID_SHELL, "OnAppWidgetPauseAll");
+ SysLog(NID_SHELL, "I");
AppWidgetManagerService* pAppManagerService = AppWidgetManagerService::GetInstance();
pAppWidgetContext->OnBackground();
}
+ SysLog(NID_SHELL, "O");
return 0;
}
int
AppWidgetManagerService::OnAppWidgetResumeAll(struct event_arg *pArg, void* pData)
{
- SysLog(NID_SHELL, "OnAppWidgetResumeAll");
+ SysLog(NID_SHELL, "I");
AppWidgetManagerService* pAppManagerService = AppWidgetManagerService::GetInstance();
pAppWidgetContext->OnForeground();
}
+ SysLog(NID_SHELL, "O");
return 0;
}
return (found) ? E_SUCCESS : E_OBJ_NOT_FOUND;
}
+// for resuming
+result
+AppWidgetManagerService::RequestUpdate(_AppWidgetContext* pAppWidgetContext, const String& argument)
+{
+ if (pAppWidgetContext)
+ {
+ 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));
+
+ result r = __handlerThread.SendUserEvent(LOCAL_EVENT_REQUEST_UPDATE, pArray);
+ SysTryLog(NID_SHELL, !IsFailed(r), "[%s] Propagated.", GetErrorMessage(r));
+ }
+ else
+ {
+ SysLog(NID_SHELL, "pAppWidgetContext is null.");
+ }
+
+ SysLog(NID_SHELL, "O");
+ return E_SUCCESS;
+}
+
result
AppWidgetManagerService::RequestUpdateInstance(const Tizen::Base::String& instanceId, const Tizen::Base::String& argument)
{
result
AppWidgetManagerService::SendResult(const Tizen::App::AppId& appId, const Tizen::Base::String& instanceId, bool isSucceeded)
{
+ _AppWidgetContext* pAppWidgetContext = null;
+
if (!isSucceeded)
{
- _AppWidgetContext* pAppWidgetContext = this->Find(appId, instanceId);
- SysSecureTryReturnResult(NID_SHELL, pAppWidgetContext, E_SYSTEM, "[E_SYSTEM] pAppWidgetContext is null for (%ls) (%ls)", appId.GetPointer(), instanceId.GetPointer());
+ SysLog(NID_SHELL, "SendResult is called[false].");
+
+ if (instanceId == INVALID_INSTANCE)
+ {
+ for (int i = 0; i < __appWidgetContextList.GetCount(); i++)
+ {
+ __appWidgetContextList.GetAt(i, pAppWidgetContext);
+
+ if (!pAppWidgetContext->IsRunning())
+ {
+ break;
+ }
+ }
+ }
+ else
+ {
+ pAppWidgetContext = this->Find(appId, instanceId);
+ SysSecureTryReturnResult(NID_SHELL, pAppWidgetContext, E_SYSTEM, "pAppWidgetContext is null for (%ls) (%ls)", appId.GetPointer(), instanceId.GetPointer());
+ }
std::unique_ptr<char[]> packageName(_StringConverter::CopyToCharArrayN(pAppWidgetContext->GetProviderId()));
std::unique_ptr<char[]> id(_StringConverter::CopyToCharArrayN(pAppWidgetContext->GetInstanceId()));
SysTryReturnResult(NID_SHELL, ret >= 0 , E_SYSTEM, "Failed to execute provider_send_deleted.");
result r = pAppWidgetContext->OnRemoved();
- SysTryReturn(NID_SHELL, !IsFailed(r), 0, E_SYSTEM, "[E_SYSTEM] Failed to execute OnRemoved.");
+ SysTryReturnResult(NID_SHELL, !IsFailed(r), E_SYSTEM, "Failed to execute OnRemoved.");
r = RemoveAppWidget(packageName.get(), id.get(), true);
- SysTryReturn(NID_SHELL, !IsFailed(r), 0, E_SYSTEM, "[E_SYSTEM] Failed to execute RemoveAppWidget.");
+ SysTryReturnResult(NID_SHELL, !IsFailed(r), E_SYSTEM, "Failed to execute RemoveAppWidget.");
+
+ RequestPendingEvent();
+ }
+ else // for pending event excluding touch event.
+ {
+ SysLog(NID_SHELL, "SendResult is called[true].");
+
+ pAppWidgetContext = this->Find(appId, instanceId);
+
+ if (pAppWidgetContext)
+ {
+ SysLog(NID_SHELL, "AppWidgetContext for %ls exists.", instanceId.GetPointer());
+ RequestPendingEvent();
+ }
+ else
+ {
+ SysLog(NID_SHELL, "AppWidgetContext for %ls is empty.", instanceId.GetPointer());
+ }
}
return E_SUCCESS;
}
+result
+AppWidgetManagerService::RequestPendingEvent(void)
+{
+ for (int i = 0; i < __appWidgetContextList.GetCount(); i++ )
+ {
+ _AppWidgetContext* pAppWidgetContext = null;
+ __appWidgetContextList.GetAt(i, pAppWidgetContext);
+
+ pAppWidgetContext->SendPendingEvent();
+ }
+
+ return E_SUCCESS;
+}
AppWidgetManagerService::_TaskHandlerThread::~_TaskHandlerThread(void)
{