diff options
author | JackLivio <jack@livio.io> | 2019-04-01 14:32:00 -0400 |
---|---|---|
committer | JackLivio <jack@livio.io> | 2019-04-01 14:32:00 -0400 |
commit | f86780db5fbe57f461ad7b755da9b8ec3aab33b6 (patch) | |
tree | 291afaa47cf6a37d5e235b5c0e3273a8b7ee0bec | |
parent | abdfa1d970c9d965a1f05d0b26fa3b8d350bb265 (diff) | |
download | sdl_core-fix/unsubscribe_way_points_hmi_fix.tar.gz |
HMI.UnsubscribeWayPoints logic fixfix/unsubscribe_way_points_hmi_fix
2 files changed, 19 insertions, 3 deletions
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/unsubscribe_way_points_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/unsubscribe_way_points_request.cc index 40bb1ddfc9..4b40b7a9ce 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/unsubscribe_way_points_request.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/unsubscribe_way_points_request.cc @@ -71,9 +71,20 @@ void UnsubscribeWayPointsRequest::Run() { return; } - StartAwaitForInterface(HmiInterfaces::HMI_INTERFACE_Navigation); - SendHMIRequest( - hmi_apis::FunctionID::Navigation_UnsubscribeWayPoints, NULL, true); + std::set<uint32_t> subscribed_apps = + application_manager_.GetAppsSubscribedForWayPoints(); + + if (subscribed_apps.size() > 1) { + // More than 1 subscribed app, don't send HMI unsubscribe request + application_manager_.UnsubscribeAppFromWayPoints(app); + SendResponse(true, mobile_apis::Result::SUCCESS, NULL); + return; + } else { + // Only subscribed app, send HMI unsubscribe request + StartAwaitForInterface(HmiInterfaces::HMI_INTERFACE_Navigation); + SendHMIRequest( + hmi_apis::FunctionID::Navigation_UnsubscribeWayPoints, NULL, true); + } } void UnsubscribeWayPointsRequest::on_event(const event_engine::Event& event) { diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/mobile/unsubscribe_way_points_request_test.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/mobile/unsubscribe_way_points_request_test.cc index 818ee06e96..05e15a78af 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/mobile/unsubscribe_way_points_request_test.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/mobile/unsubscribe_way_points_request_test.cc @@ -122,6 +122,11 @@ TEST_F(UnsubscribeWayPointsRequestTest, Run_AppSubscribedForWayPoints_SUCCESS) { ::testing::Matcher<am::ApplicationSharedPtr>(mock_app))) .WillOnce(Return(true)); + const std::set<uint32_t> subscribed_apps{kConnectionKey}; + + EXPECT_CALL(app_mngr_, GetAppsSubscribedForWayPoints()) + .WillOnce(Return(subscribed_apps)); + EXPECT_CALL(mock_rpc_service_, ManageHMICommand( HMIResultCodeIs( |