[Release] wrt-installer_0.0.90
[framework/web/wrt-installer.git] / src / wrt-installer / wrt_installer_api.cpp
old mode 100755 (executable)
new mode 100644 (file)
index 43a6234..e481f2f
@@ -30,6 +30,7 @@
 #include <dpl/assert.h>
 #include <dpl/semaphore.h>
 #include <dpl/sstream.h>
+#include <dpl/errno_string.h>
 #include <libxml/parser.h>
 #include <vconf.h>
 
 #include <installer_callbacks_translate.h>
 #include <installer_controller.h>
 #include <language_subtag_rst_tree.h>
-#include <dpl/localization/localization_utils.h>
 #include <dpl/wrt-dao-ro/global_config.h>
 #include <dpl/utils/widget_version.h>
-#include <dpl/popup/popup_manager.h>
-#include <dpl/popup/popup_controller.h>
 #include <wrt_type.h>
 #include <dpl/localization/w3c_file_localization.h>
 #include <dpl/wrt-dao-ro/WrtDatabase.h>
@@ -64,8 +62,10 @@ extern "C"
     inline WidgetUpdateMode::Type translateWidgetUpdateMode(
             wrt_widget_update_mode_t updateMode)
     {
-        WidgetUpdateMode::Type result = WidgetUpdateMode::Zero;
+        if (updateMode == WRT_WIM_POLICY_DIRECTORY_FORCE_INSTALL)
+            return WidgetUpdateMode::PolicyDirectoryForceInstall;
 
+        WidgetUpdateMode::Type result = WidgetUpdateMode::Zero;
         if (updateMode & WRT_WIM_NOT_INSTALLED) {
             result = result | WidgetUpdateMode::NotInstalled;
         }
@@ -97,24 +97,6 @@ extern "C"
         return result;
     }
 
-    void localizationSetting()
-    {
-        char* lang = vconf_get_str(VCONFKEY_LANGSET);
-        if (!lang) {
-            LogError("Cannot get locale settings from vconf");
-        } else {
-            LogDebug("Language set to: " << lang);
-
-            using namespace LocalizationUtils;
-
-            LanguageTagsList list;
-            list.push_back(DPL::FromUTF8String(lang));
-            SetSystemLanguageTags(list);
-
-            LogDebug("LanguageChanged to " << lang);
-        }
-    }
-
     const char PLUGIN_INSTALL_SEMAPHORE[] = "/.wrt_plugin_install_lock";
     static int wrt_count_plugin;
 
@@ -156,17 +138,17 @@ extern "C"
                 "> does not exist.");
         }
 
-        if_ok &= (checkPath(GlobalConfig::GetFactoryInstalledWidgetPath()));
+        if_ok &= (checkPath(GlobalConfig::GetUserInstalledWidgetPath()));
         if (!if_ok) {
             LogError(
-                "Path <" << GlobalConfig::GetFactoryInstalledWidgetPath() <<
+                "Path <" << GlobalConfig::GetUserInstalledWidgetPath() <<
                 "> does not exist.");
         }
 
-        if_ok &= (checkPath(GlobalConfig::GetUserInstalledWidgetPath()));
+        if_ok &= (checkPath(GlobalConfig::GetUserPreloadedWidgetPath()));
         if (!if_ok) {
             LogError(
-                "Path <" << GlobalConfig::GetUserInstalledWidgetPath() <<
+                "Path <" << GlobalConfig::GetUserPreloadedWidgetPath() <<
                 "> does not exist.");
         }
         return if_ok;
@@ -276,7 +258,6 @@ extern "C"
 
             // Initialize Language Subtag registry
             LanguageSubtagRstTreeSingleton::Instance().Initialize();
-            localizationSetting();
 
             // Installer init
             CONTROLLER_POST_SYNC_EVENT(
@@ -342,7 +323,10 @@ extern "C"
                                        WrtInstallerStatusCallback status_cb,
                                        WrtProgressCallback progress_cb,
                                        wrt_widget_update_mode_t update_mode,
-                                       bool quiet)
+                                       bool quiet,
+                                       bool preload,
+                                       std::shared_ptr<PackageManager::IPkgmgrSignal> pkgmgrInterface
+                                       )
     {
         UNHANDLED_EXCEPTION_HANDLER_BEGIN
         {
@@ -357,29 +341,37 @@ extern "C"
                         new InstallerCallbacksTranslate::StatusCallbackStruct(
                             userdata, status_cb, progress_cb),
                         translateWidgetUpdateMode(update_mode),
-                        quiet)));
+                        quiet,
+                        preload,
+                        pkgmgrInterface)));
         }
         UNHANDLED_EXCEPTION_HANDLER_END
     }
 
