From 57aa1c99210a39546106d02a26be82eeb2a7800f Mon Sep 17 00:00:00 2001 From: BSolonenko Date: Sat, 3 Mar 2018 19:06:29 +0200 Subject: Fixed get RC Applications - added is_rc_ field, getter and setter in ApplicationImpl; - fixed RegisterAppInterfaceRequest::Run(); - fixed RCRPCPlugin::GetRCApplications(). Fix UTs Added is_remote_control_supported and set_remote_control_supported methods in MockApplication Fixed on_interior_vehicle_data_notification_test and resource_allocation_manager_impl_test. Fixed sending of notifications. - Fixed RCRPCPlugin::OnPolicyEvent; - Fixed RCRPCPlugin::OnApplicationEvent; - Fixed OnExitApplicationNotification::Run; - Fixed ApplicationManagerImpl::UnregisterApplication; - Fixed ApplicationManagerImpl::OnPTUFinished; - Refactoring ApplicationImpl::RemoveExtension; - is_remote_control_supported_ added in initialization list. Fix UTs In application_manager_impl_test added seting RPCPluginManager Conflicts: src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/resource_allocation_manager_impl_test.cc src/components/application_manager/src/application_manager_impl.cc --- .../include/application_manager/application.h | 14 ++++ .../include/application_manager/application_impl.h | 5 ++ .../rpc_plugins/rc_rpc_plugin/src/rc_rpc_plugin.cc | 36 ++++++--- .../on_interior_vehicle_data_notification_test.cc | 2 + .../test/resource_allocation_manager_impl_test.cc | 86 ++++++++++------------ .../hmi/on_exit_application_notification.cc | 7 ++ .../mobile/register_app_interface_request.cc | 34 +++++---- .../application_manager/src/application_impl.cc | 24 +++--- .../src/application_manager_impl.cc | 23 +++++- .../test/application_manager_impl_test.cc | 7 ++ .../include/application_manager/mock_application.h | 2 + 11 files changed, 156 insertions(+), 84 deletions(-) (limited to 'src/components') diff --git a/src/components/application_manager/include/application_manager/application.h b/src/components/application_manager/include/application_manager/application.h index cd3b31ce75..14c5bb8640 100644 --- a/src/components/application_manager/include/application_manager/application.h +++ b/src/components/application_manager/include/application_manager/application.h @@ -457,6 +457,20 @@ class Application : public virtual InitialApplicationData, virtual bool is_navi() const = 0; virtual void set_is_navi(bool allow) = 0; + /** + * @brief Returns is_remote_control_supported_ + * @return true if app supports remote control, else false + */ + virtual bool is_remote_control_supported() const = 0; + + /** + * @brief Sets remote control supported, + * which is used to determine app with remote control + * @param allow, if true - remote control is supported, + * else remote control is disable + */ + virtual void set_remote_control_supported(const bool allow) = 0; + virtual void set_mobile_projection_enabled(bool option) = 0; virtual bool mobile_projection_enabled() const = 0; diff --git a/src/components/application_manager/include/application_manager/application_impl.h b/src/components/application_manager/include/application_manager/application_impl.h index e033570435..2fa4ba6499 100644 --- a/src/components/application_manager/include/application_manager/application_impl.h +++ b/src/components/application_manager/include/application_manager/application_impl.h @@ -121,6 +121,10 @@ class ApplicationImpl : public virtual Application, } void set_is_navi(bool allow); + virtual bool is_remote_control_supported() const; + + void set_remote_control_supported(const bool allow); + void set_mobile_projection_enabled(bool option); bool mobile_projection_enabled() const; @@ -456,6 +460,7 @@ class ApplicationImpl : public virtual Application, smart_objects::SmartObject* active_message_; bool is_media_; bool is_navi_; + bool is_remote_control_supported_; bool mobile_projection_enabled_; bool video_streaming_approved_; diff --git a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/rc_rpc_plugin.cc b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/rc_rpc_plugin.cc index 4bf2abd607..9a3b55e278 100644 --- a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/rc_rpc_plugin.cc +++ b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/rc_rpc_plugin.cc @@ -39,16 +39,36 @@ application_manager::CommandFactory& RCRPCPlugin::GetCommandFactory() { } void RCRPCPlugin::OnPolicyEvent( - application_manager::plugin_manager::PolicyEvent event) {} + application_manager::plugin_manager::PolicyEvent event) { + switch (event) { + case plugins::kApplicationPolicyUpdated: { + resource_allocation_manager_->OnPolicyEvent(event); + break; + } + default: + break; + } +} void RCRPCPlugin::OnApplicationEvent( application_manager::plugin_manager::ApplicationEvent event, application_manager::ApplicationSharedPtr application) { + if (!application->is_remote_control_supported()) { + return; + } switch (event) { case plugins::kApplicationRegistered: { application->AddExtension(new RCAppExtension(kRCPluginID)); break; } + case plugins::kApplicationExit: { + resource_allocation_manager_->OnApplicationEvent(event, application); + break; + } + case plugins::kApplicationUnregistered: { + resource_allocation_manager_->OnApplicationEvent(event, application); + break; + } default: break; } @@ -59,17 +79,11 @@ RCRPCPlugin::Apps RCRPCPlugin::GetRCApplications(application_manager::Applicatio using application_manager::ApplicationSet; ApplicationSet accessor = app_mngr.applications().GetData(); - auto predicate = [](const ApplicationSharedPtr& app) { - auto uid = RCRPCPlugin::kRCPluginID; - return app ? app->QueryInterface(uid).valid() : false; - }; - - auto it = std::find_if(accessor.begin(), accessor.end(), predicate); - std::vector result; - while (it != accessor.end()) { - result.push_back(*it); - it = std::find_if(++it, accessor.end(), predicate); + for (const auto& it : accessor) { + if (it->is_remote_control_supported()) { + result.push_back(it); + } } return result; } diff --git a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/commands/on_interior_vehicle_data_notification_test.cc b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/commands/on_interior_vehicle_data_notification_test.cc index bbf0680052..e26b5b9e0f 100644 --- a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/commands/on_interior_vehicle_data_notification_test.cc +++ b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/commands/on_interior_vehicle_data_notification_test.cc @@ -119,6 +119,8 @@ TEST_F(OnInteriorVehicleDataNotificationTest, rc_extention_ptr->SubscribeToInteriorVehicleData(enums_value::kClimate); ON_CALL(*mock_app_, QueryInterface(_)) .WillByDefault(Return(rc_extention_ptr)); + ON_CALL(*mock_app_, is_remote_control_supported()) + .WillByDefault(Return(true)); EXPECT_CALL(mock_rpc_service_, SendMessageToMobile(_, false)) .WillOnce(SaveArg<0>(&message)); diff --git a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/resource_allocation_manager_impl_test.cc b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/resource_allocation_manager_impl_test.cc index 5bd891d3a2..a5079eaf86 100644 --- a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/resource_allocation_manager_impl_test.cc +++ b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/resource_allocation_manager_impl_test.cc @@ -78,12 +78,18 @@ using namespace rc_rpc_plugin; class RAManagerTest : public ::testing::Test { public: RAManagerTest() - : mock_app_1_(utils::MakeShared >()) + : message_(utils::MakeShared(MessagePriority::FromServiceType( + protocol_handler::ServiceType::kRpc))) + , mock_app_1_(utils::MakeShared >()) , mock_app_2_(utils::MakeShared >()) - , message_(utils::MakeShared(MessagePriority::FromServiceType( - protocol_handler::ServiceType::kRpc))) { + , apps_da_(apps_, apps_lock_) { ON_CALL(mock_app_mngr_, GetPolicyHandler()) .WillByDefault(ReturnRef(mock_policy_handler_)); + auto plugin_id = rc_rpc_plugin::RCRPCPlugin::kRCPluginID; + app_ext_ptr_ = utils::MakeShared(plugin_id); + ON_CALL(*mock_app_1_, app_id()).WillByDefault(Return(kAppId1)); + + OnRCStatusNotoficationExpectations(); } void CheckResultWithHMILevelAndAccessMode( @@ -93,13 +99,18 @@ class RAManagerTest : public ::testing::Test { const hmi_apis::Common_RCAccessMode::eType access_mode); protected: - utils::SharedPtr > mock_app_1_; - utils::SharedPtr > mock_app_2_; - application_manager::MessagePtr message_; NiceMock mock_app_mngr_; + NiceMock mock_rpc_service_; test::components::policy_test::MockPolicyHandlerInterface mock_policy_handler_; - // rc_rpc_plugin_test::MockRemotePluginInterface mock_module_; + application_manager::MessagePtr message_; + + application_manager::AppExtensionPtr app_ext_ptr_; + utils::SharedPtr > mock_app_1_; + utils::SharedPtr > mock_app_2_; + application_manager::ApplicationSet apps_; + const sync_primitives::Lock apps_lock_; + DataAccessor apps_da_; }; void RAManagerTest::CheckResultWithHMILevelAndAccessMode( @@ -126,7 +137,7 @@ TEST_F(RAManagerTest, AcquireResource_NoAppRegistered_Expect_InUse) { // Arrange EXPECT_CALL(mock_app_mngr_, application(kAppId1)) .WillOnce(Return(ApplicationSharedPtr())); - ResourceAllocationManagerImpl ra_manager(mock_app_mngr_); + ResourceAllocationManagerImpl ra_manager(mock_app_mngr_, mock_rpc_service_); // Act & Assert EXPECT_EQ(rc_rpc_plugin::AcquireResult::IN_USE, ra_manager.AcquireResource(kModuleType1, kAppId1)); @@ -135,9 +146,7 @@ TEST_F(RAManagerTest, AcquireResource_NoAppRegistered_Expect_InUse) { TEST_F(RAManagerTest, AcquireResource_AppRegisteredAnyHmiLevelResourceFree_Expect_Allowed) { // Arrange - EXPECT_CALL(mock_app_mngr_, application(kAppId1)) - .WillOnce(Return(mock_app_1_)); - ResourceAllocationManagerImpl ra_manager(mock_app_mngr_); + ResourceAllocationManagerImpl ra_manager(mock_app_mngr_, mock_rpc_service_); // Act & Assert EXPECT_EQ(rc_rpc_plugin::AcquireResult::ALLOWED, ra_manager.AcquireResource(kModuleType1, kAppId1)); @@ -149,7 +158,7 @@ TEST_F( // Arrange EXPECT_CALL(mock_app_mngr_, application(kAppId1)) .WillOnce(Return(mock_app_1_)); - ResourceAllocationManagerImpl ra_manager(mock_app_mngr_); + ResourceAllocationManagerImpl ra_manager(mock_app_mngr_, mock_rpc_service_); EXPECT_EQ(rc_rpc_plugin::AcquireResult::ALLOWED, ra_manager.AcquireResource(kModuleType1, kAppId1)); EXPECT_CALL(mock_app_mngr_, application(kAppId1)) @@ -169,7 +178,7 @@ TEST_F( const AcquireResult::eType expected_result = AcquireResult::REJECTED; const Common_RCAccessMode::eType access_mode = Common_RCAccessMode::eType::AUTO_ALLOW; - ResourceAllocationManagerImpl ra_manager(mock_app_mngr_); + ResourceAllocationManagerImpl ra_manager(mock_app_mngr_, mock_rpc_service_); CheckResultWithHMILevelAndAccessMode( ra_manager, app_level, expected_result, access_mode); } @@ -184,7 +193,7 @@ TEST_F( const AcquireResult::eType expected_result = AcquireResult::IN_USE; const Common_RCAccessMode::eType access_mode = Common_RCAccessMode::eType::AUTO_DENY; - ResourceAllocationManagerImpl ra_manager(mock_app_mngr_); + ResourceAllocationManagerImpl ra_manager(mock_app_mngr_, mock_rpc_service_); CheckResultWithHMILevelAndAccessMode( ra_manager, app_level, expected_result, access_mode); } @@ -199,7 +208,7 @@ TEST_F( const AcquireResult::eType expected_result = AcquireResult::ALLOWED; const Common_RCAccessMode::eType access_mode = Common_RCAccessMode::eType::AUTO_ALLOW; - ResourceAllocationManagerImpl ra_manager(mock_app_mngr_); + ResourceAllocationManagerImpl ra_manager(mock_app_mngr_, mock_rpc_service_); CheckResultWithHMILevelAndAccessMode( ra_manager, app_level, expected_result, access_mode); } @@ -214,7 +223,7 @@ TEST_F( const AcquireResult::eType expected_result = AcquireResult::ASK_DRIVER; const Common_RCAccessMode::eType access_mode = Common_RCAccessMode::eType::ASK_DRIVER; - ResourceAllocationManagerImpl ra_manager(mock_app_mngr_); + ResourceAllocationManagerImpl ra_manager(mock_app_mngr_, mock_rpc_service_); CheckResultWithHMILevelAndAccessMode( ra_manager, app_level, expected_result, access_mode); } @@ -222,9 +231,9 @@ TEST_F( TEST_F(RAManagerTest, AcquireResource_AcquiredModuleIsRejectedForApp2_ExpectApp2Rejected) { // Arrange - ResourceAllocationManagerImpl ra_manager(mock_app_mngr_); + ResourceAllocationManagerImpl ra_manager(mock_app_mngr_, mock_rpc_service_); EXPECT_CALL(mock_app_mngr_, application(kAppId1)) - .WillOnce(Return(mock_app_1_)); + .WillRepeatedly(Return(mock_app_1_)); EXPECT_EQ(AcquireResult::ALLOWED, ra_manager.AcquireResource(kModuleType1, kAppId1)); @@ -240,28 +249,18 @@ TEST_F(RAManagerTest, TEST_F(RAManagerTest, AppExit_ReleaseResource) { // Arrange - ResourceAllocationManagerImpl ra_manager(mock_app_mngr_); + ResourceAllocationManagerImpl ra_manager(mock_app_mngr_, mock_rpc_service_); ra_manager.SetAccessMode(hmi_apis::Common_RCAccessMode::eType::AUTO_DENY); EXPECT_CALL(mock_app_mngr_, application(kAppId1)) .WillRepeatedly(Return(mock_app_1_)); - RCAppExtensionPtr rc_extention_ptr = - utils::MakeShared(application_manager::AppExtensionUID( - rc_rpc_plugin::RCRPCPlugin::kRCPluginID)); - - EXPECT_CALL(*mock_app_1_, QueryInterface(_)) - .WillOnce(Return(rc_extention_ptr)); - EXPECT_EQ(rc_rpc_plugin::AcquireResult::ALLOWED, ra_manager.AcquireResource(kModuleType1, kAppId1)); // Act - application_manager::ApplicationSharedPtr app_ptr(mock_app_1_); - EXPECT_CALL(*mock_app_1_, app_id()).WillRepeatedly(Return(kAppId1)); - ra_manager.OnApplicationEvent( - application_manager::plugin_manager::kApplicationExit, app_ptr); + application_manager::plugin_manager::kApplicationExit, mock_app_1_); EXPECT_CALL(mock_app_mngr_, application(kAppId2)) .WillRepeatedly(Return(mock_app_2_)); @@ -272,7 +271,7 @@ TEST_F(RAManagerTest, AppExit_ReleaseResource) { TEST_F(RAManagerTest, AnotherAppExit_NoReleaseResource) { // Arrange - ResourceAllocationManagerImpl ra_manager(mock_app_mngr_); + ResourceAllocationManagerImpl ra_manager(mock_app_mngr_, mock_rpc_service_); ra_manager.SetAccessMode(hmi_apis::Common_RCAccessMode::eType::AUTO_DENY); EXPECT_CALL(mock_app_mngr_, application(kAppId1)) @@ -307,19 +306,13 @@ TEST_F(RAManagerTest, AnotherAppExit_NoReleaseResource) { TEST_F(RAManagerTest, AppUnregistered_ReleaseResource) { // Arrange - ResourceAllocationManagerImpl ra_manager(mock_app_mngr_); + ResourceAllocationManagerImpl ra_manager(mock_app_mngr_, mock_rpc_service_); ra_manager.SetAccessMode(hmi_apis::Common_RCAccessMode::eType::AUTO_DENY); RCAppExtensionPtr rc_extention_ptr = utils::MakeShared(application_manager::AppExtensionUID( rc_rpc_plugin::RCRPCPlugin::kRCPluginID)); - EXPECT_CALL(*mock_app_1_, QueryInterface(_)) - .WillOnce(Return(rc_extention_ptr)); - - EXPECT_CALL(mock_app_mngr_, application(kAppId1)) - .WillRepeatedly(Return(mock_app_1_)); - EXPECT_EQ(rc_rpc_plugin::AcquireResult::ALLOWED, ra_manager.AcquireResource(kModuleType1, kAppId1)); @@ -339,7 +332,7 @@ TEST_F(RAManagerTest, AppUnregistered_ReleaseResource) { TEST_F(RAManagerTest, AnotherAppUnregistered_NoReleaseResource) { // Arrange - ResourceAllocationManagerImpl ra_manager(mock_app_mngr_); + ResourceAllocationManagerImpl ra_manager(mock_app_mngr_, mock_rpc_service_); ra_manager.SetAccessMode(hmi_apis::Common_RCAccessMode::eType::AUTO_DENY); EXPECT_CALL(mock_app_mngr_, application(kAppId1)) @@ -374,7 +367,7 @@ TEST_F(RAManagerTest, AnotherAppUnregistered_NoReleaseResource) { TEST_F(RAManagerTest, AppsDisallowed_ReleaseAllResources) { // Arrange - ResourceAllocationManagerImpl ra_manager(mock_app_mngr_); + ResourceAllocationManagerImpl ra_manager(mock_app_mngr_, mock_rpc_service_); ra_manager.SetAccessMode(hmi_apis::Common_RCAccessMode::eType::AUTO_DENY); EXPECT_CALL(mock_app_mngr_, application(kAppId1)) @@ -416,19 +409,14 @@ TEST_F(RAManagerTest, AppsDisallowed_ReleaseAllResources) { TEST_F(RAManagerTest, AppGotRevokedModulesWithPTU_ReleaseRevokedResource) { // Arrange - ResourceAllocationManagerImpl ra_manager(mock_app_mngr_); + ResourceAllocationManagerImpl ra_manager(mock_app_mngr_, mock_rpc_service_); ra_manager.SetAccessMode(hmi_apis::Common_RCAccessMode::eType::AUTO_DENY); EXPECT_CALL(mock_app_mngr_, application(kAppId1)) .WillRepeatedly(Return(mock_app_1_)); - RCAppExtensionPtr rc_extention_ptr = - utils::MakeShared( - application_manager::AppExtensionUID( - rc_rpc_plugin::RCRPCPlugin::kRCPluginID)); - - EXPECT_CALL(*mock_app_1_, QueryInterface(RCRPCPlugin::kRCPluginID)) - .WillRepeatedly(Return(rc_extention_ptr)); + ON_CALL(*mock_app_1_, is_remote_control_supported()) + .WillByDefault(Return(true)); EXPECT_CALL(mock_app_mngr_, application(kAppId1)) .WillRepeatedly(Return(mock_app_1_)); @@ -472,7 +460,7 @@ TEST_F(RAManagerTest, AppGotRevokedModulesWithPTU_ReleaseRevokedResource) { } TEST_F(RAManagerTest, GetAccessMode_ExpectedSameAsHadSet) { - ResourceAllocationManagerImpl ra_manager(mock_app_mngr_); + ResourceAllocationManagerImpl ra_manager(mock_app_mngr_, mock_rpc_service_); ra_manager.SetAccessMode(hmi_apis::Common_RCAccessMode::AUTO_DENY); EXPECT_EQ(hmi_apis::Common_RCAccessMode::AUTO_DENY, diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_exit_application_notification.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_exit_application_notification.cc index ac8cc55403..3948d34465 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_exit_application_notification.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_exit_application_notification.cc @@ -71,6 +71,13 @@ void OnExitApplicationNotification::Run() { LOG4CXX_ERROR(logger_, "Application does not exist"); return; } + + auto on_app_exit = [app_impl](plugin_manager::RPCPlugin& plugin) { + plugin.OnApplicationEvent(plugin_manager::kApplicationExit, app_impl); + }; + + application_manager_.GetPluginManager().ForEachPlugin(on_app_exit); + Common_ApplicationExitReason::eType reason; reason = static_cast( (*message_)[strings::msg_params][strings::reason].asInt()); diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/register_app_interface_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/register_app_interface_request.cc index 83dc15c5ad..9018f89d5d 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/register_app_interface_request.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/register_app_interface_request.cc @@ -354,20 +354,28 @@ void RegisterAppInterfaceRequest::Run() { msg_params.getElement(strings::app_hmi_type); for (size_t i = 0; i < app_type.length(); ++i) { - if (mobile_apis::AppHMIType::NAVIGATION == + mobile_apis::AppHMIType::eType current_app_type = static_cast( - app_type.getElement(i).asUInt())) { - application->set_is_navi(true); - } - if (mobile_apis::AppHMIType::COMMUNICATION == - static_cast( - app_type.getElement(i).asUInt())) { - application->set_voice_communication_supported(true); - } - if (mobile_apis::AppHMIType::PROJECTION == - static_cast( - app_type.getElement(i).asUInt())) { - application->set_mobile_projection_enabled(true); + app_type.getElement(i).asUInt()); + + switch (current_app_type) { + case mobile_apis::AppHMIType::NAVIGATION: { + application->set_is_navi(true); + break; + } + case mobile_apis::AppHMIType::COMMUNICATION: { + application->set_voice_communication_supported(true); + break; + } + case mobile_apis::AppHMIType::PROJECTION: { + application->set_mobile_projection_enabled(true); + break; + } + case mobile_apis::AppHMIType::REMOTE_CONTROL: { + application->set_remote_control_supported(true); + break; + } + default: {} } } } diff --git a/src/components/application_manager/src/application_impl.cc b/src/components/application_manager/src/application_impl.cc index 9798ef8113..5042835944 100644 --- a/src/components/application_manager/src/application_impl.cc +++ b/src/components/application_manager/src/application_impl.cc @@ -105,6 +105,7 @@ ApplicationImpl::ApplicationImpl( , active_message_(NULL) , is_media_(false) , is_navi_(false) + , is_remote_control_supported_(false) , mobile_projection_enabled_(false) , video_streaming_approved_(false) , audio_streaming_approved_(false) @@ -220,6 +221,14 @@ void ApplicationImpl::set_is_navi(bool allow) { is_navi_ = allow; } +bool ApplicationImpl::is_remote_control_supported() const { + return is_remote_control_supported_; +} + +void ApplicationImpl::set_remote_control_supported(const bool allow) { + is_remote_control_supported_ = allow; +} + bool ApplicationImpl::is_voice_communication_supported() const { return is_voice_communication_application_; } @@ -1120,15 +1129,12 @@ bool ApplicationImpl::AddExtension(AppExtensionPtr extension) { } bool ApplicationImpl::RemoveExtension(AppExtensionUID uid) { - for (std::list::iterator it = extensions_.begin(); - extensions_.end() != it; - ++it) { - if ((*it)->uid() == uid) { - extensions_.erase(it); - return true; - } - } - return false; + auto it = std::find_if( + extensions_.begin(), + extensions_.end(), + [uid](AppExtensionPtr extension) { return extension->uid() == uid; }); + + return it != extensions_.end(); } void ApplicationImpl::RemoveExtensions() { diff --git a/src/components/application_manager/src/application_manager_impl.cc b/src/components/application_manager/src/application_manager_impl.cc index 7c32609c1a..18d4ea54d8 100644 --- a/src/components/application_manager/src/application_manager_impl.cc +++ b/src/components/application_manager/src/application_manager_impl.cc @@ -2477,6 +2477,15 @@ void ApplicationManagerImpl::UnregisterApplication( MessageHelper::SendStopAudioPathThru(*this); } +#ifdef SDL_REMOTE_CONTROL + auto on_app_unregistered = + [app_to_remove](plugin_manager::RPCPlugin& plugin) { + plugin.OnApplicationEvent(plugin_manager::kApplicationUnregistered, + app_to_remove); + }; + plugin_manager_->ForEachPlugin(on_app_unregistered); +#endif + MessageHelper::SendOnAppUnregNotificationToHMI( app_to_remove, is_unexpected_disconnect, *this); request_ctrl_.terminateAppRequests(app_id); @@ -2493,7 +2502,7 @@ mobile_apis::Result::eType ApplicationManagerImpl::CheckPolicyPermissions( const std::string& function_id, const RPCParams& rpc_params, CommandParametersPermissions* params_permissions) { - LOG4CXX_INFO(logger_, "CheckPolicyPermissions"); + LOG4CXX_AUTO_TRACE(logger_); // TODO(AOleynik): Remove check of policy_enable, when this flag will be // unused in config file if (!GetPolicyHandler().PolicyEnabled()) { @@ -3301,7 +3310,17 @@ void ApplicationManagerImpl::ProcessReconnection( GetPolicyHandler().AddDevice(device_mac, connection_type); } -void ApplicationManagerImpl::OnPTUFinished(const bool ptu_result) {} +void ApplicationManagerImpl::OnPTUFinished(const bool ptu_result) { + LOG4CXX_AUTO_TRACE(logger_); + if (!ptu_result) { + return; + } + auto on_app_policy_updated = [](plugin_manager::RPCPlugin& plugin) { + plugin.OnPolicyEvent(plugin_manager::kApplicationPolicyUpdated); + }; + + plugin_manager_->ForEachPlugin(on_app_policy_updated); +} void ApplicationManagerImpl::PutDriverDistractionMessageToPostponed( ApplicationSharedPtr application) const { diff --git a/src/components/application_manager/test/application_manager_impl_test.cc b/src/components/application_manager/test/application_manager_impl_test.cc index 19ba8bbc78..f31b00c451 100644 --- a/src/components/application_manager/test/application_manager_impl_test.cc +++ b/src/components/application_manager/test/application_manager_impl_test.cc @@ -44,6 +44,7 @@ #include "application_manager/mock_application_manager_settings.h" #include "application_manager/mock_resumption_data.h" #include "application_manager/mock_rpc_service.h" +#include "application_manager/mock_rpc_plugin_manager.h" #include "application_manager/resumption/resume_ctrl_impl.h" #include "application_manager/test/include/application_manager/mock_message_helper.h" #include "connection_handler/mock_connection_handler.h" @@ -749,6 +750,12 @@ TEST_F(ApplicationManagerImplTest, utils::SharedPtr switching_app_ptr = utils::MakeShared(); + plugin_manager::MockRPCPluginManager* mock_rpc_plugin_manager = + new plugin_manager::MockRPCPluginManager; + std::unique_ptr mock_rpc_plugin_manager_ptr( + mock_rpc_plugin_manager); + app_manager_impl_->SetPluginManager(mock_rpc_plugin_manager_ptr); + const std::string switching_device_id = "switching"; const std::string switching_device_id_hash = encryption::MakeHash(switching_device_id); diff --git a/src/components/application_manager/test/include/application_manager/mock_application.h b/src/components/application_manager/test/include/application_manager/mock_application.h index 5bc4ef6a42..cc7ae688cb 100644 --- a/src/components/application_manager/test/include/application_manager/mock_application.h +++ b/src/components/application_manager/test/include/application_manager/mock_application.h @@ -334,6 +334,8 @@ class MockApplication : public ::application_manager::Application { MOCK_METHOD0(RemoveExtensions, void()); MOCK_CONST_METHOD0(SubscribesIVI, const application_manager::VehicleInfoSubscriptions&()); + MOCK_CONST_METHOD0(is_remote_control_supported, bool()); + MOCK_METHOD1(set_remote_control_supported, void(const bool allow)); #endif // SDL_REMOTE_CONTROL }; -- cgit v1.2.1