From: jungmin76.park Date: Thu, 16 May 2013 08:21:54 +0000 (+0900) Subject: check AutoRestart attr. ResetLifeDuration when touch event received X-Git-Tag: accepted/tizen/20130520.101539~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2dfa8ee3b0b71ba5d323f30bf03a088bed154a30;p=platform%2Fframework%2Fnative%2Fshell.git check AutoRestart attr. ResetLifeDuration when touch event received Change-Id: I570eb3f80296ee3ee4569462b1500b18f9c27a45 Signed-off-by: jungmin76.park --- diff --git a/src/FShell_AppWidgetProviderManagerImpl.cpp b/src/FShell_AppWidgetProviderManagerImpl.cpp index 4c087d7..6ef05d0 100644 --- a/src/FShell_AppWidgetProviderManagerImpl.cpp +++ b/src/FShell_AppWidgetProviderManagerImpl.cpp @@ -25,6 +25,7 @@ #include #include #include +#include #include #include @@ -146,8 +147,8 @@ _AppWidgetProviderManagerImpl::Construct() result _AppWidgetProviderManagerImpl::SetAppWidgetProviderFactory(IAppWidgetProviderFactory& factory) { - result r = ValidateApplicationAttributeForAppWidget(); - SysTryReturnResult(NID_SHELL, !IsFailed(r), E_INVALID_OPERATION, "This application can't export AppWidget provider."); + result r = ValidateApplicationAttribute(); + SysTryReturnResult(NID_SHELL, !IsFailed(r), E_INVALID_OPERATION, "The application's attribute does not meet the condition to provide AppWidget. 'LifeDuration' and 'UseUi' attribute should be specified in application manifest." ); __pAppWidgetFactory = &factory; return E_SUCCESS; @@ -156,22 +157,33 @@ _AppWidgetProviderManagerImpl::SetAppWidgetProviderFactory(IAppWidgetProviderFac const wchar_t USE_UI_KEY[] = L"UseUi"; const wchar_t USE_UI_VAL_TRUE[] = L"True"; const wchar_t LIFE_DURATION_KEY[] = L"LifeDuration"; +const wchar_t AUTO_RESTART_KEY[] = L"AutoRestart"; const int LIFE_DURATION_MIN = 30000; result -_AppWidgetProviderManagerImpl::ValidateApplicationAttributeForAppWidget(void) +_AppWidgetProviderManagerImpl::ValidateApplicationAttribute(void) { + static result res = E_UNKNOWN; + if(res != E_UNKNOWN ) + { + return res; + } + + res = E_SYSTEM; unique_ptr > pInfo(_PackageManagerImpl::GetInstance()->GetPackageAppFeatureMapN(_AppInfo::GetPackageId(), _AppInfo::GetAppExecutableName()) ); SysTryReturnResult(NID_SHELL, pInfo.get(), E_SYSTEM, "Failed to invoke _PackageManagerImpl::GetPackageAppFeatureMapN()"); _AppFeatureInfoImpl* pFeature = null; + res = E_INVALID_OPERATION; + // UseUi result r = pInfo->GetValue(USE_UI_KEY, pFeature); SysTryReturnResult(NID_SHELL, !IsFailed(r), E_INVALID_OPERATION, "Can't find %ls attribute for the ServiceApp in package information.", USE_UI_KEY ); const String& useUi = pFeature->GetValue(); SysTryReturnResult(NID_SHELL, useUi == USE_UI_VAL_TRUE, E_INVALID_OPERATION, "%ls attribute value should be '%ls' to be an application that providing AppWidget, but value is %ls", USE_UI_KEY, USE_UI_VAL_TRUE, useUi.GetPointer() ); + // LifeDuration r = pInfo->GetValue(LIFE_DURATION_KEY, pFeature); SysTryReturnResult(NID_SHELL, !IsFailed(r), E_INVALID_OPERATION, "Can't find %ls attribute for the ServiceApp in package information.", LIFE_DURATION_KEY ); @@ -179,17 +191,28 @@ _AppWidgetProviderManagerImpl::ValidateApplicationAttributeForAppWidget(void) int lifeDuration = 0; r = Integer::Parse(lifeDurationValue, lifeDuration); SysTryReturnResult(NID_SHELL, !IsFailed(r), E_INVALID_OPERATION, "Failed to parse %ls attribute for the ServiceApp in package information.", LIFE_DURATION_KEY ); -// SysTryReturnResult(NID_SHELL, lifeDuration <= LIFE_DURATION_MIN, E_INVALID_OPERATION, "%ls attribute value should be less than '%d' to be an application that providing AppWidget, but value is %d", LIFE_DURATION_KEY, LIFE_DURATION_MIN, lifeDuration ); + SysTryReturnResult(NID_SHELL, lifeDuration <= LIFE_DURATION_MIN, E_INVALID_OPERATION, "%ls attribute value should be less than '%d' to be an application that providing AppWidget, but value is %d", LIFE_DURATION_KEY, LIFE_DURATION_MIN, lifeDuration ); + + // AutoRestart + r = pInfo->GetValue(AUTO_RESTART_KEY, pFeature); + if (!IsFailed(r)) + { + String autoRestart = pFeature->GetValue(); + autoRestart.ToLowerCase(); + SysTryReturnResult(NID_SHELL, autoRestart != "true", E_INVALID_OPERATION, "It's not allowed that declaring 'AUTO_RESTART' attribute for AppWidget."); + } _DeleteCollectionMapValue(*pInfo); - return E_SUCCESS; + + res = E_SUCCESS; + return res; } result _AppWidgetProviderManagerImpl::SetAppWidgetPopupProviderFactory(IAppWidgetPopupProviderFactory& factory) { - result r = ValidateApplicationAttributeForAppWidget(); - SysTryReturnResult(NID_SHELL, !IsFailed(r), E_INVALID_OPERATION, "This application can't export AppWidget provider."); + result r = ValidateApplicationAttribute(); + SysTryReturnResult(NID_SHELL, !IsFailed(r), E_INVALID_OPERATION, "The application's attribute does not meet the condition to provide AppWidget. 'LifeDuration' and 'UseUi' attribute should be specified in application manifest."); __pAppWidgetPopupProviderFactory = &factory; return E_SUCCESS; @@ -628,7 +651,7 @@ result _AppWidgetProviderManagerImpl::CreateAppWidget(const String& name, const String& instanceId, int width, int height, const String& userInfo) { SysSecureLog(NID_SHELL, "instanceId(%ls), w:%d, h:%d, userInfo:%ls", instanceId.GetPointer(), width, height, userInfo.GetPointer()); - SysTryReturnResult(NID_SHELL, __pAppWidgetFactory, E_FAILURE, "__pAppWidgetFactory should not be null"); + SysTryReturnResult(NID_SHELL, __pAppWidgetFactory, E_FAILURE, "__pAppWidgetFactory should not be null. Please make sure AppWidgetProviderManager::SetAppWidgetProviderFactory() is called in App::OnAppInitializing() and successed."); if( ContainsAppWidget(instanceId)) { @@ -775,6 +798,12 @@ _AppWidgetProviderManagerImpl::ForwardTouchEvent(const String& instanceId, int e SysTryReturnResult(NID_SHELL, pTouchEventListener, E_INVALID_STATE, "[E_INVALID_STATE]"); pTouchEventListener->OnTouchEventRecevied(eventType, timeStamp, x, y); + if( eventType == BUFFER_EVENT_UP) + { + _ServiceAppImpl* pServiceAppImpl = _ServiceAppImpl::GetInstance(); + SysAssert(pServiceAppImpl); + pServiceAppImpl->ResetLifeDurationTimer(); + } return E_SUCCESS; } diff --git a/src/inc/FShell_AppWidgetProviderManagerImpl.h b/src/inc/FShell_AppWidgetProviderManagerImpl.h index 14fdc76..47a5f98 100644 --- a/src/inc/FShell_AppWidgetProviderManagerImpl.h +++ b/src/inc/FShell_AppWidgetProviderManagerImpl.h @@ -79,7 +79,7 @@ public: // helper // static result ExtractAppIdAndProviderName(const Tizen::Base::String& providerId, Tizen::App::AppId& appId, Tizen::Base::String& providerName); - result ValidateApplicationAttributeForAppWidget(void); + static result ValidateApplicationAttribute(void); void TerminateAppIfInvalidState();