summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJackLivio <jack@livio.io>2019-04-02 10:01:20 -0400
committerGitHub <noreply@github.com>2019-04-02 10:01:20 -0400
commit7a10720c6c3e0e008462706c40e68403b8ed40c7 (patch)
tree6d63cd7974d6aae54be21d3e149895ebfadfec2e
parentbe06e225227d63d2b8486b8f4b505148393fff90 (diff)
downloadsdl_core-7a10720c6c3e0e008462706c40e68403b8ed40c7.tar.gz
HMI.UnsubscribeWayPoints logic fix (#2869)
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/unsubscribe_way_points_request.cc17
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/mobile/unsubscribe_way_points_request_test.cc5
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(