diff options
author | jacobkeeler <jacob.keeler@livioradio.com> | 2021-11-04 12:03:56 -0400 |
---|---|---|
committer | jacobkeeler <jacob.keeler@livioradio.com> | 2021-11-04 12:03:56 -0400 |
commit | 406d71dbb9a3d2f43629d7b78905d963b3ef85de (patch) | |
tree | e0031efbc08f2488a0c08decbb7e038ed1534a1b | |
parent | e89d996fb510354ac7ac0721a257c6956cd408ba (diff) | |
download | sdl_core-temp.tar.gz |
Revert "Fix early IsRegistered() state of application (#3796)"temp
This reverts commit 0ed38e8d2f7cb3a61a303cca2806a06ce9a1d58d.
8 files changed, 39 insertions, 108 deletions
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_tts_language_change_notification.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_tts_language_change_notification.cc index d693c00ac3..3c25ff5386 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_tts_language_change_notification.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_tts_language_change_notification.cc @@ -88,15 +88,12 @@ void OnTTSLanguageChangeNotification::Run() { (*message_)[strings::params][strings::function_id] = static_cast<int32_t>(mobile_apis::FunctionID::OnLanguageChangeID); - const auto applications = application_manager_.applications().GetData(); - for (const auto& app : applications) { - if (!app->IsRegistered()) { - SDL_LOG_DEBUG("Skipping app " - << app->app_id() - << " which has not finished the registration process"); - continue; - } - + const ApplicationSet& accessor = + application_manager_.applications().GetData(); + ApplicationSetIt it = accessor.begin(); + for (; accessor.end() != it;) { + ApplicationSharedPtr app = *it; + ++it; (*message_)[strings::params][strings::connection_key] = app->app_id(); SendNotificationToMobile(message_); diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_vr_language_change_notification.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_vr_language_change_notification.cc index 23c1ec1b80..bf00291c88 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_vr_language_change_notification.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_vr_language_change_notification.cc @@ -79,17 +79,10 @@ void OnVRLanguageChangeNotification::Run() { static_cast<int32_t>(mobile_apis::FunctionID::OnLanguageChangeID); const auto applications = application_manager_.applications().GetData(); - for (auto app : applications) { - if (!app->IsRegistered()) { - SDL_LOG_DEBUG("Skipping app " - << app->app_id() - << " which has not finished the registration process"); - continue; - } + for (auto app : applications) { (*message_)[strings::params][strings::connection_key] = app->app_id(); SendNotificationToMobile(message_); - if (static_cast<int32_t>(app->language()) != (*message_)[strings::msg_params][strings::language].asInt()) { application_manager_.state_controller().SetRegularState( diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/sdl_activate_app_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/sdl_activate_app_request.cc index 88b3065fb0..a8b34bf2d4 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/sdl_activate_app_request.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/sdl_activate_app_request.cc @@ -136,10 +136,18 @@ void SDLActivateAppRequest::Run() { static_cast<eType>(function_id()), hmi_apis::Common_Result::REJECTED, "HMIDeactivate is active"); - return; - } - - if (!app->is_cloud_app() || app->IsRegistered()) { + } else if (app && !app->IsRegistered() && app->is_cloud_app()) { + SDL_LOG_DEBUG("Starting cloud application."); + const ApplicationManagerSettings& settings = + application_manager_.get_settings(); + uint32_t total_retry_timeout = (settings.cloud_app_retry_timeout() * + settings.cloud_app_max_retry_attempts()); + application_manager_.UpdateRequestTimeout( + 0, correlation_id(), default_timeout_ + total_retry_timeout); + subscribe_on_event(BasicCommunication_OnAppRegistered); + application_manager_.connection_handler().ConnectToDevice(app->device()); + } else { + const uint32_t application_id = app_id(); auto main_state = app->CurrentHmiState(mobile_apis::PredefinedWindows::DEFAULT_WINDOW); if (mobile_apis::HMILevel::INVALID_ENUM == main_state->hmi_level()) { @@ -148,30 +156,11 @@ void SDLActivateAppRequest::Run() { "yet, postpone activation"); auto& postponed_activation_ctrl = application_manager_.state_controller() .GetPostponedActivationController(); - postponed_activation_ctrl.AddAppToActivate(app->app_id(), + postponed_activation_ctrl.AddAppToActivate(application_id, correlation_id()); return; } - } - - const uint32_t application_id = app_id(); - if (app->IsRegistered()) { - SDL_LOG_DEBUG("Application is registered. Activating."); policy_handler_.OnActivateApp(application_id, correlation_id()); - return; - } - - if (app->is_cloud_app()) { - SDL_LOG_DEBUG("Starting cloud application."); - const ApplicationManagerSettings& settings = - application_manager_.get_settings(); - uint32_t total_retry_timeout = (settings.cloud_app_retry_timeout() * - settings.cloud_app_max_retry_attempts()); - application_manager_.UpdateRequestTimeout( - 0, correlation_id(), default_timeout_ + total_retry_timeout); - subscribe_on_event(BasicCommunication_OnAppRegistered); - application_manager_.connection_handler().ConnectToDevice(app->device()); - return; } } @@ -216,7 +205,8 @@ void SDLActivateAppRequest::Run() { return; } - if (!app_to_activate->is_cloud_app() || app_to_activate->IsRegistered()) { + if (app_to_activate->IsRegistered()) { + SDL_LOG_DEBUG("Application is registered. Activating."); auto main_state = app_to_activate->CurrentHmiState( mobile_apis::PredefinedWindows::DEFAULT_WINDOW); if (mobile_apis::HMILevel::INVALID_ENUM == main_state->hmi_level()) { @@ -225,19 +215,13 @@ void SDLActivateAppRequest::Run() { "yet, postpone activation"); auto& postponed_activation_ctrl = application_manager_.state_controller() .GetPostponedActivationController(); - postponed_activation_ctrl.AddAppToActivate(app_to_activate->app_id(), + postponed_activation_ctrl.AddAppToActivate(application_id, correlation_id()); return; } - } - - if (app_to_activate->IsRegistered()) { - SDL_LOG_DEBUG("Application is registered. Activating."); policy_handler_.OnActivateApp(application_id, correlation_id()); return; - } - - if (app_to_activate->is_cloud_app()) { + } else if (app_to_activate->is_cloud_app()) { SDL_LOG_DEBUG("Starting cloud application."); const ApplicationManagerSettings& settings = application_manager_.get_settings(); diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/register_app_interface_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/register_app_interface_request.cc index 9a9aa0c533..2224f17c4e 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/register_app_interface_request.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/register_app_interface_request.cc @@ -440,8 +440,6 @@ void FinishSendingResponseToMobile(const smart_objects::SmartObject& msg_params, &(msg_params[strings::app_hmi_type])); } - application->MarkRegistered(); - // Default HMI level should be set before any permissions validation, since // it relies on HMI level. app_manager.OnApplicationRegistered(application); @@ -734,6 +732,7 @@ void RegisterAppInterfaceRequest::Run() { } CheckLanguage(); + SendRegisterAppInterfaceResponseToMobile( ApplicationType::kNewApplication, status_notifier, add_info); } diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/hmi_notifications_test.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/hmi_notifications_test.cc index 53b1fdfc67..82a5b536a8 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/hmi_notifications_test.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/hmi_notifications_test.cc @@ -1368,7 +1368,6 @@ TEST_F(HMICommandsNotificationsTest, EXPECT_CALL(mock_hmi_capabilities_, set_active_vr_language(_)); EXPECT_CALL(mock_rpc_service_, ManageMobileCommand(_, Command::CommandSource::SOURCE_SDL)); - EXPECT_CALL(*app_ptr_, IsRegistered()).WillOnce(Return(true)); EXPECT_CALL(*app_ptr_, app_id()).WillOnce(Return(kAppId_)); EXPECT_CALL(*app_ptr_, language()).WillRepeatedly(ReturnRef(kLang)); @@ -1413,7 +1412,6 @@ TEST_F(HMICommandsNotificationsTest, EXPECT_CALL(mock_hmi_capabilities_, set_active_vr_language(_)); EXPECT_CALL(mock_rpc_service_, ManageMobileCommand(_, Command::CommandSource::SOURCE_SDL)); - EXPECT_CALL(*app_ptr_, IsRegistered()).WillOnce(Return(true)); EXPECT_CALL(*app_ptr_, app_id()).WillRepeatedly(Return(kAppId_)); EXPECT_CALL(*app_ptr_, language()).WillRepeatedly(ReturnRef(kLang)); EXPECT_CALL(app_mngr_, state_controller()) @@ -1699,7 +1697,6 @@ TEST_F(HMICommandsNotificationsTest, EXPECT_CALL(mock_hmi_capabilities_, set_active_tts_language(_)); EXPECT_CALL(mock_rpc_service_, ManageMobileCommand(_, Command::CommandSource::SOURCE_SDL)); - EXPECT_CALL(*app_ptr_, IsRegistered()).WillOnce(Return(true)); EXPECT_CALL(*app_ptr_, app_id()).WillOnce(Return(kAppId_)); EXPECT_CALL(*app_ptr_, language()).WillRepeatedly(ReturnRef(kLang)); @@ -1745,7 +1742,6 @@ TEST_F(HMICommandsNotificationsTest, EXPECT_CALL(mock_hmi_capabilities_, set_active_tts_language(_)); EXPECT_CALL(mock_rpc_service_, ManageMobileCommand(_, Command::CommandSource::SOURCE_SDL)); - EXPECT_CALL(*app_ptr_, IsRegistered()).WillOnce(Return(true)); EXPECT_CALL(*app_ptr_, app_id()).WillRepeatedly(Return(kAppId_)); EXPECT_CALL(*app_ptr_, language()).WillRepeatedly(ReturnRef(kLang)); EXPECT_CALL(mock_message_helper_, diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/sdl_activate_app_request_test.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/sdl_activate_app_request_test.cc index 44bd7f4a80..443050b47f 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/sdl_activate_app_request_test.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/sdl_activate_app_request_test.cc @@ -157,8 +157,6 @@ TEST_F(SDLActivateAppRequestTest, Run_ActivateApp_SUCCESS) { CurrentHmiState(mobile_apis::PredefinedWindows::DEFAULT_WINDOW)) .WillOnce(Return(state)); - EXPECT_CALL(*mock_app, IsRegistered()).WillOnce(Return(true)); - EXPECT_CALL(mock_policy_handler_, OnActivateApp(kAppID, kCorrelationID)); command->Run(); @@ -204,14 +202,8 @@ TEST_F(SDLActivateAppRequestTest, FindAppToRegister_SUCCESS) { IsStateActive(am::HmiState::StateID::STATE_ID_DEACTIVATE_HMI)) .WillOnce(Return(false)); - am::HmiStatePtr state = std::make_shared<am::HmiState>(mock_app, app_mngr_); - state->set_hmi_level(mobile_apis::HMILevel::HMI_NONE); - EXPECT_CALL(*mock_app, - CurrentHmiState(mobile_apis::PredefinedWindows::DEFAULT_WINDOW)) - .WillOnce(Return(state)); - - ON_CALL(*mock_app, IsRegistered()).WillByDefault(Return(false)); - ON_CALL(*mock_app, is_cloud_app()).WillByDefault(Return(false)); + EXPECT_CALL(*mock_app, IsRegistered()).WillOnce(Return(false)); + EXPECT_CALL(*mock_app, is_cloud_app()).WillOnce(Return(false)); ON_CALL(*mock_app, device()).WillByDefault(Return(kHandle)); MockAppPtr mock_app_first(CreateMockApp()); @@ -272,14 +264,8 @@ TEST_F(SDLActivateAppRequestTest, DevicesAppsEmpty_SUCCESS) { IsStateActive(am::HmiState::StateID::STATE_ID_DEACTIVATE_HMI)) .WillOnce(Return(false)); - am::HmiStatePtr state = std::make_shared<am::HmiState>(mock_app, app_mngr_); - state->set_hmi_level(mobile_apis::HMILevel::HMI_NONE); - EXPECT_CALL(*mock_app, - CurrentHmiState(mobile_apis::PredefinedWindows::DEFAULT_WINDOW)) - .WillOnce(Return(state)); - - ON_CALL(*mock_app, IsRegistered()).WillByDefault(Return(false)); - ON_CALL(*mock_app, is_cloud_app()).WillByDefault(Return(false)); + EXPECT_CALL(*mock_app, IsRegistered()).WillOnce(Return(false)); + EXPECT_CALL(*mock_app, is_cloud_app()).WillOnce(Return(false)); ON_CALL(*mock_app, device()).WillByDefault(Return(kHandle)); DataAccessor<ApplicationSet> accessor(app_list_, lock_); @@ -305,12 +291,6 @@ TEST_F(SDLActivateAppRequestTest, FirstAppActive_SUCCESS) { .WillOnce(Return(false)); EXPECT_CALL(*mock_app, device()).WillOnce(Return(kHandle)); - am::HmiStatePtr state = std::make_shared<am::HmiState>(mock_app, app_mngr_); - state->set_hmi_level(mobile_apis::HMILevel::HMI_NONE); - EXPECT_CALL(*mock_app, - CurrentHmiState(mobile_apis::PredefinedWindows::DEFAULT_WINDOW)) - .WillOnce(Return(state)); - DataAccessor<ApplicationSet> accessor(app_list_, lock_); EXPECT_CALL(app_mngr_, applications()).WillRepeatedly(Return(accessor)); @@ -347,15 +327,14 @@ TEST_F(SDLActivateAppRequestTest, FirstAppNotActiveNONE_SUCCESS) { EXPECT_CALL(mock_state_controller_, IsStateActive(am::HmiState::StateID::STATE_ID_DEACTIVATE_HMI)) .WillOnce(Return(false)); - + EXPECT_CALL(*mock_app, IsRegistered()).WillOnce(Return(true)); am::HmiStatePtr state = std::make_shared<am::HmiState>(mock_app, app_mngr_); state->set_hmi_level(mobile_apis::HMILevel::HMI_NONE); + EXPECT_CALL(*mock_app, CurrentHmiState(mobile_apis::PredefinedWindows::DEFAULT_WINDOW)) .WillOnce(Return(state)); - EXPECT_CALL(*mock_app, IsRegistered()).WillOnce(Return(true)); - EXPECT_CALL(mock_policy_handler_, OnActivateApp(kAppID, kCorrelationID)); command->Run(); @@ -377,16 +356,9 @@ TEST_F(SDLActivateAppRequestTest, FirstAppIsForeground_SUCCESS) { ON_CALL(app_mngr_, application(kAppID)).WillByDefault(Return(mock_app)); - am::HmiStatePtr state = std::make_shared<am::HmiState>(mock_app, app_mngr_); - state->set_hmi_level(mobile_apis::HMILevel::HMI_NONE); - EXPECT_CALL(*mock_app, - CurrentHmiState(mobile_apis::PredefinedWindows::DEFAULT_WINDOW)) - .WillOnce(Return(state)); - EXPECT_CALL(*mock_app, device()).WillOnce(Return(kHandle)); - ON_CALL(*mock_app, IsRegistered()).WillByDefault(Return(false)); - ON_CALL(*mock_app, is_cloud_app()).WillByDefault(Return(false)); - + EXPECT_CALL(*mock_app, IsRegistered()).WillOnce(Return(false)); + EXPECT_CALL(*mock_app, is_cloud_app()).WillOnce(Return(false)); EXPECT_CALL(app_mngr_, state_controller()) .WillOnce(ReturnRef(mock_state_controller_)); EXPECT_CALL(mock_state_controller_, @@ -425,12 +397,6 @@ TEST_F(SDLActivateAppRequestTest, FirstAppNotRegisteredAndEmpty_SUCCESS) { IsStateActive(am::HmiState::StateID::STATE_ID_DEACTIVATE_HMI)) .WillOnce(Return(false)); - am::HmiStatePtr state = std::make_shared<am::HmiState>(mock_app, app_mngr_); - state->set_hmi_level(mobile_apis::HMILevel::HMI_NONE); - EXPECT_CALL(*mock_app, - CurrentHmiState(mobile_apis::PredefinedWindows::DEFAULT_WINDOW)) - .WillOnce(Return(state)); - MockAppPtr mock_app_first(CreateMockApp()); ON_CALL(*mock_app_first, device()).WillByDefault(Return(kHandle)); ON_CALL(*mock_app_first, is_foreground()).WillByDefault(Return(false)); @@ -463,13 +429,6 @@ TEST_F(SDLActivateAppRequestTest, FirstAppNotRegistered_SUCCESS) { EXPECT_CALL(mock_state_controller_, IsStateActive(am::HmiState::StateID::STATE_ID_DEACTIVATE_HMI)) .WillOnce(Return(false)); - - am::HmiStatePtr state = std::make_shared<am::HmiState>(mock_app, app_mngr_); - state->set_hmi_level(mobile_apis::HMILevel::HMI_NONE); - EXPECT_CALL(*mock_app, - CurrentHmiState(mobile_apis::PredefinedWindows::DEFAULT_WINDOW)) - .WillOnce(Return(state)); - DataAccessor<ApplicationSet> accessor(app_list_, lock_); EXPECT_CALL(app_mngr_, applications()).WillRepeatedly(Return(accessor)); @@ -501,8 +460,8 @@ TEST_F(SDLActivateAppRequestTest, WaitingCloudApplication_ConnectDevice) { MockAppPtr mock_app(CreateMockApp()); EXPECT_CALL(*mock_app, device()).WillOnce(Return(kHandle)); - ON_CALL(*mock_app, IsRegistered()).WillByDefault(Return(false)); - ON_CALL(*mock_app, is_cloud_app()).WillByDefault(Return(true)); + EXPECT_CALL(*mock_app, IsRegistered()).WillOnce(Return(false)); + EXPECT_CALL(*mock_app, is_cloud_app()).WillOnce(Return(true)); #ifndef EXTERNAL_PROPRIETARY_MODE EXPECT_CALL(app_mngr_, application(kAppID)) diff --git a/src/components/application_manager/src/application_manager_impl.cc b/src/components/application_manager/src/application_manager_impl.cc index 8d2875364d..b0b05a3031 100644 --- a/src/components/application_manager/src/application_manager_impl.cc +++ b/src/components/application_manager/src/application_manager_impl.cc @@ -4744,6 +4744,9 @@ void ApplicationManagerImpl::AddAppToRegisteredAppList( SDL_LOG_AUTO_TRACE(); DCHECK_OR_RETURN_VOID(application); sync_primitives::AutoLock lock(applications_list_lock_ptr_); + + // Add application to registered app list and set appropriate mark. + application->MarkRegistered(); applications_.insert(application); SDL_LOG_DEBUG("App with app_id: " << application->app_id() diff --git a/src/components/application_manager/src/message_helper/message_helper.cc b/src/components/application_manager/src/message_helper/message_helper.cc index 94d0a75c7f..606bc4c3f0 100644 --- a/src/components/application_manager/src/message_helper/message_helper.cc +++ b/src/components/application_manager/src/message_helper/message_helper.cc @@ -1848,7 +1848,7 @@ bool MessageHelper::CreateHMIApplicationStruct( if (file_system::FileExists(app->app_icon_path())) { message[strings::icon] = icon_path; } - if (!app->is_cloud_app() || app->IsRegistered()) { + if (app->IsRegistered()) { message[strings::hmi_display_language_desired] = app->ui_language(); message[strings::is_media_application] = app->is_media_application(); } else { |