summaryrefslogtreecommitdiff
path: root/src/components/application_manager
diff options
context:
space:
mode:
authorJackLivio <jack@livio.io>2019-01-22 22:14:09 -0500
committerJackLivio <jack@livio.io>2019-01-22 22:14:09 -0500
commit91fc054c1f3de59944c4d7030f68a7640a34316f (patch)
tree1b318b6930c1235052952df9c356992a38c3921d /src/components/application_manager
parentea3832dc24e1502858020cd5774bfd1305725f21 (diff)
downloadsdl_core-91fc054c1f3de59944c4d7030f68a7640a34316f.tar.gz
Initial regular policy implementation
Diffstat (limited to 'src/components/application_manager')
-rw-r--r--src/components/application_manager/include/application_manager/policies/policy_handler.h5
-rw-r--r--src/components/application_manager/rpc_plugins/app_service_rpc_plugin/include/app_service_rpc_plugin/app_service_hmi_command_factory.h9
-rw-r--r--src/components/application_manager/rpc_plugins/app_service_rpc_plugin/include/app_service_rpc_plugin/app_service_rpc_plugin.h4
-rw-r--r--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.h3
-rw-r--r--src/components/application_manager/rpc_plugins/app_service_rpc_plugin/include/app_service_rpc_plugin/commands/mobile/publish_app_service_request.h14
-rw-r--r--src/components/application_manager/rpc_plugins/app_service_rpc_plugin/include/app_service_rpc_plugin/commands/mobile/publish_app_service_response.h11
-rw-r--r--src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/app_service_hmi_command_factory.cc6
-rw-r--r--src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/app_service_mobile_command_factory.cc9
-rw-r--r--src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/commands/hmi/on_as_app_service_data_notification.cc3
-rw-r--r--src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/commands/hmi/on_as_app_service_data_notification_from_hmi.cc3
-rw-r--r--src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/commands/mobile/publish_app_service_request.cc36
-rw-r--r--src/components/application_manager/src/policies/policy_handler.cc10
-rw-r--r--src/components/application_manager/src/smart_object_keys.cc2
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";