#include <dpl/utils/widget_version.h>
#include <widget_install/widget_install_context.h>
#include <widget_install/widget_update_info.h>
+#include <dpl/wrt-dao-ro/config_parser_data.h>
#include "widget_installer_struct.h"
+using namespace Jobs::Exceptions;
+
namespace Jobs {
namespace WidgetInstall {
+enum class ConfigureResult
+{
+ Ok,
+ Deferred,
+ Updated,
+ Failed,
+ Failed_InvalidConfig,
+ Failed_LowerVersion,
+ Failed_AlreadyInstalled,
+ Failed_WidgetRunning,
+ Failed_DrmError,
+};
+
class JobWidgetInstall :
public Job,
public JobProgressBase<InstallerContext::InstallStep,
public JobContextBase<WidgetInstallationStruct> //TODO typedef
{
private:
- typedef DPL::Optional<WidgetHandle> OptionalWidgetHandle;
-
InstallerContext m_installerContext;
- //TODO move it to base class of all jobs
- Exceptions::Type m_exceptionCaught;
+ //TODO move it to base class of all jobs -> make it base template class??
+ Jobs::Exceptions::Type m_exceptionCaught;
std::string m_exceptionMessage;
WidgetUpdateInfo m_widgetUpdateInfo;
+ bool m_needEncryption;
+ bool m_isDRM;
- enum class ConfigureResult
- {
- Ok, Failed, Deferred
- };
-
- ConfigureResult ConfigureInstallation(const std::string &widgetPath);
- WidgetUpdateInfo detectWidgetUpdate(const std::string &widgetPath);
- WidgetUpdateMode::Type CalcWidgetUpdatePolicy(
- const OptionalWidgetVersion &existingVersion,
- const OptionalWidgetVersion &incomingVersion) const;
+ ConfigureResult ConfigureInstallation(const std::string &widgetSource,
+ const WrtDB::ConfigParserData
+ &configData,
+ const std::string &tempPath);
+ static WrtDB::ConfigParserData getWidgetDataFromXML(
+ const std::string &widgetSource,
+ const std::string &tempPath,
+ WrtDB::PackagingType pkgType,
+ bool isDRM,
+ bool isReinstall);
+ static WidgetUpdateInfo detectWidgetUpdate(
+ const WrtDB::ConfigParserData &configInfo,
+ const WrtDB::TizenAppId &tizenId);
+ void setTizenId(const WrtDB::ConfigParserData &configInfo);
void displayWidgetInfo();
+ void configureWidgetLocation(const std::string & widgetPath,
+ const std::string &tempPath);
+
+ WrtDB::PackagingType checkPackageType(
+ const std::string &widgetSource,
+ const std::string &tempPath);
+ bool detectResourceEncryption(const WrtDB::ConfigParserData &configData);
+ void setInstallLocationType(const WrtDB::ConfigParserData
+ &configData);
+ bool isDRMWidget(std::string widgetPath);
+ bool DecryptDRMWidget(std::string widgetPath, std::string destPath);
+ ConfigureResult PrePareInstallation(const std::string &widgetPath);
+ bool validateTizenApplicationID(const WrtDB::TizenAppId &tizenAppId);
+ bool validateTizenPackageID(const WrtDB::TizenPkgId &tizenPkgId);
+ ConfigureResult checkWidgetUpdate(const WidgetUpdateInfo &update);
+ void setApplicationType(const WrtDB::ConfigParserData &configInfo);
public:
/**
* @brief Automaticaly sets installation process
*/
JobWidgetInstall(std::string const & widgetPath,
- const WidgetInstallationStruct &installerStruct);
-
- DPL::Optional<WidgetHandle> getNewWidgetHandle() const;
- bool getUnzipStartedFlag() const;
- bool getUnzipFinishedFlag() const;
+ const WidgetInstallationStruct &installerStruct);
//overrides
void SendProgress();
void SendFinishedSuccess();
void SendFinishedFailure();
+ void SendProgressIconPath(const std::string &path);
void SaveExceptionData(const Jobs::JobExceptionBase&);
};
} //namespace WidgetInstall