PKG_CHECK_MODULES(JSONCPP_DEPS REQUIRED jsoncpp)
PKG_CHECK_MODULES(PKGMGR_PARSER_DEPS REQUIRED pkgmgr-parser)
PKG_CHECK_MODULES(PKGMGR_INFO_DEPS REQUIRED pkgmgr-info)
+PKG_CHECK_MODULES(PKGMGR_INSTALLER_DEPS REQUIRED pkgmgr-installer)
PKG_CHECK_MODULES(SQLITE_DEPS REQUIRED sqlite3)
PKG_CHECK_MODULES(GOBJECT_DEPS REQUIRED gobject-2.0)
BuildRequires: pkgconfig(jsoncpp)
BuildRequires: pkgconfig(pkgmgr-parser)
BuildRequires: pkgconfig(pkgmgr-info)
+BuildRequires: pkgconfig(pkgmgr-installer)
BuildRequires: pkgconfig(sqlite3)
%if 0%{?gcov:1}
return bundle_.GetString("pkgid");
}
+uid_t ThemeInfo::GetUid() const {
+ std::string uid_str = bundle_.GetString("uid");
+ return std::stoi(uid_str);
+}
+
std::string ThemeInfo::GetVersion() const {
return bundle_.GetString("version");
}
#define THEME_LOADER_THEME_INFO_H_
#include <bundle_cpp.h>
+#include <sys/types.h>
#include <map>
#include <memory>
std::string GetId() const;
std::string GetPkgid() const;
+ uid_t GetUid() const;
std::string GetVersion() const;
std::string GetToolVersion() const;
std::string GetTitle() const;
GLIB_DEPS
JSONCPP_DEPS
PKGMGR_INFO_DEPS
+ PKGMGR_INSTALLER_DEPS
PKGMGR_PARSER_DEPS
)
#include <glib.h>
#include <dlog.h>
+#include <pkgmgr_installer_info.h>
#include <pkgmgr_parser.h>
#include <pkgmgr-info.h>
+#include <sys/types.h>
#include <cstring>
#include <string>
#include "theme/utils/glist_range.h"
+#include "theme/utils/logging.h"
#include "theme_plugin/theme_parser.h"
namespace {
bool InstallTheme(const std::string& id, const std::string& pkgid,
const std::string& path) {
+ uid_t uid;
+ int r = pkgmgr_installer_info_get_target_uid(&uid);
+ if (r < 0) {
+ LOG(ERROR) << "Failed to get target uid";
+ return false;
+ }
ttm::plugin::ThemeParser parser(path);
if (!parser.Commit(ttm::plugin::ThemeParser::ThemeOperation::ADD,
- parser.Inflate(id, pkgid)))
+ parser.Inflate(id, pkgid, uid)))
return false;
return true;
}
bool UpgradeTheme(const std::string& id, const std::string& pkgid,
const std::string& path) {
+ uid_t uid;
+ int r = pkgmgr_installer_info_get_target_uid(&uid);
+ if (r < 0) {
+ LOG(ERROR) << "Failed to get target uid";
+ return false;
+ }
ttm::plugin::ThemeParser parser(path);
if (!parser.Commit(ttm::plugin::ThemeParser::ThemeOperation::UPDATE,
- parser.Inflate(id, pkgid)))
+ parser.Inflate(id, pkgid, uid)))
return false;
return true;
}
bool UninstallTheme(const std::string& id, const std::string& pkgid,
const std::string& path) {
+ uid_t uid;
+ int r = pkgmgr_installer_info_get_target_uid(&uid);
+ if (r < 0) {
+ LOG(ERROR) << "Failed to get target uid";
+ return false;
+ }
ttm::plugin::ThemeParser parser(path);
if (!parser.Commit(ttm::plugin::ThemeParser::ThemeOperation::REMOVE,
- parser.Inflate(id, pkgid)))
+ parser.Inflate(id, pkgid, uid)))
return false;
return true;
}
#include "theme_plugin/theme_parser.h"
#include <json/json.h>
+#include <sys/types.h>
#include <fstream>
#include <streambuf>
namespace plugin {
loader::ThemeInfo ThemeParser::Inflate(const std::string id,
- const std::string pkgid) {
+ const std::string pkgid, uid_t uid) {
Json::CharReaderBuilder rbuilder;
rbuilder["collectComments"] = false;
// FIXME: this parser should parse more theme information.
ThemeInfoBuilder builder("testid");
builder.PutString("pkgid", pkgid).
+ PutString("uid", std::to_string(uid)).
PutString("version", root["version"].asString()).
PutString("tool_version", root["tool_version"].asString()).
PutString("title", root["header"]["title"].asString()).
#ifndef THEME_PLUGIN_THEME_PARSER_H_
#define THEME_PLUGIN_THEME_PARSER_H_
+#include <sys/types.h>
+
#include <memory>
#include <string>
};
explicit ThemeParser(const std::string& path) : path_(path) {}
- loader::ThemeInfo Inflate(const std::string id, const std::string pkgid);
+ loader::ThemeInfo Inflate(const std::string id, const std::string pkgid,
+ uid_t uid);
int Commit(ThemeOperation operation, const loader::ThemeInfo& theme);
private:
virtual void SetUp() {
b_.Add("id", "testid");
b_.Add("pkgid", "testpkgid");
+ b_.Add("uid", "5001");
b_.Add("version", "1.0");
b_.Add("tool_version", "1.1");
b_.Add("title", "Test");
EXPECT_EQ(info.GetPkgid(), "testpkgid");
}
+TEST_F(ThemeInfoTest, ThemeInfo_GetUid) {
+ ThemeInfo info(b_);
+
+ EXPECT_EQ(info.GetUid(), 5001);
+}
+
TEST_F(ThemeInfoTest, ThemeInfo_GetVersion) {
ThemeInfo info(b_);
tizen_base::Bundle b = info.Serialize();
EXPECT_EQ(b.GetString("id"), "testid");
EXPECT_EQ(b.GetString("pkgid"), "testpkgid");
+ EXPECT_EQ(b.GetString("uid"), "5001");
EXPECT_EQ(b.GetString("version"), "1.0");
EXPECT_EQ(b.GetString("tool_version"), "1.1");
EXPECT_EQ(b.GetString("title"), "Test");
TEST_F(ThemeParserTest, Inflate) {
ttm::plugin::ThemeParser parser("test_samples/test_theme.json");
- auto info = parser.Inflate("testid", "testpkgid");
+ auto info = parser.Inflate("testid", "testpkgid", 5001);
EXPECT_EQ(info.GetId(), "testid");
EXPECT_EQ(info.GetPkgid(), "testpkgid");
+ EXPECT_EQ(info.GetUid(), 5001);
EXPECT_EQ(info.GetVersion(), "1.0.0");
EXPECT_EQ(info.GetToolVersion(), "1.00.38.820793");
EXPECT_EQ(info.GetTitle(), "GOGO Theme");