diff options
author | LitvinenkoIra <ilytvynenko@luxoft.com> | 2020-02-21 15:20:19 +0200 |
---|---|---|
committer | Andriy Byzhynar <abyzhynar@luxoft.com> | 2020-02-24 18:27:49 +0200 |
commit | 51f5bbe9bdd4555e0359a97c5ba59055f07009af (patch) | |
tree | b868a093a3564c53bb2adc71a62306c228e1eb4b | |
parent | 2c784da15f120869d25267bd5b778d983504440a (diff) | |
download | sdl_core-feature/new_webengine_device_id_generation.tar.gz |
Don't remove enabled WebEngine apps from pending appsfeature/new_webengine_device_id_generation
-rw-r--r-- | src/components/application_manager/src/application_manager_impl.cc | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/src/components/application_manager/src/application_manager_impl.cc b/src/components/application_manager/src/application_manager_impl.cc index 35cc8541f6..b3d881c1bc 100644 --- a/src/components/application_manager/src/application_manager_impl.cc +++ b/src/components/application_manager/src/application_manager_impl.cc @@ -3091,18 +3091,24 @@ void ApplicationManagerImpl::UnregisterAllApplications() { void ApplicationManagerImpl::RemoveAppsWaitingForRegistration( const connection_handler::DeviceHandle handle) { + LOG4CXX_AUTO_TRACE(logger_); DevicePredicate device_finder(handle); apps_to_register_list_lock_ptr_->Acquire(); - AppsWaitRegistrationSet::iterator it_app = std::find_if( - apps_to_register_.begin(), apps_to_register_.end(), device_finder); + std::vector<ApplicationSharedPtr> apps_to_remove; + std::copy_if(apps_to_register_.begin(), + apps_to_register_.end(), + std::back_inserter(apps_to_remove), + device_finder); - while (apps_to_register_.end() != it_app) { - LOG4CXX_DEBUG( - logger_, - "Waiting app: " << (*it_app)->name().c_str() << " is removed."); - apps_to_register_.erase(it_app); - it_app = std::find_if( - apps_to_register_.begin(), apps_to_register_.end(), device_finder); + const auto enabled_local_apps = policy_handler_->GetEnabledLocalApps(); + for (auto app : apps_to_remove) { + const bool is_app_enabled = + helpers::in_range(enabled_local_apps, app->policy_app_id()); + if (!is_app_enabled) { + LOG4CXX_DEBUG(logger_, + "Waiting app: " << app->name().c_str() << " is removed."); + apps_to_register_.erase(app); + } } apps_to_register_list_lock_ptr_->Release(); |