-    EXPORT_API void wrt_uninstall_widget(int widget_handle,
+    EXPORT_API void wrt_uninstall_widget(const char * const pkg_name,
                                          void* userdata,
                                          WrtInstallerStatusCallback status_cb,
-                                         WrtProgressCallback progress_cb)
+                                         WrtProgressCallback progress_cb,
+                                         std::shared_ptr<PackageManager::IPkgmgrSignal> pkgmgrSignalInterface)
     {
         UNHANDLED_EXCEPTION_HANDLER_BEGIN
         {
-            LogInfo("[WRT-API] UNINSTALL WIDGET: " << widget_handle);
+            std::string widgetPkgName(pkg_name);
+            LogInfo("[WRT-API] UNINSTALL WIDGET: " << widgetPkgName);
             // Post uninstallation event
             CONTROLLER_POST_EVENT(
-                Logic::InstallerController,
-                InstallerControllerEvents::UninstallWidgetEvent(
-                    widget_handle,
-                    WidgetUninstallationStruct(
-                        InstallerCallbacksTranslate::uninstallFinishedCallback,
-                        InstallerCallbacksTranslate::installProgressCallback,
-                        new InstallerCallbacksTranslate::StatusCallbackStruct(
-                            userdata, status_cb, progress_cb))));
+                    Logic::InstallerController,
+                    InstallerControllerEvents::UninstallWidgetEvent(
+                            widgetPkgName,
+                            WidgetUninstallationStruct(
+                                    InstallerCallbacksTranslate::uninstallFinishedCallback,
+                                    InstallerCallbacksTranslate::installProgressCallback,
+                                    new InstallerCallbacksTranslate::StatusCallbackStruct(
+                                            userdata, status_cb, progress_cb),
+                                    pkgmgrSignalInterface
+                            )
+                    )
+            );
         }
         UNHANDLED_EXCEPTION_HANDLER_END
     }
@@ -508,7 +500,8 @@ extern "C"
             }
 
             if (-1 == TEMP_FAILURE_RETRY(closedir(dir))) {
-                LogError("Failed to close dir: " << dir);
+                LogError("Failed to close dir: " << PLUGIN_PATH << " with error: "
+                        << DPL::GetErrnoString());
             }
 
             if (0 != unlink(installRequest.c_str())) {
@@ -596,43 +589,17 @@ extern "C"
         }
     }
 
-    EXPORT_API WrtErrStatus wrt_get_widget_by_pkgname(const std::string pkgname,
-            int *widget_handle)
-    {
-        try
-        {
-            LogInfo("[WRT-API] GETTING WIDGET HANDLE BY PKG NAME : "
-                    << pkgname);
-
-            WidgetHandle handle = WidgetDAOReadOnly::getHandle(
-                    DPL::FromASCIIString(pkgname));
-            *widget_handle = static_cast<int>(handle);
-            return WRT_SUCCESS;
-        }
-        catch (WidgetDAOReadOnly::Exception::WidgetNotExist)
-        {
-            LogError("Error package name is not found");
-            return WRT_ERROR_PKGNAME_NOT_FOUND;
-        }
-        catch (const DPL::Exception& ex)
-        {
-            LogError("Internal Error during get widget id by package name");
-            DPL::Exception::DisplayKnownException(ex);
-            return WRT_ERROR_INTERNAL;
-        }
-    }
-
-    EXPORT_API WrtErrStatus wrt_get_widget_by_guid(const std::string guid,
-            int *widget_handle)
+    EXPORT_API WrtErrStatus wrt_get_widget_by_guid(std::string & pkgname,
+                                                   const std::string guid)
     {
         try
         {
-            LogInfo("[WRT-API] GETTING WIDGET HANDLE BY WidgetID : "
+            LogInfo("[WRT-API] GETTING WIDGET PACKAGE NAME BY WidgetID : "
                     << guid);
 
             WidgetGUID widget_guid = DPL::FromUTF8String(guid);
-            WidgetHandle handle = WidgetDAOReadOnly::getHandle(widget_guid);
-            *widget_handle = static_cast<int>(handle);
+            WrtDB::WidgetDAOReadOnly dao(widget_guid);
+            pkgname = DPL::ToUTF8String(dao.getPkgName());
             return WRT_SUCCESS;
         }
         catch (WidgetDAOReadOnly::Exception::WidgetNotExist)