}
if (result['status'] == 'success') {
- if (result['result']) {
+ if (undefined !== result['result']) {
return result['result'];
}
return true;
function PackageInformation(obj) {
var lastModified = obj.lastModified;
obj.lastModified = new Date(lastModified);
- SetReadOnlyProperty(obj, 'id'); // read only property
- SetReadOnlyProperty(obj, 'name'); // read only property
- SetReadOnlyProperty(obj, 'iconPath'); // read only property
- SetReadOnlyProperty(obj, 'version'); // read only property
- SetReadOnlyProperty(obj, 'totalSize'); // read only property
- SetReadOnlyProperty(obj, 'dataSize'); // read only property
- SetReadOnlyProperty(obj, 'lastModified'); // read only property
- SetReadOnlyProperty(obj, 'author'); // read only property
- SetReadOnlyProperty(obj, 'description'); // read only property
- SetReadOnlyProperty(obj, 'appIds'); // read only property
-
- return obj;
+
+ SetReadOnlyProperty(this, 'id', obj.id); // read only property
+ SetReadOnlyProperty(this, 'name', obj.name); // read only property
+ SetReadOnlyProperty(this, 'iconPath', obj.iconPath); // read only property
+ SetReadOnlyProperty(this, 'version', obj.version); // read only property
+ SetReadOnlyProperty(this, 'lastModified', obj.lastModified); // read only property
+ SetReadOnlyProperty(this, 'author', obj.author); // read only property
+ SetReadOnlyProperty(this, 'description', obj.description); // read only property
+ SetReadOnlyProperty(this, 'appIds', obj.appIds); // read only property
+
+ var totalSize;
+ var dataSize;
+
+ Object.defineProperty(this, 'totalSize', {
+ enumerable: true,
+ set: function() {},
+ get: function() {
+ if (undefined === totalSize) {
+ try {
+ totalSize = callNative('PackageManager_getTotalSize', {id: this.id});
+ } catch (e) {
+ totalSize = -1;
+ }
+ }
+ return totalSize;
+ }
+ });
+
+ Object.defineProperty(this, 'dataSize', {
+ enumerable: true,
+ set: function() {},
+ get: function() {
+ if (undefined === dataSize) {
+ try {
+ dataSize = callNative('PackageManager_getDataSize', {id: this.id});
+ } catch (e) {
+ dataSize = -1;
+ }
+ }
+ return dataSize;
+ }
+ });
}
function PackageManager() {
function(result) {
if (result.status == 'success') {
for (var i = 0; i < result.informationArray.length; i++) {
- result.informationArray[i] = PackageInformation(result.informationArray[i]);
+ result.informationArray[i] = new PackageInformation(result.informationArray[i]);
}
args.successCallback(result.informationArray);
} else if (result.status == 'error') {
try {
var syncResult = callNative('PackageManager_getPackageInfo', nativeParam);
- return PackageInformation(syncResult);
+ return new PackageInformation(syncResult);
} catch (e) {
throw e;
}
nativeParam,
function(result) {
if (result.status == 'installed') {
- args.eventCallback.oninstalled(PackageInformation(result.info));
+ args.eventCallback.oninstalled(new PackageInformation(result.info));
} else if (result.status == 'updated') {
- args.eventCallback.onupdated(PackageInformation(result.info));
+ args.eventCallback.onupdated(new PackageInformation(result.info));
} else if (result.status == 'uninstalled') {
args.eventCallback.onuninstalled(result.id);
}
#include <functional>
#include "common/logger.h"
+#include "common/tools.h"
namespace extension {
namespace package {
using common::UnknownException;
using common::NotFoundException;
+using common::ErrorCode;
+using common::PlatformResult;
+using common::tools::ReportError;
+using common::tools::ReportSuccess;
+
#define REPORT_ERROR(out, exception) \
out["status"] = picojson::value("error"); \
out["error"] = exception.ToJSON();
return false;
}
- pkgmgr_client *pc = pkgmgr_client_new(PC_REQUEST);
- if ( pc == NULL ) {
- LoggerE("Fail to create pkgmgr client");
- return false;
- } else {
- int ret = pkgmgr_client_request_service(PM_REQUEST_GET_SIZE,
- PM_GET_TOTAL_SIZE, pc, NULL, id, NULL, NULL, NULL);
- if ( ret < 0 ) {
- LoggerE("Fail to get total size");
- return false;
- } else {
- LoggerD("totalSize: [%d]", ret);
- out["totalSize"] = picojson::value(static_cast<double>(ret));
- }
-
- ret = pkgmgr_client_request_service(PM_REQUEST_GET_SIZE, PM_GET_DATA_SIZE,
- pc, NULL, id, NULL, NULL, NULL);
- if ( ret < 0 ) {
- LoggerE("Fail to get data size");
- return false;
- } else {
- LoggerD("dataSize: [%d]", ret);
- out["dataSize"] = picojson::value(static_cast<double>(ret));
- }
- }
-
picojson::array array_data;
ret = package_info_foreach_app_from_package(package_info,
PACKAGE_INFO_ALLAPP, PackageAppInfoCb, &array_data);
return true;
}
+namespace {
+
+void GetSize(const std::string& id, int service_mode, picojson::object* out) {
+ LoggerD("Enter");
+ pkgmgr_client* pc = pkgmgr_client_new(PC_REQUEST);
+ int size = pkgmgr_client_request_service(PM_REQUEST_GET_SIZE, service_mode,
+ pc,
+ NULL,
+ id.c_str(), NULL, NULL, NULL);
+ pkgmgr_client_free(pc);
+
+ if (size < 0) {
+ ReportError(PlatformResult(ErrorCode::UNKNOWN_ERR, "Failed to get size"),
+ out);
+ } else {
+ ReportSuccess(picojson::value(static_cast<double>(size)), *out);
+ }
+}
+
+} // namespace
+
+void PackageInfoProvider::GetTotalSize(const std::string& id,
+ picojson::object* out) {
+ LoggerD("Enter");
+ GetSize(id, PM_GET_TOTAL_SIZE, out);
+}
+
+void PackageInfoProvider::GetDataSize(const std::string& id,
+ picojson::object* out) {
+ LoggerD("Enter");
+ GetSize(id, PM_GET_DATA_SIZE, out);
+}
+
bool PackageInfoProvider::GetCurrentPackageId(
char** package_id) {
LoggerD("Enter");
static bool ConvertToPackageToObject(
const pkgmgrinfo_pkginfo_h info, picojson::object& out);
+ static void GetTotalSize(const std::string& id, picojson::object* out);
+ static void GetDataSize(const std::string& id, picojson::object* out);
+
private:
static bool GetCurrentPackageId(char** package_id);
};
using common::TypeMismatchException;
using common::SecurityException;
+using common::ErrorCode;
+using common::PlatformResult;
+
typedef enum _PackageThreadWorkType {
PackageThreadWorkNone = 0,
PackageThreadWorkGetPackagesInfo,
PackageManagerUnsetpackageinfoeventlistener);
REGISTER_SYNC("PackageManager_getPackageInfo",
PackageManagerGetpackageinfo);
+ REGISTER_SYNC("PackageManager_getTotalSize",
+ PackageManagerGetTotalSize);
+ REGISTER_SYNC("PackageManager_getDataSize",
+ PackageManagerGetDataSize);
#undef REGISTER_SYNC
}
}
}
+void PackageInstance::PackageManagerGetTotalSize(const picojson::value& args,
+ picojson::object& out) {
+ LoggerD("Enter");
+
+ const auto& id = args.get("id");
+
+ if (id.is<std::string>()) {
+ PackageInfoProvider::GetTotalSize(id.get<std::string>(), &out);
+ } else {
+ ReportError(PlatformResult(ErrorCode::UNKNOWN_ERR, "Missing id parameter"),
+ &out);
+ }
+}
+
+void PackageInstance::PackageManagerGetDataSize(const picojson::value& args,
+ picojson::object& out) {
+ LoggerD("Enter");
+
+ const auto& id = args.get("id");
+
+ if (id.is<std::string>()) {
+ PackageInfoProvider::GetDataSize(id.get<std::string>(), &out);
+ } else {
+ ReportError(PlatformResult(ErrorCode::UNKNOWN_ERR, "Missing id parameter"),
+ &out);
+ }
+}
+
void PackageInstance::InvokeListener(picojson::object& param) {
LoggerD("Enter");
picojson::value result = picojson::value(param);
(const picojson::value& args, picojson::object& out);
void PackageManagerGetpackageinfo
(const picojson::value& args, picojson::object& out);
+ void PackageManagerGetTotalSize(const picojson::value& args,
+ picojson::object& out);
+ void PackageManagerGetDataSize(const picojson::value& args,
+ picojson::object& out);
void PackageManagerSetpackageinfoeventlistener
(const picojson::value& args, picojson::object& out);
void PackageManagerUnsetpackageinfoeventlistener