From 6ef1e4b894ac5298c9b1b0c1e13f2ecf6c07f13d Mon Sep 17 00:00:00 2001 From: JackLivio Date: Fri, 22 Sep 2017 14:49:15 -0400 Subject: Require nav or projection app for SendHapticData --- .../src/commands/mobile/send_haptic_data_request.cc | 17 ++++++++++++++++- .../test/commands/mobile/send_haptic_data_test.cc | 21 +++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/src/components/application_manager/src/commands/mobile/send_haptic_data_request.cc b/src/components/application_manager/src/commands/mobile/send_haptic_data_request.cc index cabfef15f6..569eba6c02 100644 --- a/src/components/application_manager/src/commands/mobile/send_haptic_data_request.cc +++ b/src/components/application_manager/src/commands/mobile/send_haptic_data_request.cc @@ -49,7 +49,22 @@ void SendHapticDataRequest::Run() { LOG4CXX_AUTO_TRACE(logger_); smart_objects::SmartObject& msg_params = (*message_)[strings::msg_params]; - SendHMIRequest(hmi_apis::FunctionID::UI_SendHapticData, &msg_params, true); + + ApplicationSharedPtr app = application_manager_.application(connection_key()); + + if (!app) { + LOG4CXX_ERROR(logger_, "Application is not registered"); + SendResponse(false, mobile_apis::Result::APPLICATION_NOT_REGISTERED); + return; + } + + if (app->is_navi() || app->mobile_projection_enabled()) { + SendHMIRequest(hmi_apis::FunctionID::UI_SendHapticData, &msg_params, true); + } else { + SendResponse(false, + mobile_apis::Result::DISALLOWED, + "Application is not of type Navigation or Mobile Projection"); + } } void SendHapticDataRequest::on_event(const event_engine::Event& event) { diff --git a/src/components/application_manager/test/commands/mobile/send_haptic_data_test.cc b/src/components/application_manager/test/commands/mobile/send_haptic_data_test.cc index 49483209b6..2a3b5d922a 100644 --- a/src/components/application_manager/test/commands/mobile/send_haptic_data_test.cc +++ b/src/components/application_manager/test/commands/mobile/send_haptic_data_test.cc @@ -95,6 +95,11 @@ class SendHapticDataResponseTest }; TEST_F(SendHapticDataRequestTest, Run_SUCCESS) { + EXPECT_CALL(app_mngr_, application(kConnectionKey)) + .WillOnce(Return(mock_app_)); + + EXPECT_CALL(*mock_app_, is_navi()).WillOnce(Return(true)); + EXPECT_CALL(app_mngr_, ManageHMICommand( HMIResultCodeIs(hmi_apis::FunctionID::UI_SendHapticData))) @@ -106,6 +111,22 @@ TEST_F(SendHapticDataRequestTest, Run_SUCCESS) { command->Run(); } +TEST_F(SendHapticDataRequestTest, Run_DISALLOWED) { + EXPECT_CALL(app_mngr_, application(kConnectionKey)) + .WillOnce(Return(mock_app_)); + + EXPECT_CALL(*mock_app_, is_navi()).WillOnce(Return(false)); + + EXPECT_CALL(*mock_app_, mobile_projection_enabled()).WillOnce(Return(false)); + + EXPECT_CALL(app_mngr_, ManageMobileCommand(_, _)).WillOnce(Return(true)); + + SendHapticDataRequestPtr command(CreateCommand(msg_)); + + command->Init(); + command->Run(); +} + TEST_F(SendHapticDataRequestTest, OnEvent_SUCCESS) { EXPECT_CALL( app_mngr_, -- cgit v1.2.1