diff options
author | JackLivio <jack@livio.io> | 2019-01-30 14:11:12 -0500 |
---|---|---|
committer | JackLivio <jack@livio.io> | 2019-01-30 14:11:12 -0500 |
commit | 59e638c2ae6722b07e70423eff9d3eb44c9581bb (patch) | |
tree | b83d53c524baf51b94c49c15800f840a29e13cc1 | |
parent | 2f5fe1b89dc6d15fb9bb2e42083db23edf3de276 (diff) | |
parent | c0bc15dbfcf78eaa3bcecb34b28fe98a5c9a1757 (diff) | |
download | sdl_core-59e638c2ae6722b07e70423eff9d3eb44c9581bb.tar.gz |
Merge remote-tracking branch 'origin/feature/base_app_services_implementation' into feature/app_service_policies
12 files changed, 54 insertions, 23 deletions
diff --git a/src/appMain/sdl_preloaded_pt.json b/src/appMain/sdl_preloaded_pt.json index 3c84fc96bd..06ab56bc39 100644 --- a/src/appMain/sdl_preloaded_pt.json +++ b/src/appMain/sdl_preloaded_pt.json @@ -574,6 +574,16 @@ }
}
},
+ "AppService":{
+ "rpcs":{
+ "PublishAppService":{
+ "hmi_levels":["BACKGROUND",
+ "FULL",
+ "LIMITED",
+ "NONE"]
+ }
+ }
+ },
"RemoteControl": {
"rpcs": {
"ButtonPress": {
@@ -2414,7 +2424,7 @@ "steal_focus": false,
"priority": "NONE",
"default_hmi": "NONE",
- "groups": ["Base-4"],
+ "groups": ["Base-4", "AppService"],
"RequestType": [],
"RequestSubType": []
},
diff --git a/src/components/application_manager/include/application_manager/app_service_manager.h b/src/components/application_manager/include/application_manager/app_service_manager.h index afbf9b8dcd..a15921d9f7 100644 --- a/src/components/application_manager/include/application_manager/app_service_manager.h +++ b/src/components/application_manager/include/application_manager/app_service_manager.h @@ -59,7 +59,8 @@ class AppServiceManager { * @brief TODO * @param manifest */ - bool PublishAppService(const smart_objects::SmartObject& manifest); + smart_objects::SmartObject PublishAppService( + const smart_objects::SmartObject& manifest); /** * @brief TODO diff --git a/src/components/application_manager/include/application_manager/application_manager_impl.h b/src/components/application_manager/include/application_manager/application_manager_impl.h index 418161b0ff..f72b02e320 100644 --- a/src/components/application_manager/include/application_manager/application_manager_impl.h +++ b/src/components/application_manager/include/application_manager/application_manager_impl.h @@ -213,8 +213,7 @@ class ApplicationManagerImpl return *plugin_manager_; } - virtual application_manager::AppServiceManager& GetAppServiceManager() - OVERRIDE { + virtual AppServiceManager& GetAppServiceManager() OVERRIDE { DCHECK(app_service_manager_); return *app_service_manager_; } diff --git a/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/commands/hmi/as_publish_app_service_request.cc b/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/commands/hmi/as_publish_app_service_request.cc index 835762f78a..1e235c1282 100644 --- a/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/commands/hmi/as_publish_app_service_request.cc +++ b/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/commands/hmi/as_publish_app_service_request.cc @@ -80,17 +80,14 @@ void ASPublishAppServiceRequest::Run() { LOG4CXX_AUTO_TRACE(logger_); smart_objects::SmartObject response_params = smart_objects::SmartObject(smart_objects::SmartType_Map); - smart_objects::SmartObject service_record = - smart_objects::SmartObject(smart_objects::SmartType_Map); smart_objects::SmartObject manifest = (*message_)[strings::msg_params][strings::app_service_manifest]; if (!ValidateManifest(manifest)) { return; } - service_record[strings::service_manifest] = manifest; - service_record[strings::service_id] = "This is a service ID"; - service_record[strings::service_published] = true; - service_record[strings::service_active] = true; + smart_objects::SmartObject service_record = + application_manager_.GetAppServiceManager().PublishAppService(manifest); + response_params[strings::app_service_record] = service_record; // TODO: Add AppServiceRecord to response SendResponse(true, 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 c19cd22859..f975cb0543 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 @@ -84,17 +84,13 @@ void PublishAppServiceRequest::Run() { smart_objects::SmartObject response_params = smart_objects::SmartObject(smart_objects::SmartType_Map); - smart_objects::SmartObject service_record = - smart_objects::SmartObject(smart_objects::SmartType_Map); smart_objects::SmartObject manifest = (*message_)[strings::msg_params][strings::app_service_manifest]; if (!ValidateManifest(manifest)) { return; } - service_record[strings::service_manifest] = manifest; - service_record[strings::service_id] = "This is a service ID"; - service_record[strings::service_published] = true; - service_record[strings::service_active] = true; + smart_objects::SmartObject service_record = + application_manager_.GetAppServiceManager().PublishAppService(manifest); std::string requested_service_name = (*message_)[strings::msg_params][strings::app_service_manifest] diff --git a/src/components/application_manager/src/app_service_manager.cc b/src/components/application_manager/src/app_service_manager.cc index 2c5a31e86e..d11203feec 100644 --- a/src/components/application_manager/src/app_service_manager.cc +++ b/src/components/application_manager/src/app_service_manager.cc @@ -58,12 +58,17 @@ AppServiceManager::~AppServiceManager() { LOG4CXX_AUTO_TRACE(logger_); } -bool AppServiceManager::PublishAppService( +smart_objects::SmartObject AppServiceManager::PublishAppService( const smart_objects::SmartObject& manifest) { std::string service_id = "SERVICE_UUID"; // TODO: Generate UUID - published_services_.insert( - std::pair<std::string, smart_objects::SmartObject>(service_id, manifest)); - return true; + smart_objects::SmartObject service_record; + service_record[strings::service_manifest] = manifest; + service_record[strings::service_id] = service_id; + service_record[strings::service_published] = true; + service_record[strings::service_active] = true; + published_services_.insert(std::pair<std::string, smart_objects::SmartObject>( + service_id, service_record)); + return service_record; } bool AppServiceManager::UnpublishAppService(const std::string service_id) { diff --git a/src/components/include/application_manager/application_manager.h b/src/components/include/application_manager/application_manager.h index adb47c8a99..b542a66b83 100644 --- a/src/components/include/application_manager/application_manager.h +++ b/src/components/include/application_manager/application_manager.h @@ -189,7 +189,7 @@ class ApplicationManager { virtual plugin_manager::RPCPluginManager& GetPluginManager() = 0; - virtual application_manager::AppServiceManager& GetAppServiceManager() = 0; + virtual AppServiceManager& GetAppServiceManager() = 0; #ifdef BUILD_TESTS virtual void SetPluginManager( diff --git a/src/components/include/test/application_manager/mock_application_manager.h b/src/components/include/test/application_manager/mock_application_manager.h index 582884e1e7..04029adda3 100644 --- a/src/components/include/test/application_manager/mock_application_manager.h +++ b/src/components/include/test/application_manager/mock_application_manager.h @@ -59,7 +59,6 @@ namespace test { namespace components { namespace application_manager_test { using application_manager::plugin_manager::RPCPluginManager; -using application_manager::AppServiceManager; class MockApplicationManager : public application_manager::ApplicationManager { public: @@ -92,7 +91,7 @@ class MockApplicationManager : public application_manager::ApplicationManager { MOCK_METHOD1(SetPluginManager, void(std::unique_ptr<RPCPluginManager>& plugin_manager)); - MOCK_METHOD0(GetAppServiceManager, AppServiceManager&()); + MOCK_METHOD0(GetAppServiceManager, application_manager::AppServiceManager&()); MOCK_CONST_METHOD1( application_by_hmi_app, diff --git a/src/components/policy/policy_external/include/policy/policy_table/enums.h b/src/components/policy/policy_external/include/policy/policy_table/enums.h index 5b494629bb..0b571823f9 100644 --- a/src/components/policy/policy_external/include/policy/policy_table/enums.h +++ b/src/components/policy/policy_external/include/policy/policy_table/enums.h @@ -446,6 +446,11 @@ enum FunctionID { SetCloudAppPropertiesID = 50, /** + * @brief PublishAppServiceID + */ + PublishAppServiceID = 52, + + /** * @brief OnHMIStatusID. */ OnHMIStatusID = 32768, diff --git a/src/components/policy/policy_external/src/policy_table/enums.cc b/src/components/policy/policy_external/src/policy_table/enums.cc index d7d5a241de..72dd7aea72 100644 --- a/src/components/policy/policy_external/src/policy_table/enums.cc +++ b/src/components/policy/policy_external/src/policy_table/enums.cc @@ -1126,6 +1126,11 @@ bool EnumFromJsonString(const std::string& literal, FunctionID* result) { return true; } + if ("PublishAppService" == literal) { + *result = PublishAppServiceID; + return true; + } + if ("OnHMIStatus" == literal) { *result = OnHMIStatusID; return true; diff --git a/src/components/policy/policy_regular/include/policy/policy_table/enums.h b/src/components/policy/policy_regular/include/policy/policy_table/enums.h index 563e822a36..f8f4e9e029 100644 --- a/src/components/policy/policy_regular/include/policy/policy_table/enums.h +++ b/src/components/policy/policy_regular/include/policy/policy_table/enums.h @@ -432,6 +432,11 @@ enum FunctionID { SetCloudAppPropertiesID = 50, /** + * @brief PublishAppServiceID + */ + PublishAppServiceID = 52, + + /** * @brief OnHMIStatusID. */ OnHMIStatusID = 32768, diff --git a/src/components/policy/policy_regular/src/policy_table/enums.cc b/src/components/policy/policy_regular/src/policy_table/enums.cc index 91d0a6990f..f53b27776d 100644 --- a/src/components/policy/policy_regular/src/policy_table/enums.cc +++ b/src/components/policy/policy_regular/src/policy_table/enums.cc @@ -849,6 +849,8 @@ bool IsValidEnum(FunctionID val) { return true; case SetCloudAppPropertiesID: return true; + case PublishAppServiceID: + return true; case OnHMIStatusID: return true; case OnAppInterfaceUnregisteredID: @@ -998,6 +1000,8 @@ const char* EnumToJsonString(FunctionID val) { return "SendHapticData"; case SetCloudAppPropertiesID: return "SetCloudAppProperties"; + case PublishAppServiceID: + return "PublishAppService"; case OnHMIStatusID: return "OnHMIStatus"; case OnAppInterfaceUnregisteredID: @@ -1292,6 +1296,11 @@ bool EnumFromJsonString(const std::string& literal, FunctionID* result) { return true; } + if ("PublishAppService" == literal) { + *result = PublishAppServiceID; + return true; + } + if ("OnHMIStatus" == literal) { *result = OnHMIStatusID; return true; |