diff options
author | AKalinich-Luxoft <AKalinich@luxoft.com> | 2017-10-03 12:00:11 +0300 |
---|---|---|
committer | Valerii <vmalkov@luxoft.com> | 2018-01-26 15:17:35 +0200 |
commit | 76323825d951027394fa27cfa7461e840a546f4b (patch) | |
tree | cc803c826fd0031139819f60f0ecbb63321c1f89 | |
parent | 1fe1dd2e5a680f0166e13cd506517a22c05e6a71 (diff) | |
download | sdl_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
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, |