diff options
author | JackLivio <jack@livio.io> | 2019-04-02 10:01:20 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-02 10:01:20 -0400 |
commit | 7a10720c6c3e0e008462706c40e68403b8ed40c7 (patch) | |
tree | 6d63cd7974d6aae54be21d3e149895ebfadfec2e | |
parent | be06e225227d63d2b8486b8f4b505148393fff90 (diff) | |
download | sdl_core-7a10720c6c3e0e008462706c40e68403b8ed40c7.tar.gz |
HMI.UnsubscribeWayPoints logic fix (#2869)
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( |