From a6ff06e40ab9f8d594e2fe81cd90fe8c42550e79 Mon Sep 17 00:00:00 2001 From: Andrzej Popowski Date: Mon, 27 Apr 2015 13:45:46 +0200 Subject: [PATCH] [systeminfo] - Change systemmanager privilege to telephony privilege Change-Id: Id7e01460bfbb359cc830208f39e34d61f2ad0fc7 Signed-off-by: Andrzej Popowski --- src/common/extension.h | 15 +++++++++++++++ src/systeminfo/systeminfo_api.js | 9 ++++++--- src/utils/utils_api.js | 11 +++++++++++ src/utils/utils_instance.cc | 10 ++++++++++ src/utils/utils_instance.h | 1 + 5 files changed, 43 insertions(+), 3 deletions(-) diff --git a/src/common/extension.h b/src/common/extension.h index 61f8348f..bbecd616 100644 --- a/src/common/extension.h +++ b/src/common/extension.h @@ -156,6 +156,21 @@ do { \ } \ } while (0) +#define CHECK_BACKWARD_COMPABILITY_PRIVILEGE_ACCESS(current_priv, prev_priv, out) \ +do { \ + auto ret = common::tools::CheckAccess(current_priv); \ + auto ret2 = common::tools::CheckAccess(prev_priv); \ +\ + if (!ret && ret2) { \ + ret = ret2; \ + } \ +\ + if (!ret) { \ + common::tools::ReportError(ret, out); \ + return; \ + } \ +} while (0) + } // namespace tools } // namespace common diff --git a/src/systeminfo/systeminfo_api.js b/src/systeminfo/systeminfo_api.js index 60903a09..e836c080 100644 --- a/src/systeminfo/systeminfo_api.js +++ b/src/systeminfo/systeminfo_api.js @@ -557,7 +557,8 @@ function SystemInfoCellularNetwork(data) { isFlightMode : {value: data.isFligthMode, writable: false, enumerable: true}, imei : { get: function() { - xwalk.utils.checkPrivilegeAccess(_PRIVILEGE_TELEPHONY); + xwalk.utils.checkBackwardCompabilityPrivilegeAccess(_PRIVILEGE_TELEPHONY, + _PRIVILEGE_SYSTEM); return data.imei; }, set: function() {}, @@ -587,7 +588,8 @@ function SystemInfoSIM(data) { }, msisdn : { get: function() { - xwalk.utils.checkPrivilegeAccess(_PRIVILEGE_TELEPHONY); + xwalk.utils.checkBackwardCompabilityPrivilegeAccess(_PRIVILEGE_TELEPHONY, + _PRIVILEGE_SYSTEM); return data.msisdn; }, set: function() {}, @@ -619,7 +621,8 @@ function SystemInfoSIM(data) { }, msin : { get: function() { - xwalk.utils.checkPrivilegeAccess(_PRIVILEGE_TELEPHONY); + xwalk.utils.checkBackwardCompabilityPrivilegeAccess(_PRIVILEGE_TELEPHONY, + _PRIVILEGE_SYSTEM); return data.msin; }, set: function() {}, diff --git a/src/utils/utils_api.js b/src/utils/utils_api.js index d0df4877..145ad2aa 100644 --- a/src/utils/utils_api.js +++ b/src/utils/utils_api.js @@ -146,6 +146,17 @@ Utils.prototype.checkPrivilegeAccess = function(privilege) { } }; +Utils.prototype.checkBackwardCompabilityPrivilegeAccess = function(current_privilege, previous_privilege) { + var result = native_.callSync('Utils_checkBackwardPrivilegePrivilegeAccess', { + current_privilege : _toString(current_privilege), + previous_privilege : _toString(previous_privilege), + }); + + if (native_.isFailure(result)) { + throw native_.getErrorObject(result); + } +}; + ///////////////////////////////////////////////////////////////////////////// /** @constructor */ var Type = function() {}; diff --git a/src/utils/utils_instance.cc b/src/utils/utils_instance.cc index 858bf3fe..9eb198bd 100644 --- a/src/utils/utils_instance.cc +++ b/src/utils/utils_instance.cc @@ -18,6 +18,7 @@ UtilsInstance::UtilsInstance() { RegisterSyncHandler(c, std::bind(&UtilsInstance::x, this, _1, _2)); REGISTER_SYNC("Utils_checkPrivilegeAccess", CheckPrivilegeAccess); + REGISTER_SYNC("Utils_checkBackwardCompabilityPrivilegeAccess", CheckBackwardCompabilityPrivilegeAccess); #undef REGISTER_SYNC #undef REGISTER_ASYNC @@ -29,5 +30,14 @@ void UtilsInstance::CheckPrivilegeAccess(const picojson::value& args, picojson:: ReportSuccess(out); } +void UtilsInstance::CheckBackwardCompabilityPrivilegeAccess(const picojson::value& args, + picojson::object& out) { + const auto& current_priv = args.get("current_privilege").to_str(); + const auto& prev_priv = args.get("previous_privilege").to_str(); + + CHECK_BACKWARD_COMPABILITY_PRIVILEGE_ACCESS(current_priv, prev_priv, &out); + ReportSuccess(out); +} + } // namespace utils } // namespace extension diff --git a/src/utils/utils_instance.h b/src/utils/utils_instance.h index c08332cc..f97468cc 100644 --- a/src/utils/utils_instance.h +++ b/src/utils/utils_instance.h @@ -18,6 +18,7 @@ class UtilsInstance : public common::ParsedInstance { private: void CheckPrivilegeAccess(const picojson::value& args, picojson::object& out); + void CheckBackwardCompabilityPrivilegeAccess(const picojson::value& args, picojson::object& out); }; } // namespace utils } // namespace extension -- 2.34.1