diff options
author | JackLivio <jack@livio.io> | 2017-09-25 14:42:23 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-25 14:42:23 -0400 |
commit | c38e85f34ae5ebad13bc5a6b3d87abb474583e90 (patch) | |
tree | 7da75ab4c7506c07aa4a3d6089d4ddc889a53c67 | |
parent | ed412e7c718f6981b7b399a7a3dee0fbad886f84 (diff) | |
parent | 6ef1e4b894ac5298c9b1b0c1e13f2ecf6c07f13d (diff) | |
download | sdl_core-c38e85f34ae5ebad13bc5a6b3d87abb474583e90.tar.gz |
Merge pull request #1776 from JackLivio/fix/haptic_data_nav_only
Require nav or projection app for SendHapticData
-rw-r--r-- | src/components/application_manager/src/commands/mobile/send_haptic_data_request.cc | 17 | ||||
-rw-r--r-- | src/components/application_manager/test/commands/mobile/send_haptic_data_test.cc | 21 |
2 files changed, 37 insertions, 1 deletions
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<SendHapticDataRequest>(msg_)); + + command->Init(); + command->Run(); +} + TEST_F(SendHapticDataRequestTest, OnEvent_SUCCESS) { EXPECT_CALL( app_mngr_, |