summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJackLivio <jack@livio.io>2020-09-17 15:27:29 -0400
committerJackLivio <jack@livio.io>2020-09-17 15:27:29 -0400
commit59e5371d6b942a54a71cf9673c68ed9531391152 (patch)
tree56ba3fb2c9d08a7cdc8294965f13a20dcd02db59
parent83ae6548f65454a784554fbff5823d12af519e7b (diff)
downloadsdl_core-59e5371d6b942a54a71cf9673c68ed9531391152.tar.gz
Only send delayed onHMIStatus if RAI was a success
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/register_app_interface_response.cc4
-rw-r--r--src/components/application_manager/src/state_controller_impl.cc15
-rw-r--r--src/components/application_manager/test/application_manager_impl_test.cc2
-rw-r--r--src/components/application_manager/test/state_controller/state_controller_test.cc1
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));