diff options
author | JackLivio <jack@livio.io> | 2019-01-22 22:14:09 -0500 |
---|---|---|
committer | JackLivio <jack@livio.io> | 2019-01-22 22:14:09 -0500 |
commit | 91fc054c1f3de59944c4d7030f68a7640a34316f (patch) | |
tree | 1b318b6930c1235052952df9c356992a38c3921d /src/components/application_manager | |
parent | ea3832dc24e1502858020cd5774bfd1305725f21 (diff) | |
download | sdl_core-91fc054c1f3de59944c4d7030f68a7640a34316f.tar.gz |
Initial regular policy implementation
Diffstat (limited to 'src/components/application_manager')
13 files changed, 82 insertions, 33 deletions
diff --git a/src/components/application_manager/include/application_manager/policies/policy_handler.h b/src/components/application_manager/include/application_manager/policies/policy_handler.h index 8ee5ff64f6..6322f4723b 100644 --- a/src/components/application_manager/include/application_manager/policies/policy_handler.h +++ b/src/components/application_manager/include/application_manager/policies/policy_handler.h @@ -447,6 +447,11 @@ class PolicyHandler : public PolicyHandlerInterface, void OnSetCloudAppProperties( const smart_objects::SmartObject& message) OVERRIDE; + void GetAppServiceParameters(const std::string& policy_app_id, + std::string& app_service_name, + std::string& service_type, + std::vector<uint64_t>& handled_rpcs) const; + virtual void OnUpdateHMIAppType( std::map<std::string, StringArray> app_hmi_types) OVERRIDE; diff --git a/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/include/app_service_rpc_plugin/app_service_hmi_command_factory.h b/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/include/app_service_rpc_plugin/app_service_hmi_command_factory.h index dfe333b881..c42b64f559 100644 --- a/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/include/app_service_rpc_plugin/app_service_hmi_command_factory.h +++ b/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/include/app_service_rpc_plugin/app_service_hmi_command_factory.h @@ -43,11 +43,10 @@ namespace app_mngr = application_manager; */ class AppServiceHmiCommandFactory : public app_mngr::CommandFactory { public: - AppServiceHmiCommandFactory( - app_mngr::ApplicationManager& application_manager, - app_mngr::rpc_service::RPCService& rpc_service, - app_mngr::HMICapabilities& hmi_capabilities, - policy::PolicyHandlerInterface& policy_handler); + AppServiceHmiCommandFactory(app_mngr::ApplicationManager& application_manager, + app_mngr::rpc_service::RPCService& rpc_service, + app_mngr::HMICapabilities& hmi_capabilities, + policy::PolicyHandlerInterface& policy_handler); app_mngr::CommandSharedPtr CreateCommand( const app_mngr::commands::MessageSharedPtr& message, diff --git a/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/include/app_service_rpc_plugin/app_service_rpc_plugin.h b/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/include/app_service_rpc_plugin/app_service_rpc_plugin.h index 398711b7a7..1113911a22 100644 --- a/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/include/app_service_rpc_plugin/app_service_rpc_plugin.h +++ b/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/include/app_service_rpc_plugin/app_service_rpc_plugin.h @@ -36,7 +36,7 @@ #include "application_manager/command_factory.h" namespace app_service_rpc_plugin { -//class AppServiceAppExtension; +// class AppServiceAppExtension; namespace app_mngr = application_manager; namespace plugins = application_manager::plugin_manager; @@ -67,7 +67,7 @@ class AppServiceRpcPlugin : public plugins::RPCPlugin { * @param ext application extension */ // TODO - //void ProcessResumptionSubscription(app_mngr::Application& app, + // void ProcessResumptionSubscription(app_mngr::Application& app, // AppServiceAppExtension& ext); private: diff --git a/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/include/app_service_rpc_plugin/commands/hmi/on_as_app_service_data_notification_from_hmi.h b/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/include/app_service_rpc_plugin/commands/hmi/on_as_app_service_data_notification_from_hmi.h index df4cec9287..7ca20d692a 100644 --- a/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/include/app_service_rpc_plugin/commands/hmi/on_as_app_service_data_notification_from_hmi.h +++ b/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/include/app_service_rpc_plugin/commands/hmi/on_as_app_service_data_notification_from_hmi.h @@ -44,7 +44,8 @@ namespace commands { /** * @brief OnASAppServiceDataNotificationFromHMI command class **/ -class OnASAppServiceDataNotificationFromHMI : public app_mngr::commands::NotificationFromHMI { +class OnASAppServiceDataNotificationFromHMI + : public app_mngr::commands::NotificationFromHMI { public: /** * @brief OnASAppServiceDataNotificationFromHMI class constructor diff --git a/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/include/app_service_rpc_plugin/commands/mobile/publish_app_service_request.h b/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/include/app_service_rpc_plugin/commands/mobile/publish_app_service_request.h index a798bed613..ede7afbc73 100644 --- a/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/include/app_service_rpc_plugin/commands/mobile/publish_app_service_request.h +++ b/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/include/app_service_rpc_plugin/commands/mobile/publish_app_service_request.h @@ -44,20 +44,18 @@ namespace commands { /** * @brief PublishAppServiceRequest command class **/ -class PublishAppServiceRequest - : public app_mngr::commands::CommandRequestImpl { +class PublishAppServiceRequest : public app_mngr::commands::CommandRequestImpl { public: /** * @brief PublishAppServiceRequest class constructor * * @param message Incoming SmartObject message **/ - PublishAppServiceRequest( - const app_mngr::commands::MessageSharedPtr& message, - app_mngr::ApplicationManager& application_manager, - app_mngr::rpc_service::RPCService& rpc_service, - app_mngr::HMICapabilities& hmi_capabilities, - policy::PolicyHandlerInterface& policy_handle); + PublishAppServiceRequest(const app_mngr::commands::MessageSharedPtr& message, + app_mngr::ApplicationManager& application_manager, + app_mngr::rpc_service::RPCService& rpc_service, + app_mngr::HMICapabilities& hmi_capabilities, + policy::PolicyHandlerInterface& policy_handle); /** * @brief PublishAppServiceRequest class destructor diff --git a/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/include/app_service_rpc_plugin/commands/mobile/publish_app_service_response.h b/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/include/app_service_rpc_plugin/commands/mobile/publish_app_service_response.h index 27b4d6ad2f..a11399c9e1 100644 --- a/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/include/app_service_rpc_plugin/commands/mobile/publish_app_service_response.h +++ b/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/include/app_service_rpc_plugin/commands/mobile/publish_app_service_response.h @@ -52,12 +52,11 @@ class PublishAppServiceResponse * * @param message Incoming SmartObject message **/ - PublishAppServiceResponse( - const app_mngr::commands::MessageSharedPtr& message, - app_mngr::ApplicationManager& application_manager, - app_mngr::rpc_service::RPCService& rpc_service, - app_mngr::HMICapabilities& hmi_capabilities, - policy::PolicyHandlerInterface& policy_handle); + PublishAppServiceResponse(const app_mngr::commands::MessageSharedPtr& message, + app_mngr::ApplicationManager& application_manager, + app_mngr::rpc_service::RPCService& rpc_service, + app_mngr::HMICapabilities& hmi_capabilities, + policy::PolicyHandlerInterface& policy_handle); /** * @brief PublishAppServiceResponse class destructor diff --git a/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/app_service_hmi_command_factory.cc b/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/app_service_hmi_command_factory.cc index 746636aff0..e741d7bfd4 100644 --- a/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/app_service_hmi_command_factory.cc +++ b/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/app_service_hmi_command_factory.cc @@ -88,9 +88,9 @@ bool AppServiceHmiCommandFactory::IsAbleToProcess( const int32_t function_id, const app_mngr::commands::Command::CommandSource source) const { UNUSED(source); - return buildCommandCreator( - function_id, hmi_apis::messageType::INVALID_ENUM, source) - .CanBeCreated(); + return buildCommandCreator(function_id, + hmi_apis::messageType::INVALID_ENUM, + source).CanBeCreated(); } app_mngr::CommandCreator& AppServiceHmiCommandFactory::buildCommandCreator( diff --git a/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/app_service_mobile_command_factory.cc b/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/app_service_mobile_command_factory.cc index 3b4e3490f6..e0e667e975 100644 --- a/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/app_service_mobile_command_factory.cc +++ b/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/app_service_mobile_command_factory.cc @@ -89,9 +89,9 @@ bool AppServiceMobileCommandFactory::IsAbleToProcess( const int32_t function_id, const app_mngr::commands::Command::CommandSource source) const { UNUSED(source); - return buildCommandCreator( - function_id, mobile_apis::messageType::INVALID_ENUM, source) - .CanBeCreated(); + return buildCommandCreator(function_id, + mobile_apis::messageType::INVALID_ENUM, + source).CanBeCreated(); } app_mngr::CommandCreator& AppServiceMobileCommandFactory::buildCommandCreator( @@ -108,7 +108,8 @@ app_mngr::CommandCreator& AppServiceMobileCommandFactory::buildCommandCreator( : factory.GetCreator<commands::PublishAppServiceResponse>(); case mobile_apis::FunctionID::OnAppServiceDataID: return app_mngr::commands::Command::CommandSource::SOURCE_MOBILE == source - ? factory.GetCreator<commands::OnAppServiceDataNotificationFromMobile>() + ? factory.GetCreator< + commands::OnAppServiceDataNotificationFromMobile>() : factory.GetCreator<commands::OnAppServiceDataNotification>(); default: LOG4CXX_WARN(logger_, "Unsupported function_id: " << function_id); diff --git a/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/commands/hmi/on_as_app_service_data_notification.cc b/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/commands/hmi/on_as_app_service_data_notification.cc index e590d63a05..0cd269b04e 100644 --- a/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/commands/hmi/on_as_app_service_data_notification.cc +++ b/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/commands/hmi/on_as_app_service_data_notification.cc @@ -57,8 +57,7 @@ OnASAppServiceDataNotification::OnASAppServiceDataNotification( } } -OnASAppServiceDataNotification:: - ~OnASAppServiceDataNotification() {} +OnASAppServiceDataNotification::~OnASAppServiceDataNotification() {} void OnASAppServiceDataNotification::Run() { LOG4CXX_AUTO_TRACE(logger_); diff --git a/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/commands/hmi/on_as_app_service_data_notification_from_hmi.cc b/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/commands/hmi/on_as_app_service_data_notification_from_hmi.cc index 3dea2a6a12..01a8e817a2 100644 --- a/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/commands/hmi/on_as_app_service_data_notification_from_hmi.cc +++ b/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/commands/hmi/on_as_app_service_data_notification_from_hmi.cc @@ -57,7 +57,8 @@ OnASAppServiceDataNotificationFromHMI::OnASAppServiceDataNotificationFromHMI( } } -OnASAppServiceDataNotificationFromHMI::~OnASAppServiceDataNotificationFromHMI() {} +OnASAppServiceDataNotificationFromHMI:: + ~OnASAppServiceDataNotificationFromHMI() {} void OnASAppServiceDataNotificationFromHMI::Run() { LOG4CXX_AUTO_TRACE(logger_); diff --git a/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/commands/mobile/publish_app_service_request.cc b/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/commands/mobile/publish_app_service_request.cc index e5f7c40471..05fe75c887 100644 --- a/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/commands/mobile/publish_app_service_request.cc +++ b/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/commands/mobile/publish_app_service_request.cc @@ -78,6 +78,42 @@ void PublishAppServiceRequest::Run() { service_record[strings::service_published] = true; service_record[strings::service_active] = true; + std::string requested_service_name = + (*message_)[strings::msg_params][strings::app_service_manifest] + [strings::service_name].asString(); + std::string requested_service_type = + (*message_)[strings::msg_params][strings::app_service_manifest] + [strings::service_type].asString(); + smart_objects::SmartArray* requested_handled_rpcs = + (*message_)[strings::msg_params][strings::app_service_manifest] + [strings::handled_rpcs].asArray(); + + std::string service_name = std::string(); + std::string service_type = std::string(); + std::vector<uint64_t> handled_rpcs = {}; + ApplicationSharedPtr app = application_manager_.application(connection_key()); + + policy_handler_.GetAppServiceParameters( + app->policy_app_id(), service_name, service_type, handled_rpcs); + + if (service_name != requested_service_name) { + SendResponse(false, mobile_apis::Result::DISALLOWED, NULL, NULL); + } + + if (service_type != requested_service_type) { + SendResponse(false, mobile_apis::Result::DISALLOWED, NULL, NULL); + } + + for (auto requested_it = requested_handled_rpcs->begin(); + requested_it != requested_handled_rpcs->end(); + ++requested_it) { + auto find_result = std::find( + handled_rpcs.begin(), handled_rpcs.end(), requested_it->asUInt()); + if (find_result == handled_rpcs.end()) { + SendResponse(false, mobile_apis::Result::DISALLOWED, NULL, NULL); + } + } + response_params[strings::app_service_record] = service_record; SendResponse(true, mobile_apis::Result::SUCCESS, NULL, &response_params); diff --git a/src/components/application_manager/src/policies/policy_handler.cc b/src/components/application_manager/src/policies/policy_handler.cc index 3be3ef0da7..16433f7637 100644 --- a/src/components/application_manager/src/policies/policy_handler.cc +++ b/src/components/application_manager/src/policies/policy_handler.cc @@ -1937,6 +1937,16 @@ void PolicyHandler::OnSetCloudAppProperties( } } +void PolicyHandler::GetAppServiceParameters( + const std::string& policy_app_id, + std::string& app_service_name, + std::string& service_type, + std::vector<uint64_t>& handled_rpcs) const { + POLICY_LIB_CHECK_VOID(); + policy_manager_->GetAppServiceParameters( + policy_app_id, app_service_name, service_type, handled_rpcs); +} + uint32_t PolicyHandler::HeartBeatTimeout(const std::string& app_id) const { POLICY_LIB_CHECK(0); return policy_manager_->HeartBeatTimeout(app_id); diff --git a/src/components/application_manager/src/smart_object_keys.cc b/src/components/application_manager/src/smart_object_keys.cc index 00dabb9480..1b6dfe2b8b 100644 --- a/src/components/application_manager/src/smart_object_keys.cc +++ b/src/components/application_manager/src/smart_object_keys.cc @@ -274,7 +274,7 @@ const char* service_type = "serviceType"; const char* service_icon = "serviceIcon"; const char* allow_app_consumers = "allowAppConsumers"; const char* uri_prefix = "uriPrefix"; -const char* uri_scheme = "uriScheme"; +const char* uri_scheme = "uriScheme"; const char* rpc_spec_version = "rpcSpecVersion"; const char* handled_rpcs = "handledRPCs"; const char* media_service_manifest = "mediaServiceManifest"; |