2 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 * @file widget_location.cpp
18 * @author Iwanek Tomasz (t.iwanek@smasung.com)
20 #include "widget_location.h"
22 #include <dpl/utils/wrt_utility.h>
23 #include <dpl/wrt-dao-ro/global_config.h>
24 #include <dpl/assert.h>
25 #include <dpl/log/log.h>
26 #include <dpl/sstream.h>
27 #include <dpl/localization/localization_utils.h>
28 #include <widget_install/task_commons.h>
30 WidgetLocation::DirectoryDeletor::DirectoryDeletor(bool isReadOnly) :
31 m_dirpath(Jobs::WidgetInstall::createTempPath(isReadOnly))
34 WidgetLocation::DirectoryDeletor::DirectoryDeletor(std::string tempPath) :
38 WidgetLocation::DirectoryDeletor::~DirectoryDeletor()
41 "Removing widget installation temporary directory: " << m_dirpath.c_str());
42 if (!WrtUtilRemove(m_dirpath)) {
43 LogWarning("Fail at removing directory: " << m_dirpath.c_str());
47 std::string WidgetLocation::DirectoryDeletor::getTempPath() const
52 WidgetLocation::WidgetLocation()
55 WidgetLocation::WidgetLocation(const std::string & widgetname) :
59 WidgetLocation::~WidgetLocation()
62 WidgetLocation::WidgetLocation(const std::string & widgetname,
63 std::string sourcePath,
64 WrtDB::PackagingType t,
66 InstallMode::ExtensionType eType) :
68 m_widgetSource(sourcePath),
71 new WidgetLocation::DirectoryDeletor(isReadonly)),
72 m_extensionType(eType)
75 m_installedPath += WrtDB::GlobalConfig::GetUserPreloadedWidgetPath();
77 m_installedPath += WrtDB::GlobalConfig::GetUserInstalledWidgetPath();
80 if (access(m_widgetSource.c_str(), F_OK) != 0) {
81 m_widgetSource = m_installedPath + "/" + m_pkgid;
85 WidgetLocation::WidgetLocation(const std::string & widgetname,
86 std::string sourcePath,
88 WrtDB::PackagingType t,
90 InstallMode::ExtensionType eType) :
92 m_widgetSource(sourcePath),
94 m_temp(new WidgetLocation::DirectoryDeletor(dirPath)),
95 m_extensionType(eType)
98 m_installedPath += WrtDB::GlobalConfig::GetUserPreloadedWidgetPath();
100 m_installedPath += WrtDB::GlobalConfig::GetUserInstalledWidgetPath();
103 if (access(m_widgetSource.c_str(), F_OK) != 0) {
104 m_widgetSource = m_installedPath + "/" + m_pkgid;
108 // TODO cache all these paths
109 std::string WidgetLocation::getInstallationDir() const
111 return m_installedPath;
114 std::string WidgetLocation::getPackageInstallationDir() const
116 return m_installedPath + "/" + m_pkgid;
119 std::string WidgetLocation::getSourceDir() const
121 return m_installedPath + "/"
122 + m_pkgid + WrtDB::GlobalConfig::GetWidgetSrcPath();
125 std::string WidgetLocation::getBinaryDir() const
127 return m_installedPath + "/"
128 + m_pkgid + WrtDB::GlobalConfig::GetUserWidgetExecPath();
131 std::string WidgetLocation::getUserBinaryDir() const
133 return getUserDataRootDir() + "/"
134 + WrtDB::GlobalConfig::GetUserWidgetExecPath();
137 std::string WidgetLocation::getExecFile() const
139 return getBinaryDir() + "/" + m_appid;
142 std::string WidgetLocation::getBackupDir() const
144 return getPackageInstallationDir() + ".backup";
147 std::string WidgetLocation::getBackupSourceDir() const
149 return getBackupDir() + WrtDB::GlobalConfig::GetWidgetSrcPath();
152 std::string WidgetLocation::getBackupBinaryDir() const
154 return getBackupDir() + WrtDB::GlobalConfig::GetUserWidgetExecPath();
157 std::string WidgetLocation::getBackupExecFile() const
159 return getBackupBinaryDir() + "/" + m_appid;
162 std::string WidgetLocation::getBackupPrivateDir() const
164 return getBackupDir() + "/" +
165 WrtDB::GlobalConfig::GetWidgetPrivateStoragePath();
168 std::string WidgetLocation::getUserDataRootDir() const
170 return std::string(WrtDB::GlobalConfig::GetWidgetUserDataPath()) +
174 std::string WidgetLocation::getPrivateStorageDir() const
176 return getUserDataRootDir() + "/" +
177 WrtDB::GlobalConfig::GetWidgetPrivateStoragePath();
180 std::string WidgetLocation::getPrivateTempStorageDir() const
182 return getUserDataRootDir() + "/" +
183 WrtDB::GlobalConfig::GetWidgetPrivateTempStoragePath();
187 std::string WidgetLocation::getTemporaryPackageDir() const
189 return m_temp->getTempPath();
192 std::string WidgetLocation::getTemporaryRootDir() const
194 if (m_extensionType == InstallMode::ExtensionType::DIR) {
195 return getWidgetSource() + WrtDB::GlobalConfig::GetWidgetSrcPath();
197 if (m_type == WrtDB::PKG_TYPE_HYBRID_WEB_APP) {
198 return getTemporaryPackageDir() + WrtDB::GlobalConfig::GetWidgetSrcPath();
200 return getTemporaryPackageDir();
204 std::string WidgetLocation::getConfigurationDir() const
206 if (m_type == WrtDB::PKG_TYPE_HOSTED_WEB_APP) {
207 std::string path = ".";
208 std::size_t index = m_widgetSource.find_last_of("\\/");
209 if (index != std::string::npos) {
210 path = m_widgetSource.substr(0, index);
214 return getTemporaryRootDir();
218 DPL::String WidgetLocation::getPkgId() const
220 return DPL::FromUTF8String(m_pkgid);
223 std::string WidgetLocation::getInstalledIconPath() const
228 std::string WidgetLocation::getWidgetSource() const
230 return m_widgetSource;
233 void WidgetLocation::setIconTargetFilenameForLocale(const std::string & icon)
238 void WidgetLocation::registerExternalLocation(const std::string & file)
240 m_externals.push_back(file);
243 WrtDB::ExternalLocationList WidgetLocation::listExternalLocations() const
248 void WidgetLocation::registerAppid(const std::string & appid)
253 std::string WidgetLocation::getSharedRootDir() const
255 /* TODO : add wrt-commons*/
256 return getUserDataRootDir() + "/shared";
259 std::string WidgetLocation::getSharedResourceDir() const
261 return getSharedRootDir() + "/res";
264 std::string WidgetLocation::getSharedDataDir() const
266 return getSharedRootDir() + "/data";
269 std::string WidgetLocation::getSharedTrustedDir() const
271 return getSharedRootDir() + "/trusted";
274 std::string WidgetLocation::getBackupSharedDir() const
276 return getBackupDir() + "/shared";