[Issue] During command line installation PkgMgr should only show log and check initialization.
[Bug] N/A
[Cause] N/A
[Solution] Dummy PkgmgrSignal for command line installation
[Verification] Build installer. Run command line installation. No logs that saying 'PkgmgrSingal not yet intialized'
Change-Id: Ie354b35825db9ece9c43ff1321f029d5a5d4e071
if(!!configInfo.tizenId) {
LogDebug("Setting tizenId provided in config.xml: " << configInfo.tizenId);
// send start signal of pkgmgr
- PkgmgrSignalSingleton::Instance().setPkgname(
+ getInstallerStruct().pkgmgrInterface->setPkgname(
DPL::ToUTF8String(*(configInfo.tizenId)));
- PkgmgrSignalSingleton::Instance().sendSignal(
+ getInstallerStruct().pkgmgrInterface->sendSignal(
PKGMGR_START_KEY,
PKGMGR_START_INSTALL);
}
LogInfo("tizen_id name was generated by WRT: " << tizenId);
// send start signal of pkgmgr
- PkgmgrSignalSingleton::Instance().setPkgname(DPL::ToUTF8String(
+ getInstallerStruct().pkgmgrInterface->setPkgname(DPL::ToUTF8String(
*m_installerContext.widgetConfig.pkgname));
- PkgmgrSignalSingleton::Instance().sendSignal(
+ getInstallerStruct().pkgmgrInterface->sendSignal(
PKGMGR_START_KEY,
PKGMGR_START_INSTALL);
}
// send progress signal of pkgmgr
std::ostringstream percent;
percent << static_cast<int>(GetProgressPercent());
- PkgmgrSignalSingleton::Instance().sendSignal(
+ getInstallerStruct().pkgmgrInterface->sendSignal(
PKGMGR_PROGRESS_KEY,
percent.str());
DPL::OptionalString & tizenId = m_installerContext.widgetConfig.pkgname;
// send signal of pkgmgr
- PkgmgrSignalSingleton::Instance().sendSignal(
+ getInstallerStruct().pkgmgrInterface->sendSignal(
PKGMGR_END_KEY,
PKGMGR_END_SUCCESS);
LogDebug("Call widget install failure finishedCallback");
// send signal of pkgmgr
- PkgmgrSignalSingleton::Instance().sendSignal(
+ getInstallerStruct().pkgmgrInterface->sendSignal(
PKGMGR_END_KEY,
PKGMGR_END_FAILURE);
#include <job.h>
#include <widget_install/widget_install_errors.h>
#include <wrt_common_types.h>
+#include <pkgmgr_signal_interface.h>
+#include <memory>
#include <string>
//Widget Installer typedefs
WidgetUpdateMode::Type updateMode;
bool m_quiet;
bool m_preload;
+ std::shared_ptr<PackageManager::IPkgmgrSignal> pkgmgrInterface;
// It must be empty-constructible as a parameter of generic event
WidgetInstallationStruct() : updateMode(WidgetUpdateMode::Zero),
void *param,
WidgetUpdateMode::Type mode,
bool quiet,
- bool preload) :
+ bool preload,
+ std::shared_ptr<PackageManager::IPkgmgrSignal> _pkgmgrInterface
+ ) :
WidgetInstallCallbackBase(finished, progress, param),
updateMode(mode),
m_quiet(quiet),
- m_preload(preload)
+ m_preload(preload),
+ pkgmgrInterface(_pkgmgrInterface)
{
}
};
AddTask(new TaskDeleteCertificates(m_context));
// send start signal of pkgmgr
- if (PkgmgrSignalSingleton::Instance().setPkgname(m_context.pkgname)) {
- PkgmgrSignalSingleton::Instance().sendSignal(
+ if (getInstallerStruct().pkgmgrInterface->setPkgname(m_context.pkgname)) {
+ getInstallerStruct().pkgmgrInterface->sendSignal(
PKGMGR_START_KEY,
PKGMGR_START_UNINSTALL);
}
// send progress signal of pkgmgr
std::ostringstream percent;
percent << static_cast<int>(GetProgressPercent());
- PkgmgrSignalSingleton::Instance().sendSignal(
+ getInstallerStruct().pkgmgrInterface->sendSignal(
PKGMGR_PROGRESS_KEY,
percent.str());
{
using namespace PackageManager;
// send signal of pkgmgr
- PkgmgrSignalSingleton::Instance().sendSignal(
+ getInstallerStruct().pkgmgrInterface->sendSignal(
PKGMGR_END_KEY,
PKGMGR_END_SUCCESS);
LogError("Message: " << m_exceptionMessage);
// send signal of pkgmgr
- PkgmgrSignalSingleton::Instance().sendSignal(
+ getInstallerStruct().pkgmgrInterface->sendSignal(
PKGMGR_END_KEY,
PKGMGR_END_FAILURE);
#include <job_base.h>
#include <wrt_common_types.h>
#include <widget_uninstall/widget_uninstall_errors.h>
+#include <pkgmgr_signal_interface.h>
+#include <memory>
//Widget Uninstaller typedefs
typedef void (*UninstallerFinishedCallback)(
//UninstallationStruct
typedef Jobs::JobCallbacksBase<UninstallerFinishedCallback,
UninstallerProgressCallback>
-WidgetUninstallationStruct;
+WidgetUninstallCallbackBase;
+
+struct WidgetUninstallationStruct : public WidgetUninstallCallbackBase
+{
+ std::shared_ptr<PackageManager::IPkgmgrSignal> pkgmgrInterface;
+
+ // It must be empty-constructible as a parameter of generic event
+ WidgetUninstallationStruct()
+ {
+ }
+
+ WidgetUninstallationStruct(UninstallerFinishedCallback finished,
+ UninstallerProgressCallback progress,
+ void *param,
+ std::shared_ptr<PackageManager::IPkgmgrSignal> _pkgmgrInterface
+ ) :
+ WidgetUninstallCallbackBase(finished, progress, param),
+ pkgmgrInterface(_pkgmgrInterface)
+ {
+ }
+};
#endif // WRT_SRC_INSTALLER_CORE_UNINSTALLER_TASKS_WIDGET_INSTALLER_STRUCT_H_
* @brief
*/
-#include <dpl/singleton_safe_impl.h>
#include <dpl/log/log.h>
#include <pkgmgr_installer.h>
#include <pkg-manager/pkgmgr_signal.h>
-IMPLEMENT_SAFE_SINGLETON(PackageManager::PkgmgrSignal)
namespace PackageManager {
return true;
}
-bool PkgmgrSignal::setPkgname(std::string name)
+bool PkgmgrSignal::setPkgname(const std::string& name)
{
if (!m_initialized)
{
return true;
}
-bool PkgmgrSignal::sendSignal(std::string key, std::string value) const
+bool PkgmgrSignal::sendSignal(const std::string& key, const std::string& value) const
{
if (!m_initialized)
{
*/
/*
* @author Yunchan Cho (yunchan.cho@samsung.com)
- * @version 0.1
+ * @author Jan Olszak (j.olszak@samsung.com)
+ * @version 0.2
* @brief
*/
#ifndef WRT_PKGMGR_SIGNAL_H_
#define WRT_PKGMGR_SINGAL_H_
-#include <dpl/singleton.h>
+#include <pkg-manager/pkgmgr_signal_interface.h>
#include <pkgmgr_installer.h>
namespace PackageManager{
typedef pkgmgr_installer* PkgmgrHandle;
-class PkgmgrSignal
+class PkgmgrSignal: public IPkgmgrSignal
{
public:
bool initialize(int argc, char* argv[]);
bool deinitialize();
- bool setPkgname(std::string name);
- bool sendSignal(std::string key, std::string value) const;
+ bool setPkgname(const std::string& name);
+ bool sendSignal(const std::string& key, const std::string& value) const;
std::string getPkgname() const;
int getRequestedType() const;
bool isNoPopupRequired() const;
+ PkgmgrSignal();
+ virtual ~PkgmgrSignal();
+
private:
bool m_initialized;
PkgmgrHandle m_handle;
std::string m_pkgname;
bool m_noPopup;
int m_reqType;
-
- PkgmgrSignal();
- ~PkgmgrSignal();
-
- friend class DPL::Singleton<PkgmgrSignal>;
};
-
-typedef DPL::Singleton<PkgmgrSignal> PkgmgrSignalSingleton;
-
} // PackageManager
#endif // WRT_PKGMGR_SIGNAL_H_
--- /dev/null
+/*
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/*
+ * @author Jan Olszak (j.olszak@samsung.com)
+ * @version 0.1
+ * @brief Dummy version of PkgmgrSignal.
+ */
+
+#ifndef WRT_PKGMGR_SIGNAL_DUMMY_H_
+#define WRT_PKGMGR_SIGNAL_DUMMY_H_
+
+#include <pkg-manager/pkgmgr_signal_interface.h>
+
+namespace PackageManager {
+
+class PkgmgrSignalDummy: public IPkgmgrSignal
+{
+public:
+ PkgmgrSignalDummy()
+ {
+ }
+
+ virtual ~PkgmgrSignalDummy()
+ {
+ }
+ bool setPkgname(const std::string& name)
+ {
+ return false;
+ }
+
+ bool sendSignal(const std::string& key, const std::string& value) const
+ {
+ return false;
+ }
+
+ std::string getPkgname() const
+ {
+ return "";
+ }
+};
+
+} // PkgmgrSignalDummy
+
+#endif // WRT_PKGMGR_SIGNAL_DUMMY_H_
--- /dev/null
+/*
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/*
+ * @author Jan Olszak (j.olszak@samsung.com)
+ * @version 0.1
+ * @brief Interface for PkgmgrSignal.
+ */
+
+#ifndef WRT_PKGMGR_SIGNAL_INTERFACE_H_
+#define WRT_PKGMGR_SIGNAL_INTERFACE_H_
+
+#include <string>
+namespace PackageManager {
+
+class IPkgmgrSignal
+{
+public:
+ virtual bool setPkgname(const std::string& name) = 0;
+ virtual bool sendSignal(const std::string& key, const std::string& value) const = 0;
+ virtual std::string getPkgname() const = 0;
+ virtual ~IPkgmgrSignal(){};
+};
+
+} // IPkgmgrSignal
+
+#endif // WRT_PKGMGR_SIGNAL_INTERFACE_H_
#include <parser_runner.h>
#include <widget_parser.h>
#include <root_parser.h>
-#include <pkg-manager/pkgmgr_signal.h>
+
+
#define NOFILE_CNT_FOR_INSTALLER 9999
std::string arg = m_argv[0];
+ pkgmgrSignalInterface = std::static_pointer_cast<PackageManager::IPkgmgrSignal>(
+ std::shared_ptr<PackageManager::PkgmgrSignalDummy>(
+ new PackageManager::PkgmgrSignalDummy()
+ )
+ );
+
if (arg.empty()) {
return showHelpAndQuit();
}
using namespace PackageManager;
m_installByPkgmgr = true;
- PkgmgrSignalSingleton::Instance().initialize(m_argc, m_argv);
- m_quiet = PkgmgrSignalSingleton::Instance().isNoPopupRequired();
+ auto pkgmgrSignal = std::shared_ptr<PackageManager::PkgmgrSignal>(
+ new PackageManager::PkgmgrSignal()
+ );
+
+ pkgmgrSignal->initialize(m_argc, m_argv);
+ m_quiet = pkgmgrSignal->isNoPopupRequired();
LogDebug("backend m_quiet"<<m_quiet);
- int reqType = PkgmgrSignalSingleton::Instance().getRequestedType();
+ int reqType = pkgmgrSignal->getRequestedType();
+ pkgmgrSignalInterface =
+ std::static_pointer_cast<PackageManager::IPkgmgrSignal>(pkgmgrSignal);
switch (reqType) {
case PKGMGR_REQ_INSTALL:
m_packagePath = m_argv[4];
? &staticWrtInstallProgressCallback : NULL,
m_installPolicy,
m_quiet,
- m_preloadWidget);
+ m_preloadWidget,
+ pkgmgrSignalInterface);
}
void WrtInstaller::installPluginsStep()
LogDebug("Package name : " << m_name);
wrt_uninstall_widget(m_name.c_str(), this, &staticWrtStatusCallback,
(!m_quiet || m_installByPkgmgr)
- ? &staticWrtUninstallProgressCallback : NULL);
+ ? &staticWrtUninstallProgressCallback : NULL,
+ pkgmgrSignalInterface);
}
void WrtInstaller::uninstallGuidStep()
if (status == WRT_SUCCESS) {
LogDebug("Guid : " << m_name);
wrt_uninstall_widget(pkgname.c_str(), this, &staticWrtStatusCallback,
- !m_quiet ? &staticWrtUninstallProgressCallback : NULL);
+ !m_quiet ? &staticWrtUninstallProgressCallback : NULL,
+ pkgmgrSignalInterface);
} else {
printf("failed: can not uninstall widget\n");
LogError("Fail to uninstalling widget... ");
if (status == WRT_SUCCESS) {
LogDebug("Pkgname from packagePath : " << pkgname);
wrt_uninstall_widget(pkgname.c_str(), this, &staticWrtStatusCallback,
- !m_quiet ? &staticWrtUninstallProgressCallback : NULL);
+ !m_quiet ? &staticWrtUninstallProgressCallback : NULL,
+ pkgmgrSignalInterface);
} else {
LogError("Fail to uninstalling widget... ");
m_returnStatus = -1;
#include <string>
#include <utilX.h>
#include <wrt_installer_api.h>
-#include <pkgmgr_installer.h>
+
+#include <pkg-manager/pkgmgr_signal_interface.h>
+#include <pkg-manager/pkgmgr_signal_dummy.h>
+#include <pkg-manager/pkgmgr_signal.h>
+#include <memory>
namespace WRTInstallerNS { //anonymous
DECLARE_GENERIC_EVENT_0(QuitEvent)
bool popupsEnabled() const;
// Private data
+ std::shared_ptr<PackageManager::IPkgmgrSignal> pkgmgrSignalInterface;
wrt_widget_install_mode_e m_installPolicy;
std::string m_bundleValue;
std::string m_packagePath;
WrtProgressCallback progress_cb,
wrt_widget_update_mode_t update_mode,
bool quiet,
- bool preload)
+ bool preload,
+ std::shared_ptr<PackageManager::IPkgmgrSignal> pkgmgrInterface
+ )
{
UNHANDLED_EXCEPTION_HANDLER_BEGIN
{
userdata, status_cb, progress_cb),
translateWidgetUpdateMode(update_mode),
quiet,
- preload)));
+ preload,
+ pkgmgrInterface)));
}
UNHANDLED_EXCEPTION_HANDLER_END
}
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: " << widgetPkgName);
// Post uninstallation event
CONTROLLER_POST_EVENT(
- Logic::InstallerController,
- InstallerControllerEvents::UninstallWidgetEvent(
- widgetPkgName,
- 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
}
#include <stdbool.h>
#include <stddef.h>
#include <wrt_type.h>
+#include <pkgmgr_signal_interface.h>
+#include <memory>
#ifdef __cplusplus
extern "C" {
WrtProgressCallback progress_callback,
wrt_widget_update_mode_t update_mode,
bool quiet,
- bool preload);
+ bool preload,
+ std::shared_ptr<PackageManager::IPkgmgrSignal> pkgmgrInterface
+ );
/**
* @fn void wrt_installer_uninstall_widget (const char * const pkg_name,
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);
/**
* @fn void wrt_install_plugin(const char *pluginDirectory,