From 04ce61f1db1f72818e982cd1cb4fb251546c2ab4 Mon Sep 17 00:00:00 2001
From: Pawel Andruszkiewicz
Date: Mon, 22 Dec 2014 15:21:40 +0100
Subject: [PATCH] [Archive] Added support for widget paths.
[Verification] TCT pass rate 80/106.
Change-Id: If0e2c62fd63aaf6ec07704deb3abe35b75ac7880
Signed-off-by: Pawel Andruszkiewicz
---
src/archive/archive_api.js | 17 +++++++++++++++++
src/archive/archive_instance.cc | 34 +++++++++++++++++++++++++++++++++
src/archive/archive_instance.h | 3 +++
3 files changed, 54 insertions(+)
diff --git a/src/archive/archive_api.js b/src/archive/archive_api.js
index 0d0e71c8..c54bdb89 100644
--- a/src/archive/archive_api.js
+++ b/src/archive/archive_api.js
@@ -29,6 +29,23 @@ CommonFS.cacheVirtualToReal = {
}
};
+function _initializeCache() {
+ var result = bridge.sync({
+ cmd: 'Filesystem_getWidgetPaths'
+ });
+ CommonFS.cacheVirtualToReal['wgt-package'] = {
+ path: result['wgt-package']
+ };
+ CommonFS.cacheVirtualToReal['wgt-private'] = {
+ path: result['wgt-private']
+ };
+ CommonFS.cacheVirtualToReal['wgt-private-tmp'] = {
+ path: result['wgt-private-tmp']
+ };
+}
+
+_initializeCache();
+
CommonFS.toRealPath = function(aPath) {
var _fileRealPath = '', _uriPrefix = 'file://', i;
if (aPath.indexOf(_uriPrefix) === 0) {
diff --git a/src/archive/archive_instance.cc b/src/archive/archive_instance.cc
index 13cbc0da..dc88057e 100644
--- a/src/archive/archive_instance.cc
+++ b/src/archive/archive_instance.cc
@@ -10,6 +10,9 @@
#include
#include
+#include
+
+#include "common/current_application.h"
#include "common/picojson.h"
#include "common/logger.h"
#include "common/platform_exception.h"
@@ -24,6 +27,7 @@ namespace archive {
using namespace common;
+
ArchiveInstance& ArchiveInstance::getInstance()
{
static ArchiveInstance instance;
@@ -50,6 +54,8 @@ ArchiveInstance::ArchiveInstance() {
REGISTER_ASYNC("ArchiveFileEntry_extract", Extract);
+ REGISTER_SYNC("Filesystem_getWidgetPaths", GetWidgetPaths);
+
#undef REGISTER_ASYNC
#undef REGISTER_SYNC
}
@@ -411,5 +417,33 @@ void ArchiveInstance::Extract(const picojson::value& args, picojson::object& out
}
}
+void ArchiveInstance::GetWidgetPaths(const picojson::value& args, picojson::object& out) {
+ char *root_path = NULL;
+ std::string pkg_id = CurrentApplication::GetInstance().GetPackageId();
+
+ pkgmgrinfo_pkginfo_h handle = NULL;
+ if (PMINFO_R_OK != pkgmgrinfo_pkginfo_get_pkginfo(pkg_id.c_str(), &handle)) {
+ throw UnknownException("Error while getting package info");
+ }
+
+ if (PMINFO_R_OK != pkgmgrinfo_pkginfo_get_root_path(handle, &root_path)) {
+ throw UnknownException("Error while getting package info");
+ }
+
+ // Construction of the response
+ std::string root(root_path);
+ LoggerD("root path: %s", root_path);
+
+ pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
+
+ picojson::value result{picojson::object()};
+ auto& result_obj = result.get();
+ result_obj.insert(std::make_pair("wgt-package", root + "/res/wgt"));
+ result_obj.insert(std::make_pair("wgt-private", root + "/data"));
+ result_obj.insert(std::make_pair("wgt-private-tmp", root + "/tmp"));
+
+ ReportSuccess(result, out);
+}
+
} // namespace archive
} // namespace extension
diff --git a/src/archive/archive_instance.h b/src/archive/archive_instance.h
index e21ec5f4..6cdfe149 100644
--- a/src/archive/archive_instance.h
+++ b/src/archive/archive_instance.h
@@ -33,6 +33,9 @@ private:
/* ArchiveFileEntry methods */
void Extract(const picojson::value& args, picojson::object& out);
+
+ /* Filesystem related method */
+ void GetWidgetPaths(const picojson::value& args, picojson::object& out);
};
} // namespace archive
--
2.34.1