[Release] wrt-installer_0.1.53
[framework/web/wrt-installer.git] / src / wrt-installer / wrt_installer_api.cpp
index 671ab98..83b5172 100644 (file)
 #include <dpl/wrt-dao-ro/WrtDatabase.h>
 #include <vcore/VCore.h>
 #include <installer_main_thread.h>
+#include <wrt_install_mode.h>
 
 using namespace WrtDB;
 
-#ifdef __cplusplus
-
-#define EXPORT_API __attribute__((visibility("default")))
-extern "C"
-{
-#endif
-inline InstallMode::Type translateInstallMode(
-    WrtInstallMode installMode)
-{
-    if (WRT_INSTALL_MODE_INSTALL_WGT == installMode) {
-        return InstallMode::INSTALL_MODE_WGT;
-    } else if (WRT_INSTALL_MODE_INSTALL_DIRECTORY == installMode) {
-        return InstallMode::INSTALL_MODE_DIRECTORY;
-    } else if (WRT_INSTALL_MODE_INSTALL_PRELOAD == installMode) {
-        return InstallMode::INSTALL_MODE_PRELOAD;
-    }
-    Assert(true && "wrong argument is inputed");
-}
-
-const char PLUGIN_INSTALL_SEMAPHORE[] = "/.wrt_plugin_install_lock";
-static int wrt_count_plugin;
-
 static std::string cutOffFileName(const std::string& path)
 {
     size_t found = path.find_last_of("/");
@@ -93,84 +72,16 @@ static bool checkPath(const std::string& path)
 static bool checkPaths()
 {
     bool if_ok = true;
-    if_ok &= (checkPath(cutOffFileName(
-                            GlobalConfig::GetWrtDatabaseFilePath())));
-    if (!if_ok) {
-        LogError(
-            "Path <" << GlobalConfig::GetWrtDatabaseFilePath() <<
-            "> does not exist.");
-    }
 
+    if_ok &= (checkPath(cutOffFileName(GlobalConfig::GetWrtDatabaseFilePath())));
     if_ok &= (checkPath(GlobalConfig::GetDevicePluginPath()));
-    if (!if_ok) {
-        LogError(
-            "Path <" << GlobalConfig::GetDevicePluginPath() <<
-            "> does not exist.");
-    }
-
     if_ok &= (checkPath(GlobalConfig::GetUserInstalledWidgetPath()));
-    if (!if_ok) {
-        LogError(
-            "Path <" << GlobalConfig::GetUserInstalledWidgetPath() <<
-            "> does not exist.");
-    }
-
     if_ok &= (checkPath(GlobalConfig::GetUserPreloadedWidgetPath()));
-    if (!if_ok) {
-        LogError(
-            "Path <" << GlobalConfig::GetUserPreloadedWidgetPath() <<
-            "> does not exist.");
-    }
-    return if_ok;
-}
-
-void plugin_install_status_cb(WrtErrStatus status,
-                              void* userparam)
-{
-    Assert(userparam);
-
-    wrt_plugin_data *plugin_data = static_cast<wrt_plugin_data*>(userparam);
-
-    if (--wrt_count_plugin < 1) {
-        LogDebug("All plugins installation completed");
-
-        LogDebug("Call SetAllinstallpluginsCallback");
-        plugin_data->plugin_installed_cb(plugin_data->user_data);
-    }
 
-    if (status == WRT_SUCCESS) {
-        LogInfo(
-            "plugin installation is successful: " <<
-            plugin_data->plugin_path);
-        return;
-    }
-
-    LogError("Fail to install plugin : " << plugin_data->plugin_path);
-
-    switch (status) {
-    case WRT_INSTALLER_ERROR_PLUGIN_INSTALLATION_FAILED:
-        LogError("Failed : Plugin install path is wrong");
-        break;
-    case WRT_INSTALLER_ERROR_UNKNOWN:
-        LogError("Failed : Unkown Error");
-        break;
-    default:
-        break;
-    }
-}
-
-void plugin_install_progress_cb(float percent,
-                                const char* description,
-                                void* userdata)
-{
-    char *plugin_path = static_cast<char*>(userdata);
-
-    LogInfo("Install plugin : " << plugin_path <<
-            ", Progress : " << percent <<
-            ", Description : " << description);
+    return if_ok;
 }
 
-EXPORT_API void wrt_installer_init(void *userdata,
+void wrt_installer_init(void *userdata,
                                   WrtInstallerInitCallback callback)
 {
     // Set DPL/LOG MID
@@ -232,7 +143,7 @@ EXPORT_API void wrt_installer_init(void *userdata,
     return;
 }
 
-EXPORT_API void wrt_installer_shutdown()
+void wrt_installer_shutdown()
 {
     try {
         LogInfo("[WRT-API] DEINITIALIZING WRT INSTALLER...");
@@ -257,19 +168,25 @@ EXPORT_API void wrt_installer_shutdown()
     }
 }
 
-EXPORT_API void wrt_install_widget(
+void wrt_install_widget(
     const char *path,
     void* userdata,
     WrtInstallerStatusCallback status_cb,
     WrtProgressCallback progress_cb,
-    WrtInstallMode installMode,
-    bool quiet,
+    InstallMode installMode,
     std::shared_ptr<PackageManager::
                         IPkgmgrSignal> pkgmgrInterface
     )
 {
     UNHANDLED_EXCEPTION_HANDLER_BEGIN
     {
+        if (InstallMode::InstallTime::PRELOAD == installMode.installTime) {
+            DPL::Log::OldStyleLogProvider *oldStyleProvider =
+                new DPL::Log::OldStyleLogProvider(false, false, false, true,
+                        false, true);
+            DPL::Log::LogSystemSingleton::Instance().AddProvider(oldStyleProvider);
+        }
+
         LogInfo("[WRT-API] INSTALL WIDGET: " << path);
         // Post installation event
         CONTROLLER_POST_EVENT(
@@ -280,14 +197,13 @@ EXPORT_API void wrt_install_widget(
                     InstallerCallbacksTranslate::installProgressCallback,
                     new InstallerCallbacksTranslate::StatusCallbackStruct(
                         userdata, status_cb, progress_cb),
-                    translateInstallMode(installMode),
-                    quiet,
+                    installMode,
                     pkgmgrInterface)));
     }
     UNHANDLED_EXCEPTION_HANDLER_END
 }
 
-EXPORT_API void wrt_uninstall_widget(
+void wrt_uninstall_widget(
     const char * const tzAppid,
     void* userdata,
     WrtInstallerStatusCallback status_cb,
@@ -317,7 +233,7 @@ EXPORT_API void wrt_uninstall_widget(
     UNHANDLED_EXCEPTION_HANDLER_END
 }
 
-EXPORT_API void wrt_install_plugin(
+void wrt_install_plugin(
     const char *pluginDir,
     void *user_param,
     WrtPluginInstallerStatusCallback status_cb,
@@ -345,131 +261,3 @@ EXPORT_API void wrt_install_plugin(
     }
     UNHANDLED_EXCEPTION_HANDLER_END
 }
-
-EXPORT_API void wrt_install_all_plugins(
-    WrtAllPluginInstalledCallback installed_cb,
-    void *user_param)
-{
-    UNHANDLED_EXCEPTION_HANDLER_BEGIN
-    {
-        std::string installRequest =
-            std::string(GlobalConfig::GetPluginInstallInitializerName());
-
-        LogDebug("Install new plugins");
-
-        Try {
-            DPL::Semaphore lock(PLUGIN_INSTALL_SEMAPHORE);
-        }
-        Catch(DPL::Semaphore::Exception::Base){
-            LogError("Failed to create installation lock");
-            return;
-        }
-
-        struct stat tmp;
-
-        if (-1 == stat(installRequest.c_str(), &tmp) ||
-            !S_ISREG(tmp.st_mode))
-        {
-            if (ENOENT == errno) {
-                LogDebug("Plugin installation not required");
-
-                LogDebug("Call SetAllinstallPluginCallback");
-                installed_cb(user_param);
-
-                DPL::Semaphore::Remove(PLUGIN_INSTALL_SEMAPHORE);
-                return;
-            }
-            LogWarning("Opening installation request file failed");
-        }
-
-        std::string PLUGIN_PATH =
-            std::string(GlobalConfig::GetDevicePluginPath());
-
-        DIR *dir;
-        dir = opendir(PLUGIN_PATH.c_str());
-        if (!dir) {
-            DPL::Semaphore::Remove(PLUGIN_INSTALL_SEMAPHORE);
-            return;
-        }
-
-        LogInfo("Plugin DIRECTORY IS" << PLUGIN_PATH);
-        struct dirent libdir;
-        struct dirent *result;
-        int return_code;
-
-        errno = 0;
-
-        std::list<std::string> pluginsPaths;
-
-        for (return_code = readdir_r(dir, &libdir, &result);
-                    result != NULL && return_code == 0;
-                    return_code = readdir_r(dir, &libdir, &result))
-        {
-            if (strcmp(libdir.d_name, ".") == 0 ||
-                strcmp(libdir.d_name, "..") == 0)
-            {
-                continue;
-            }
-
-            std::string path = PLUGIN_PATH;
-            path += "/";
-            path += libdir.d_name;
-
-            struct stat tmp;
-
-            if (stat(path.c_str(), &tmp) == -1) {
-                LogError("Failed to open file" << path);
-                continue;
-            }
-
-            if (!S_ISDIR(tmp.st_mode)) {
-                LogError("Not a directory" << path);
-                continue;
-            }
-
-            pluginsPaths.push_back(path);
-        }
-
-        wrt_count_plugin = pluginsPaths.size();
-
-        FOREACH(it, pluginsPaths) {
-            wrt_plugin_data *plugin_data = new wrt_plugin_data;
-
-            plugin_data->plugin_installed_cb = installed_cb;
-            plugin_data->plugin_path = const_cast<char*>(it->c_str());
-            plugin_data->user_data = user_param;
-
-            wrt_install_plugin(
-                it->c_str(), static_cast<void*>(plugin_data),
-                plugin_install_status_cb,
-                plugin_install_progress_cb);
-        }
-
-        if (return_code != 0 || errno != 0) {
-            LogError("readdir_r() failed with " << DPL::GetErrnoString());
-        }
-
-        errno = 0;
-        if (-1 == TEMP_FAILURE_RETRY(closedir(dir))) {
-            LogError("Failed to close dir: " << PLUGIN_PATH << " with error: "
-                                             << DPL::GetErrnoString());
-        }
-
-        if (0 != unlink(installRequest.c_str())) {
-            LogError("Failed to remove file initializing plugin "
-                     "installation");
-        }
-
-        Try {
-            DPL::Semaphore::Remove(PLUGIN_INSTALL_SEMAPHORE);
-        }
-        Catch(DPL::Semaphore::Exception::Base){
-            LogInfo("Failed to remove installation lock");
-        }
-    }
-    UNHANDLED_EXCEPTION_HANDLER_END
-}
-
-#ifdef __cplusplus
-}
-#endif