check AutoRestart attr. ResetLifeDuration when touch event received
authorjungmin76.park <jungmin76.park@samsung.com>
Thu, 16 May 2013 08:21:54 +0000 (17:21 +0900)
committerjungmin76.park <jungmin76.park@samsung.com>
Thu, 16 May 2013 08:48:52 +0000 (17:48 +0900)
Change-Id: I570eb3f80296ee3ee4569462b1500b18f9c27a45
Signed-off-by: jungmin76.park <jungmin76.park@samsung.com>
src/FShell_AppWidgetProviderManagerImpl.cpp
src/inc/FShell_AppWidgetProviderManagerImpl.h

index 4c087d7..6ef05d0 100644 (file)
@@ -25,6 +25,7 @@
 #include <package_manager.h>
 #include <shortcut.h>
 #include <livebox-errno.h>
+#include <provider_buffer.h>
 #include <livebox-service.h>
 
 #include <FBaseSysLog.h>
@@ -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<HashMapT<String, _AppFeatureInfoImpl*> > 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<String, _AppFeatureInfoImpl>(*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;
 }
index 14fdc76..47a5f98 100644 (file)
@@ -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();