diff options
author | JackLivio <jack@livio.io> | 2020-09-17 15:27:29 -0400 |
---|---|---|
committer | JackLivio <jack@livio.io> | 2020-09-17 15:27:29 -0400 |
commit | 59e5371d6b942a54a71cf9673c68ed9531391152 (patch) | |
tree | 56ba3fb2c9d08a7cdc8294965f13a20dcd02db59 | |
parent | 83ae6548f65454a784554fbff5823d12af519e7b (diff) | |
download | sdl_core-59e5371d6b942a54a71cf9673c68ed9531391152.tar.gz |
Only send delayed onHMIStatus if RAI was a success
4 files changed, 16 insertions, 6 deletions
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/register_app_interface_response.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/register_app_interface_response.cc index 0474d58b15..0c74105e56 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/register_app_interface_response.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/register_app_interface_response.cc @@ -96,7 +96,9 @@ void RegisterAppInterfaceResponse::Run() { } SendResponse(success, result_code, last_message); - app->set_is_ready(true); + if (success) { + app->set_is_ready(true); + } event_engine::MobileEvent event( mobile_apis::FunctionID::RegisterAppInterfaceID); smart_objects::SmartObject event_msg(*message_); diff --git a/src/components/application_manager/src/state_controller_impl.cc b/src/components/application_manager/src/state_controller_impl.cc index 7c9b7b5ffc..05533d7ce5 100644 --- a/src/components/application_manager/src/state_controller_impl.cc +++ b/src/components/application_manager/src/state_controller_impl.cc @@ -721,9 +721,9 @@ void StateControllerImpl::on_event(const event_engine::MobileEvent& event) { SDL_LOG_DEBUG("Received event for function" << event.id()); switch (event.id()) { case FunctionID::RegisterAppInterfaceID: { + auto message = event.smart_object(); uint32_t connection_key = - event.smart_object()[strings::params][strings::connection_key] - .asUInt(); + message[strings::params][strings::connection_key].asUInt(); ApplicationSharedPtr app = app_mngr_.application(connection_key); if (app.use_count() == 0) { @@ -740,9 +740,14 @@ void StateControllerImpl::on_event(const event_engine::MobileEvent& event) { return; } - auto notification = MessageHelper::CreateHMIStatusNotification(app, 0); - app_mngr_.GetRPCService().ManageMobileCommand( - notification, commands::Command::SOURCE_SDL); + bool success = message[strings::msg_params][strings::success].asBool(); + if (success) { + // Only send notification if RAI was a success + auto notification = + MessageHelper::CreateHMIStatusNotification(app, 0); + app_mngr_.GetRPCService().ManageMobileCommand( + notification, commands::Command::SOURCE_SDL); + } apps_with_pending_hmistatus_notification_.erase(app->app_id()); if (apps_with_pending_hmistatus_notification_.empty()) { diff --git a/src/components/application_manager/test/application_manager_impl_test.cc b/src/components/application_manager/test/application_manager_impl_test.cc index 7ecf9515a6..493d4a18fc 100644 --- a/src/components/application_manager/test/application_manager_impl_test.cc +++ b/src/components/application_manager/test/application_manager_impl_test.cc @@ -2099,6 +2099,7 @@ TEST_F( app_manager_impl_->SetPluginManager(rpc_plugin_manager); auto wep_nonmedia_app = app_manager_impl_->RegisterApplication(rai_ptr); wep_nonmedia_app->set_is_media_application(false); + wep_nonmedia_app->set_is_ready(true); EXPECT_EQ(protocol_handler::MajorProtocolVersion::PROTOCOL_VERSION_2, wep_nonmedia_app->protocol_version()); @@ -2203,6 +2204,7 @@ TEST_F( app_manager_impl_->SetPluginManager(rpc_plugin_manager); auto wep_media_app = app_manager_impl_->RegisterApplication(rai_ptr); wep_media_app->set_is_media_application(true); + wep_media_app->set_is_ready(true); EXPECT_EQ(protocol_handler::MajorProtocolVersion::PROTOCOL_VERSION_2, wep_media_app->protocol_version()); diff --git a/src/components/application_manager/test/state_controller/state_controller_test.cc b/src/components/application_manager/test/state_controller/state_controller_test.cc index a2de6f399c..374ad611ef 100644 --- a/src/components/application_manager/test/state_controller/state_controller_test.cc +++ b/src/components/application_manager/test/state_controller/state_controller_test.cc @@ -727,6 +727,7 @@ class StateControllerImplTest : public ::testing::Test { .WillByDefault(Return(vc)); ON_CALL(**app_mock, IsAudioApplication()) .WillByDefault(Return(media || navi || vc)); + ON_CALL(**app_mock, is_ready()).WillByDefault(Return(true)); EXPECT_CALL(**app_mock, usage_report()) .WillRepeatedly(ReturnRef(usage_stat)); |