summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAKalinich-Luxoft <AKalinich@luxoft.com>2017-10-03 12:00:11 +0300
committerValerii <vmalkov@luxoft.com>2018-01-26 15:17:35 +0200
commit76323825d951027394fa27cfa7461e840a546f4b (patch)
treecc803c826fd0031139819f60f0ecbb63321c1f89
parent1fe1dd2e5a680f0166e13cd506517a22c05e6a71 (diff)
downloadsdl_core-76323825d951027394fa27cfa7461e840a546f4b.tar.gz
Fix info message param for different disallowed param cases
Added generating of info message depending on check permissions result: - for disallowed rpc - for all disallowed params in rpc - for partially disallowed params in rpc
-rw-r--r--src/components/application_manager/include/application_manager/commands/command_impl.h4
-rw-r--r--src/components/application_manager/src/application_manager_impl.cc3
-rw-r--r--src/components/application_manager/src/commands/command_request_impl.cc31
-rw-r--r--src/components/include/application_manager/application_manager.h3
4 files changed, 38 insertions, 3 deletions
diff --git a/src/components/application_manager/include/application_manager/commands/command_impl.h b/src/components/application_manager/include/application_manager/commands/command_impl.h
index 1ad6a6f2e6..8c67156215 100644
--- a/src/components/application_manager/include/application_manager/commands/command_impl.h
+++ b/src/components/application_manager/include/application_manager/commands/command_impl.h
@@ -46,6 +46,10 @@ namespace application_manager {
* table
*/
struct CommandParametersPermissions {
+ CommandParametersPermissions()
+ : permit_result(PermitResult::kRpcDisallowed) {}
+
+ PermitResult permit_result;
RPCParams allowed_params;
RPCParams disallowed_params;
RPCParams undefined_params;
diff --git a/src/components/application_manager/src/application_manager_impl.cc b/src/components/application_manager/src/application_manager_impl.cc
index ba92382f4d..2ebc659e5e 100644
--- a/src/components/application_manager/src/application_manager_impl.cc
+++ b/src/components/application_manager/src/application_manager_impl.cc
@@ -3351,6 +3351,7 @@ mobile_apis::Result::eType ApplicationManagerImpl::CheckPolicyPermissions(
GetPolicyHandler().CheckPermissions(app, function_id, rpc_params, result);
if (NULL != params_permissions) {
+ params_permissions->permit_result = result.hmi_level_permitted;
params_permissions->allowed_params = result.list_of_allowed_params;
params_permissions->disallowed_params = result.list_of_disallowed_params;
params_permissions->undefined_params = result.list_of_undefined_params;
@@ -3376,8 +3377,10 @@ mobile_apis::Result::eType ApplicationManagerImpl::CheckPolicyPermissions(
switch (result.hmi_level_permitted) {
case policy::kRpcDisallowed:
+ case policy::kRpcAllParamsDisallowed:
return mobile_apis::Result::DISALLOWED;
case policy::kRpcUserDisallowed:
+ case policy::kRpcAllParamsUserDisallowed:
return mobile_apis::Result::USER_DISALLOWED;
default:
return mobile_apis::Result::INVALID_ENUM;
diff --git a/src/components/application_manager/src/commands/command_request_impl.cc b/src/components/application_manager/src/commands/command_request_impl.cc
index a2e4e44ec3..d283c648a9 100644
--- a/src/components/application_manager/src/commands/command_request_impl.cc
+++ b/src/components/application_manager/src/commands/command_request_impl.cc
@@ -105,6 +105,25 @@ const std::string CreateInfoForUnsupportedResult(
}
}
+std::string CreateInfoForPolicyPermitResult(const PermitResult value) {
+ switch (value) {
+ case PermitResult::kRpcDisallowed: {
+ return "RPC is disallowed by Policies";
+ }
+ case PermitResult::kRpcUserDisallowed: {
+ return "RPC is disallowed by the User";
+ }
+ case PermitResult::kRpcAllParamsDisallowed: {
+ return "Requested parameters are disallowed by Policies";
+ }
+ case PermitResult::kRpcAllParamsUserDisallowed: {
+ return "Requested parameters are disallowed by User";
+ }
+ default:
+ return std::string();
+ }
+}
+
bool CheckResultCode(const ResponseInfo& first, const ResponseInfo& second) {
if (first.is_ok && second.is_unsupported_resource) {
return true;
@@ -614,7 +633,11 @@ bool CommandRequestImpl::CheckAllowedParameters() {
check_result,
correlation_id(),
app->app_id());
-
+ std::string info =
+ CreateInfoForPolicyPermitResult(parameters_permissions_.permit_result);
+ if (!info.empty()) {
+ (*response)[strings::msg_params][strings::info] = info;
+ }
application_manager_.SendMessageToMobile(response);
return false;
}
@@ -753,7 +776,11 @@ void CommandRequestImpl::AddDisallowedParametersToInfo(
}
if (!info.empty()) {
- info += " disallowed by policies.";
+ const uint32_t params_count =
+ removed_parameters_permissions_.disallowed_params.size() +
+ removed_parameters_permissions_.undefined_params.size();
+ info += params_count > 1 ? " parameters are " : " parameter is ";
+ info += "disallowed by Policies";
if (!response[strings::msg_params][strings::info].asString().empty()) {
// If we already have info add info about disallowed params to it
diff --git a/src/components/include/application_manager/application_manager.h b/src/components/include/application_manager/application_manager.h
index c3193d65e2..cc7c4e746b 100644
--- a/src/components/include/application_manager/application_manager.h
+++ b/src/components/include/application_manager/application_manager.h
@@ -85,8 +85,9 @@ class EventDispatcher;
class Application;
class StateControllerImpl;
-struct CommandParametersPermissions;
using policy::RPCParams;
+using policy::PermitResult;
+struct CommandParametersPermissions;
typedef std::vector<ApplicationSharedPtr> AppSharedPtrs;
struct ApplicationsAppIdSorter {
bool operator()(const ApplicationSharedPtr lhs,