[Release] wrt-installer_0.1.53
[framework/web/wrt-installer.git] / src / jobs / widget_install / job_widget_install.h
index 6230d17..549c80d 100644 (file)
 #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,
@@ -42,51 +57,59 @@ class JobWidgetInstall :
     public JobContextBase<WidgetInstallationStruct>   //TODO typedef
 {
   private:
-    typedef DPL::Optional<WidgetHandle> OptionalWidgetHandle;
-
     InstallerContext m_installerContext;
 
     //TODO move it to base class of all jobs -> make it base template class??
-    Exceptions::Type m_exceptionCaught;
+    Jobs::Exceptions::Type m_exceptionCaught;
     std::string m_exceptionMessage;
     WidgetUpdateInfo m_widgetUpdateInfo;
-
-    enum class ConfigureResult
-    {
-        Ok, Failed, Deferred, Updated
-    };
+    bool m_needEncryption;
+    bool m_isDRM;
 
     ConfigureResult ConfigureInstallation(const std::string &widgetSource,
-                                          const WidgetUpdateInfo &update);
+                                          const WrtDB::ConfigParserData
+                                          &configData,
+                                          const std::string &tempPath);
     static WrtDB::ConfigParserData getWidgetDataFromXML(
-            const std::string &widgetSource,
-            bool fromBrowser, WrtDB::PkgType isOspsvc);
+        const std::string &widgetSource,
+        const std::string &tempPath,
+        WrtDB::PackagingType pkgType,
+        bool isDRM,
+        bool isReinstall);
     static WidgetUpdateInfo detectWidgetUpdate(
-            const WrtDB::ConfigParserData &configInfo);
-    WidgetUpdateMode::Type CalcWidgetUpdatePolicy(
-            const OptionalWidgetVersion &existingVersion,
-            const OptionalWidgetVersion &incomingVersion) const;
-    bool setTizenId(const WrtDB::ConfigParserData &configInfo);
+        const WrtDB::ConfigParserData &configInfo,
+        const WrtDB::TizenAppId &tizenId);
+    void setTizenId(const WrtDB::ConfigParserData &configInfo);
     void displayWidgetInfo();
-    void configureWidgetLocation(const std::string & widgetPath, bool browserRequest);
+    void configureWidgetLocation(const std::string & widgetPath,
+                                 const std::string &tempPath);
 
     WrtDB::PackagingType checkPackageType(
-            const std::string &widgetSorce);
+        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;
+                     const WidgetInstallationStruct &installerStruct);
 
     //overrides
     void SendProgress();
     void SendFinishedSuccess();
     void SendFinishedFailure();
+    void SendProgressIconPath(const std::string &path);
     void SaveExceptionData(const Jobs::JobExceptionBase&);
 };
 } //namespace WidgetInstall