</xs:restriction>
</xs:simpleType>
-<xs:simpleType name="boxSizeType">
- <xs:restriction base="xs:token">
- <xs:enumeration value="1x1"/>
- <xs:enumeration value="2x1"/>
- <xs:enumeration value="2x2"/>
- <xs:enumeration value="4x2"/>
- </xs:restriction>
-</xs:simpleType>
-
<xs:simpleType name="pdWidth">
<xs:restriction base="xs:int">
<xs:minInclusive value="175"/>
</xs:complexType>
</xs:element>
-<!-- TODO : appservice will be removed. Please use app-control-->
<xs:element name="appservice">
<xs:complexType>
<xs:attribute name="src" type="xs:NCName" use="required"/>
</xs:complexType>
</xs:element>
-<xs:element name="app-control">
- <xs:complexType>
- <xs:sequence>
- <xs:choice maxOccurs="unbounded">
- <xs:element ref="packages:src"/>
- <xs:element ref="packages:operation"/>
- <xs:element ref="packages:scheme"/>
- <xs:element ref="packages:mime"/>
- </xs:choice>
- </xs:sequence>
- </xs:complexType>
-</xs:element>
-
<xs:element name="category">
<xs:complexType>
<xs:anyAttribute processContents="lax"/>
</xs:complexType>
</xs:element>
-<xs:element name="src">
- <xs:complexType>
- <xs:attribute name="name" type="xs:NCName" use="required"/>
- </xs:complexType>
-</xs:element>
-
-<xs:element name="operation">
- <xs:complexType>
- <xs:attribute name="name" type="tizen:appserviceOperationType" use="required"/>
- </xs:complexType>
-</xs:element>
-
-<xs:element name="scheme">
- <xs:complexType>
- <xs:attribute name="name" type="xs:string" use="optional"/>
- </xs:complexType>
-</xs:element>
-
-<xs:element name="mime">
- <xs:complexType>
- <xs:attribute name="name" type="xs:string" use="optional"/>
- </xs:complexType>
-</xs:element>
-
<xs:element name="livebox">
<xs:complexType mixed="true">
<xs:all>
</xs:complexType>
</xs:element>
-<xs:element name="boxsize" type="tizen:boxSizeType">
+<xs:element name="boxsize">
+ <xs:complexType>
<xs:attribute name="preview" use="optional" type="xs:anyURI"/>
+ </xs:complexType>
</xs:element>
</xs:schema>
<xs:choice minOccurs="0" maxOccurs="unbounded">\r
<xs:element ref="widgets:param"/>\r
</xs:choice>\r
+ <xs:attribute name="name" use="required" type="xs:anyURI"/>\r
<xs:attributeGroup ref="widgets:extension"/>\r
</xs:complexType>\r
</xs:element>\r
+wrt-installer (0.0.90) unstable; urgency=low
+
+ * Change vconf create mechanism
+ * [Custom handler] Remove custom handlers during uninstall
+ * Add required attribute name
+ * For livebox, xsd has been changed
+ * Add log for command
+ * Changed PkgName type from DPL::Optional<DPL::String> to DPL::String. PART 2
+
+ -- Jihoon Chung <jihoon.chung@samsung.com> Tue, 08 Jan 2013 11:28:01 +0900
+
wrt-installer (0.0.89) unstable; urgency=low
* Throw error on no ElementParser
-#git:framework/web/wrt-installer wrt-installer 0.0.89
+#git:framework/web/wrt-installer wrt-installer 0.0.90
Name: wrt-installer
Summary: Installer for tizen Webruntime
-Version: 0.0.89
+Version: 0.0.90
Release: 1
Group: Development/Libraries
License: Apache License, Version 2.0
Source100: wrt-preinstall-widgets.service
BuildRequires: cmake
BuildRequires: edje-tools
+BuildRequires: pkgconfig(appsvc)
BuildRequires: pkgconfig(libxml-2.0)
BuildRequires: pkgconfig(openssl)
BuildRequires: pkgconfig(dpl-efl)
${INSTALLER_JOBS}/widget_uninstall/job_widget_uninstall.cpp
${INSTALLER_JOBS}/widget_uninstall/task_check.cpp
${INSTALLER_JOBS}/widget_uninstall/task_remove_files.cpp
+ ${INSTALLER_JOBS}/widget_uninstall/task_remove_custom_handlers.cpp
${INSTALLER_JOBS}/widget_uninstall/task_db_update.cpp
${INSTALLER_JOBS}/widget_uninstall/task_smack.cpp
${INSTALLER_JOBS}/widget_uninstall/task_uninstall_ospsvc.cpp
dpl-utils-efl
dpl-wrt-dao-ro
dpl-wrt-dao-rw
+ wrt-commons-custom-handler-dao-rw
dpl-encryption
wrt-plugins-types
pkgmgr-installer
)
PKG_CHECK_MODULES(SYS_INSTALLER_STATIC_DEP
+ appsvc
libxml-2.0
openssl
cert-svc-vcore
}
if (!!configInfo.tizenId) {
- if (!pWidgetConfigInfo.pkgname) {
- pWidgetConfigInfo.pkgname = configInfo.tizenId;
- } else {
- if (pWidgetConfigInfo.pkgname != configInfo.tizenId) {
- *pErrCode = WRT_WM_ERR_INVALID_ARCHIVE;
- LogDebug("Invalid archive - Tizen ID not same error");
- return false;
- }
+ if (pWidgetConfigInfo.pkgName != *configInfo.tizenId) {
+ *pErrCode = WRT_WM_ERR_INVALID_ARCHIVE;
+ LogDebug("Invalid archive - Tizen ID not same error");
+ return false;
}
}
regfree(®);
return false;
}
- m_installerContext.widgetConfig.pkgname = configInfo.tizenId;
+ m_installerContext.widgetConfig.pkgName = *configInfo.tizenId;
} else {
WidgetPkgName tizenId = WidgetDAOReadOnly::generateTizenId();
break;
}
- m_installerContext.widgetConfig.pkgname = tizenId;
+ m_installerContext.widgetConfig.pkgName = tizenId;
}
LogInfo("tizen_id name was generated by WRT: " << tizenId);
// send start signal of pkgmgr
getInstallerStruct().pkgmgrInterface->setPkgname(DPL::ToUTF8String(
- *m_installerContext.widgetConfig.pkgname));
+ m_installerContext.widgetConfig.pkgName));
getInstallerStruct().pkgmgrInterface->sendSignal(
PKGMGR_START_KEY,
PKGMGR_START_INSTALL);
}
regfree(®);
- LogInfo("Tizen Id : " << m_installerContext.widgetConfig.pkgname);
+ LogInfo("Tizen Id : " << m_installerContext.widgetConfig.pkgName);
LogInfo("W3C Widget GUID : " << m_installerContext.widgetConfig.guid);
return true;
}
const std::string& tempPath)
{
m_installerContext.locations =
- WidgetLocation(DPL::ToUTF8String(*m_installerContext.widgetConfig.pkgname),
+ WidgetLocation(DPL::ToUTF8String(m_installerContext.widgetConfig.pkgName),
widgetPath, tempPath,
m_installerContext.widgetConfig.packagingType,
m_installerContext.locationType);
if (!setTizenId(configData, update, m_jobStruct.m_preload)) {
return ConfigureResult::Failed;
} else {
- LogInfo("Tizen Id: " << m_installerContext.widgetConfig.pkgname);
+ LogInfo("Tizen Id: " << m_installerContext.widgetConfig.pkgName);
configureWidgetLocation(widgetSource, tempPath);
}
LogInfo("Widget info exists. PkgName: " <<
update.existingWidgetInfo.pkgname);
- DPL::OptionalString pkgname = update.existingWidgetInfo.pkgname;
-
- if(pkgname.IsNull()) {
- LogInfo("But package name doesn't exist");
- return ConfigureResult::Failed;
- }
+ WidgetPkgName pkgname = update.existingWidgetInfo.pkgname;
LogInfo("Widget model exists. package name: " << pkgname);
// Check running state
int retval = APP_MANAGER_ERROR_NONE;
bool isRunning = false;
- retval = app_manager_is_running(DPL::ToUTF8String(*pkgname).c_str(), &isRunning);
+ retval = app_manager_is_running(DPL::ToUTF8String(pkgname).c_str(), &isRunning);
if (APP_MANAGER_ERROR_NONE != retval) {
LogError("Fail to get running state");
return ConfigureResult::Failed;
}
}
- m_installerContext.widgetConfig.pkgname = pkgname;
+ m_installerContext.widgetConfig.pkgName = pkgname;
OptionalWidgetVersion existingVersion;
existingVersion = update.existingWidgetInfo.existingVersion;
OptionalWidgetVersion incomingVersion = update.incomingVersion;
widgetGUID,
widgetVersion,
WidgetUpdateInfo::ExistingWidgetInfo(
- *dao.getPkgname(), dao.getVersion()));
+ dao.getPkgName(), dao.getVersion()));
}
Catch(WidgetDAOReadOnly::Exception::WidgetNotExist)
{
//inform widget info
JobWidgetInstall::displayWidgetInfo();
- DPL::OptionalString & tizenId = m_installerContext.widgetConfig.pkgname;
+ WidgetPkgName& tizenId = m_installerContext.widgetConfig.pkgName;
// send signal of pkgmgr
getInstallerStruct().pkgmgrInterface->sendSignal(
LogDebug("Call widget install successfinishedCallback");
getInstallerStruct().finishedCallback(getInstallerStruct().userParam,
- tizenId.IsNull() ? "" : DPL::ToUTF8String(*tizenId), Exceptions::Success);
+ DPL::ToUTF8String(tizenId), Exceptions::Success);
}
void JobWidgetInstall::SendFinishedFailure()
LogError("Error in installation step: " << m_exceptionCaught);
LogError("Message: " << m_exceptionMessage);
- DPL::OptionalString & tizenId = m_installerContext.widgetConfig.pkgname;
+ WidgetPkgName & tizenId = m_installerContext.widgetConfig.pkgName;
LogDebug("Call widget install failure finishedCallback");
PKGMGR_END_FAILURE);
getInstallerStruct().finishedCallback(getInstallerStruct().userParam,
- tizenId.IsNull() ? "" : DPL::ToUTF8String(*tizenId), m_exceptionCaught);
+ DPL::ToUTF8String(tizenId), m_exceptionCaught);
}
void JobWidgetInstall::SaveExceptionData(const Jobs::JobExceptionBase &e)
std::ostringstream out;
WidgetLocalizedInfo localizedInfo =
- W3CFileLocalization::getLocalizedInfo(*dao.getPkgname());
+ W3CFileLocalization::getLocalizedInfo(dao.getPkgName());
out << std::endl <<
"===================================== INSTALLED WIDGET INFO ========="\
"============================";
out << std::endl << "Name: " << localizedInfo.name;
- out << std::endl << "PkgName: " << dao.getPkgname();
+ out << std::endl << "PkgName: " << dao.getPkgName();
WidgetSize size = dao.getPreferredSize();
out << std::endl << "Width: " << size.width;
out << std::endl << "Height: " << size.height;
out << std::endl << "Start File: " <<
- W3CFileLocalization::getStartFile(*dao.getPkgname());
+ W3CFileLocalization::getStartFile(dao.getPkgName());
out << std::endl << "Version: " << dao.getVersion();
out << std::endl << "Licence: " <<
localizedInfo.license;
dao.isDistributorSigned();
out << std::endl << "Widget trusted: " << dao.isTrusted();
- OptionalWidgetIcon icon = W3CFileLocalization::getIcon(*dao.getPkgname());
- DPL::OptionalString iconSrc =
- !!icon ? icon->src : DPL::OptionalString::Null;
+ OptionalWidgetIcon icon = W3CFileLocalization::getIcon(dao.getPkgName());
+ DPL::OptionalString iconSrc = !!icon ? icon->src : DPL::OptionalString::Null;
out << std::endl << "Icon: " << iconSrc;
out << std::endl << "Preferences:";
if ((pkgmgr_installer_save_certinfo(
const_cast<char*>(DPL::ToUTF8String(
- *m_context.widgetConfig.pkgname).c_str()),
+ m_context.widgetConfig.pkgName).c_str()),
m_pkgHandle)) < 0) {
LogError("pkgmgrInstallerSaveCertinfo fail");
ThrowMsg(Exceptions::SetCertificateInfoFailed,
{
if ((pkgmgr_installer_delete_certinfo(
const_cast<char*>(DPL::ToUTF8String(
- *m_context.widgetConfig.pkgname).c_str()))) < 0) {
+ m_context.widgetConfig.pkgName).c_str()))) < 0) {
LogError("pkgmgr_installer_delete_certinfo fail");
}
}
#include <errno.h>
#include <string.h>
#include <vconf.h>
+#include <map>
using namespace WrtDB;
void TaskDatabase::StepCreateVconf()
{
LogDebug("StepCreateVconf");
- std::string popupUsageKey =
+ std::map<std::string, WrtDB::SettingsType> vconfData;
+ vconfData[
WrtDB::VconfConfig::GetVconfKeyPopupUsage(
- m_context.locations->getPkgname());
- std::string geolocationUsageKey =
+ m_context.locations->getPkgname())] = WrtDB::SETTINGS_TYPE_ON;
+ vconfData[
WrtDB::VconfConfig::GetVconfKeyGeolocationUsage(
- m_context.locations->getPkgname());
- std::string webNotificationUsageKey =
+ m_context.locations->getPkgname())] = WrtDB::SETTINGS_TYPE_ON;
+ vconfData[
WrtDB::VconfConfig::GetVconfKeyWebNotificationUsage(
- m_context.locations->getPkgname());
- std::string webDatabaseUsageKey =
+ m_context.locations->getPkgname())] = WrtDB::SETTINGS_TYPE_ON;
+ vconfData[
WrtDB::VconfConfig::GetVconfKeyWebDatabaseUsage(
- m_context.locations->getPkgname());
- std::string filesystemUsageKey =
+ m_context.locations->getPkgname())] = WrtDB::SETTINGS_TYPE_ON;
+ vconfData[
WrtDB::VconfConfig::GetVconfKeyFilesystemUsage(
- m_context.locations->getPkgname());
- std::string memorySavingModeKey =
+ m_context.locations->getPkgname())] = WrtDB::SETTINGS_TYPE_ON;
+ vconfData[
WrtDB::VconfConfig::GetVconfKeyMemorySavingMode(
- m_context.locations->getPkgname());
-
- vconf_set_int(popupUsageKey.c_str(),
- static_cast<int>(WrtDB::SETTINGS_TYPE_ON));
- // prevent permission error
- vconf_unset(popupUsageKey.c_str());
- vconf_set_int(popupUsageKey.c_str(),
- static_cast<int>(WrtDB::SETTINGS_TYPE_ON));
- vconf_set_int(geolocationUsageKey.c_str(),
- static_cast<int>(WrtDB::SETTINGS_TYPE_ON));
- vconf_set_int(webNotificationUsageKey.c_str(),
- static_cast<int>(WrtDB::SETTINGS_TYPE_ON));
- vconf_set_int(webDatabaseUsageKey.c_str(),
- static_cast<int>(WrtDB::SETTINGS_TYPE_ON));
- vconf_set_int(filesystemUsageKey.c_str(),
- static_cast<int>(WrtDB::SETTINGS_TYPE_ON));
- vconf_set_int(memorySavingModeKey.c_str(),
- static_cast<int>(WrtDB::SETTINGS_TYPE_OFF));
+ m_context.locations->getPkgname())] = WrtDB::SETTINGS_TYPE_OFF;
+
+ // vconftool -g 5000 set -t int <path> initialize value
+ // Current installer should use vconftool for setting group ID
+ // In case of install application by pkgcmd, permission for others
+ // set to read-only
+ FOREACH(it, vconfData) {
+ std::ostringstream command;
+ command << "vconftool -g 5000 set -t int ";
+ command << (*it).first;
+ command << " \"" << static_cast<int>((*it).second) << "\"";
+ int ret = system(command.str().c_str());
+ if (-1 == ret) {
+ ThrowMsg(Exceptions::CreateVconfFailure, "Failed to create vconf files");
+ }
+ }
}
void TaskDatabase::StepAbortDBInsert()
{
LogDebug("Step Encrypt resource");
m_resEnc = new ResourceEncryptor;
- m_resEnc->CreateEncryptionKey(DPL::ToUTF8String(*m_context.
- widgetConfig.pkgname));
+ m_resEnc->CreateEncryptionKey(DPL::ToUTF8String(m_context.
+ widgetConfig.pkgName));
EncryptDirectory(m_context.locations->getTemporaryRootDir());
}
void TaskFileManipulation::StepCreateDirs()
{
std::string widgetPath;
- DPL::OptionalString pkgname = m_context.widgetConfig.pkgname;
- if (pkgname.IsNull()) {
- ThrowMsg(Exceptions::InternalError, "No Package name exists.");
- }
widgetPath = m_context.locations->getPackageInstallationDir();
void TaskFileManipulation::StepRenamePath()
{
std::string instDir;
- DPL::OptionalString pkgname = m_context.widgetConfig.pkgname;
- if (pkgname.IsNull()) {
- ThrowMsg(Exceptions::InternalError, "No Package name exists.");
- }
if (m_context.widgetConfig.packagingType == PKG_TYPE_HYBRID_WEB_APP) {
instDir = m_context.locations->getPackageInstallationDir();
const DPL::String& languageTag) const
{
DPL::OStringStream filename;
- DPL::Optional<DPL::String> pkgname = m_context.widgetConfig.pkgname;
- if (pkgname.IsNull()) {
- ThrowMsg(Exceptions::InternalError, "No Package name exists.");
- }
+ WidgetPkgName pkgname = m_context.widgetConfig.pkgName;
- filename << DPL::ToUTF8String(*pkgname).c_str();
+ filename << DPL::ToUTF8String(pkgname).c_str();
if (!languageTag.empty()) {
DPL::OptionalString tag = getLangTag(languageTag); // translate en -> en_US etc
{
// Update ail for desktop
std::string cfgPkgname =
- DPL::ToUTF8String(*m_context.widgetConfig.pkgname);
+ DPL::ToUTF8String(m_context.widgetConfig.pkgName);
const char* pkgname = cfgPkgname.c_str();
LogDebug("Update ail desktop : " << pkgname );
std::list<std::string> fileList;
getFileList(GlobalConfig::GetUserWidgetDesktopIconPath(), fileList);
- std::string pkgname = DPL::ToUTF8String(*m_context.widgetConfig.pkgname);
+ std::string pkgname = DPL::ToUTF8String(m_context.widgetConfig.pkgName);
FOREACH(it, fileList)
{
void TaskManifestFile::stepGenerateManifest()
{
- DPL::String pkgname = *m_context.widgetConfig.pkgname;
+ WidgetPkgName pkgname = m_context.widgetConfig.pkgName;
manifest_name = pkgname + L".xml";
manifest_file += L"/tmp/" + manifest_name;
generateWidgetName(manifest, uiApp, DPL::OptionalString::Null, name, defaultNameSaved);
}
//appid
- DPL::String pkgname;
- if(!!m_context.widgetConfig.pkgname)
- {
- pkgname = *m_context.widgetConfig.pkgname;
- uiApp.setAppid(pkgname);
- }
+ WidgetPkgName pkgname = m_context.widgetConfig.pkgName;
+ uiApp.setAppid(pkgname);
+
//extraid
if(!!m_context.widgetConfig.guid) {
void TaskManifestFile::setWidgetIcons(UiApplication & uiApp)
{
- DPL::OptionalString pkgname = m_context.widgetConfig.pkgname;
- if (pkgname.IsNull()) {
- ThrowMsg(Exceptions::InternalError, "No Package name exists.");
- }
-
//TODO this file will need to be updated when user locale preferences
//changes.
bool defaultIconSaved = false;
void TaskManifestFile::setWidgetManifest(Manifest & manifest)
{
- if(!!m_context.widgetConfig.pkgname)
- {
- manifest.setPackage(*m_context.widgetConfig.pkgname);
- }
+ manifest.setPackage(m_context.widgetConfig.pkgName);
+
if(!!m_context.widgetConfig.version)
{
manifest.setVersion(*m_context.widgetConfig.version);
devcaps << utf8;
}
}
- DPL::OptionalString pkgName = m_context.widgetConfig.Pkgname;
- Assert(!pkgName.IsNull() && "widget doesn't have a pkg name");
+ WidgetPkgName pkgName = m_context.widgetConfig.pkgName;
int result = handle_access_control_conf_forWAC(
- DPL::ToUTF8String(*pkgName).c_str(),
+ DPL::ToUTF8String(pkgName).c_str(),
devcaps.str().c_str(),
OPERATION_INSTALL);
Assert(result==PC_OPERATION_SUCCESS && "access control setup failed");
}
}
if (!!configInfo.tizenId) {
- if (!pWidgetConfigInfo.pkgname) {
- pWidgetConfigInfo.pkgname = configInfo.tizenId;
- } else {
- if (pWidgetConfigInfo.pkgname != configInfo.tizenId) {
- LogError("Invalid archive - Tizen ID not same error");
- return false;
- }
- }
+ if (pWidgetConfigInfo.pkgName != *configInfo.tizenId) {
+ LogError("Invalid archive - Tizen ID not same error");
+ return false;
+ }
}
if (!!configInfo.version) {
if (!pWidgetConfigInfo.version) {
#include <widget_uninstall/task_check.h>
#include <widget_uninstall/task_db_update.h>
#include <widget_uninstall/task_remove_files.h>
+#include <widget_uninstall/task_remove_custom_handlers.h>
#include <widget_uninstall/task_smack.h>
#include <widget_uninstall/task_uninstall_ospsvc.h>
#include <widget_uninstall/task_delete_certificates.h>
}
AddTask(new TaskRemoveFiles(m_context));
AddTask(new TaskDbUpdate(m_context));
+ AddTask(new TaskRemoveCustomHandlers(m_context));
AddTask(new TaskDeleteCertificates(m_context));
// send start signal of pkgmgr
--- /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.
+ */
+/*
+ * @file task_remove_custom_handlers.cpp
+ * @author Przemyslaw Ciezkowski (p.ciezkowski@samsung.com)
+ * @version 1.0
+ * @brief File for uninstaller - remove custom handlers
+ */
+
+#include <widget_uninstall/task_remove_custom_handlers.h>
+#include <widget_uninstall/uninstaller_context.h>
+#include <dpl/log/log.h>
+#include <dpl/optional_typedefs.h>
+#include <appsvc.h>
+#include <wrt-commons/custom-handler-dao-ro/CustomHandlerDatabase.h>
+#include <wrt-commons/custom-handler-dao-rw/custom_handler_dao.h>
+
+namespace Jobs {
+namespace WidgetUninstall {
+TaskRemoveCustomHandlers::TaskRemoveCustomHandlers(UninstallerContext& context) :
+ DPL::TaskDecl<TaskRemoveCustomHandlers>(this),
+ m_context(context)
+{
+ AddStep(&TaskRemoveCustomHandlers::Step);
+}
+
+void TaskRemoveCustomHandlers::Step()
+{
+ LogDebug("Removing widget from appsvc");
+ int result = appsvc_unset_defapp(m_context.pkgname.c_str());
+ LogDebug("Result: " << result);
+
+ CustomHandlerDB::Interface::attachDatabaseRW();
+ CustomHandlerDB::CustomHandlerDAO handlersDao(
+ DPL::FromASCIIString(m_context.pkgname));
+ handlersDao.removeWidgetProtocolHandlers();
+ handlersDao.removeWidgetContentHandlers();
+ CustomHandlerDB::Interface::detachDatabase();
+}
+
+} //namespace WidgetUninstall
+} //namespace Jobs
--- /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.
+ */
+/*
+ * @file task_remove_custom_handlers.h
+ * @author Przemyslaw Ciezkowski (p.ciezkowski@samsung.com)
+ * @version 1.0
+ * @brief Header file for uninstaller - remove custom handlers
+ */
+#ifndef INSTALLER_CORE_JOBS_WIDGET_UNINSTALL_TASK_REMOVE_CUSTOM_HANDLERS_H
+#define INSTALLER_CORE_JOBS_WIDGET_UNINSTALL_TASK_REMOVE_CUSTOM_HANDLERS_H
+
+#include <dpl/task.h>
+
+class UninstallerContext;
+
+namespace Jobs {
+namespace WidgetUninstall {
+class TaskRemoveCustomHandlers:
+ public DPL::TaskDecl<TaskRemoveCustomHandlers>
+{
+ private:
+ UninstallerContext& m_context;
+
+ void Step();
+
+ public:
+ TaskRemoveCustomHandlers(UninstallerContext& context);
+};
+} //namespace WidgetUninstall
+} //namespace Jobs
+
+#endif /* INSTALLER_CORE_JOBS_WIDGET_UNINSTALL_TASK_REMOVE_CUSTOM_HANDLERS_H */
#ifdef WRT_SMACK_ENABLED
try {
WrtDB::WidgetDAOReadOnly dao(m_context.locations->getPkgname());
- DPL::OptionalString pkgName = dao.getPkgname();
- Assert(!pkgName.IsNull() && "widget doesn't have a pkg name");
+ WidgetPkgName pkgName = dao.getPkgName();
const char *devCap = "";
int result = handle_access_control_conf_forWAC(
- DPL::ToUTF8String(*pkgName).c_str(),
+ DPL::ToUTF8String(pkgName).c_str(),
NULL,
OPERATION_UNINSTALL);
Assert(result==PC_OPERATION_SUCCESS && "access control setup failed");
WrtDB::WrtDatabase::attachToThreadRO();
- WidgetPkgNameList pkgnameslList = WidgetDAOReadOnly::getPkgnameList();
+ WidgetPkgNameList_TEMPORARY_API pkgnameslList = WidgetDAOReadOnly::getPkgnameList_TEMPORARY_API();
*count = 0;
FOREACH(iterator, pkgnameslList) {
pkg_last->next = pkg_info;
}
- WidgetPkgName pkgname = **iterator;
+ WidgetPkgName pkgname = *iterator;
WidgetDAOReadOnly widget(pkgname);
strncpy(pkg_info->pkg_type, "wgt", PKG_TYPE_STRING_LEN_MAX);
snprintf(pkg_info->pkg_name, PKG_NAME_STRING_LEN_MAX, "%s",
void WrtInstaller::OnCreate()
{
LogInfo("Creating DummyClient");
+ fprintf(stderr,
+ "===========================================================\n");
+ fprintf(stderr, "# wrt-installer #\n");
+ fprintf(stderr, "# argc [%ld]\n", m_argc);
+ fprintf(stderr, "# argv[0] = [%s]\n", m_argv[0]);
+ fprintf(stderr, "# argv[1] = [%s]\n", m_argv[1]);
+ fprintf(stderr, "# argv[2] = [%s]\n", m_argv[2]);
+ fprintf(stderr,
+ "===========================================================\n");
AddStep(&WrtInstaller::initStep);
void WrtInstaller::installPluginsStep()
{
LogDebug("Installing plugins ...");
+ fprintf(stderr,"Installing plugins ...\n");
if (m_startupPluginInstallation) {
LogInfo("Plugin installation started because new plugin package found");
if (current == &WrtInstaller::installStep)
{
resultMsg = DPL::FromUTF8String(PKGMGR_INSTALL_MSG);
- printMsg = "installed";
+ printMsg = "installation";
} else if (current == &WrtInstaller::uninstallPkgNameStep ||
current == &WrtInstaller::uninstallGuidStep ||
current == &WrtInstaller::unistallWgtFileStep)
{
resultMsg = DPL::FromUTF8String(PKGMGR_UNINSTALL_MSG);
- printMsg = "uninstalled";
+ printMsg = "uninstallation";
}
if (WRT_SUCCESS != status) {
switch (status) {
case WRT_INSTALLER_ERROR_INVALID_WIDGET_PACKAGE:
This->m_returnStatus = 1; //this status is specific
- printf("failed: invalid widget package\n");
+ fprintf(stderr, "## wrt-installer : %s %s has failed - invalid widget package\n",
+ tizenId.c_str(), printMsg.c_str());
break;
case WRT_INSTALLER_ERROR_WIDGET_DOES_NOT_EXIST:
- printf("failed: widget package does not exist\n");
+ fprintf(stderr, "## wrt-installer : %s %s has failed - widget package does not exist\n",
+ tizenId.c_str(), printMsg.c_str());
break;
case WRT_INSTALLER_ERROR_ALREADY_UNINSTALLING:
- printf("failed: already uninstalling\n");
+ fprintf(stderr, "## wrt-installer : %s %s has failed - already uninstalling\n",
+ tizenId.c_str(), printMsg.c_str());
break;
case WRT_INSTALLER_ERROR_OUT_OUT_DISK_SPACE:
- printf("failed: out of disk space\n");
+ fprintf(stderr,"## wrt-installer : %s %s has failed - out of disk space\n",
+ tizenId.c_str(), printMsg.c_str());
break;
case WRT_INSTALLER_ERROR_INVALID_CERTIFICATE:
- printf("failed: invalid certificate\n");
+ fprintf(stderr,"## wrt-installer : %s %s has failed - invalid certificate\n",
+ tizenId.c_str(), printMsg.c_str());
break;
case WRT_INSTALLER_ERROR_ALREADY_INSTALLED:
- printf("failed: already installed\n");
+ fprintf(stderr,"## wrt-installer : %s %s has failed - already installed\n",
+ tizenId.c_str(), printMsg.c_str());
break;
case WRT_INSTALLER_ERROR_INTERNAL:
- printf("failed: internal error\n");
+ fprintf(stderr,"## wrt-installer : %s %s has failed - internal error\n",
+ tizenId.c_str(), printMsg.c_str());
break;
case WRT_INSTALLER_ERROR_NOT_ALLOWED:
- printf("failed: installation or update not allowed; invalid"
- " mode\n");
+ fprintf(stderr,"## wrt-installer : %s %s has failed - installation or update not allowed; invalid"
+ " mode\n", tizenId.c_str(), printMsg.c_str());
break;
case WRT_INSTALLER_ERROR_DEFERRED:
- printf("deferred: widget update will continue after the widget"
+ fprintf(stderr,"## wrt-installer : deferred: widget update will continue after the widget"
" has been stopped\n");
break;
case WRT_INSTALLER_ERROR_DATABASE_FAILURE:
- printf("failed: database failure\n");
+ fprintf(stderr,"## wrt-installer : %s %s has failed - database failure\n",
+ tizenId.c_str(), printMsg.c_str());
break;
case WRT_INSTALLER_ERROR_OSPSVC:
- printf("failed: during installation or uninstallation osp service\n");
+ fprintf(stderr,"## wrt-installer : %s %s has failed - during installation or"
+ " uninstallation osp service\n", tizenId.c_str(),
+ printMsg.c_str());
break;
case WRT_INSTALLER_ERROR_UNKNOWN:
- printf("failed: unknown error\n");
+ fprintf(stderr,"## wrt-installer : %s %s has failed - unknown error\n",
+ tizenId.c_str(), printMsg.c_str());
break;
default:
break;
+
}
} else {
-
- printf("%s : %s\n", printMsg.c_str(), tizenId.c_str());
+ fprintf(stderr, "## wrt-installer : %s %s was successful.\n", tizenId.c_str(), printMsg.c_str());
LogDebug("Status succesfull");
This->m_returnStatus = 0;
resultMsg += L" : " + DPL::FromUTF8String(PKGMGR_END_SUCCESS);
if (This->m_numPluginsToInstall < 1) {
LogDebug("All plugins installation completed");
+ fprintf(stderr,"All plugins installation completed.\n");
//remove installation request
if (!PluginUtils::removeInstallationRequiredFlag()) {
if (WRT_SUCCESS == status) {
This->m_returnStatus = 0;
+ fprintf(stderr, "## wrt-installer : plugin installation successfull [%s]\n",
+ path.c_str());
LogDebug("One plugin Installation succesfull: " << path);
return;
}
if (WRT_PLUGIN_INSTALLER_ERROR_WAITING == status) {
LogInfo("Plugin installation is waiting for dependencies");
+ fprintf(stderr, "## wrt-installer : plugin installation failed [%s]\n",
+ path.c_str());
}
switch (status) {
WidgetGUID widget_guid = DPL::FromUTF8String(guid);
WrtDB::WidgetDAOReadOnly dao(widget_guid);
- pkgname = DPL::ToUTF8String(*dao.getPkgname());
+ pkgname = DPL::ToUTF8String(dao.getPkgName());
return WRT_SUCCESS;
}
catch (WidgetDAOReadOnly::Exception::WidgetNotExist)