summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJackLivio <jack@livio.io>2017-09-25 14:42:23 -0400
committerGitHub <noreply@github.com>2017-09-25 14:42:23 -0400
commitc38e85f34ae5ebad13bc5a6b3d87abb474583e90 (patch)
tree7da75ab4c7506c07aa4a3d6089d4ddc889a53c67
parented412e7c718f6981b7b399a7a3dee0fbad886f84 (diff)
parent6ef1e4b894ac5298c9b1b0c1e13f2ecf6c07f13d (diff)
downloadsdl_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.cc17
-rw-r--r--src/components/application_manager/test/commands/mobile/send_haptic_data_test.cc21
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_,