summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLitvinenkoIra <ilytvynenko@luxoft.com>2020-02-21 15:20:19 +0200
committerAndriy Byzhynar <abyzhynar@luxoft.com>2020-02-24 18:27:49 +0200
commit51f5bbe9bdd4555e0359a97c5ba59055f07009af (patch)
treeb868a093a3564c53bb2adc71a62306c228e1eb4b
parent2c784da15f120869d25267bd5b778d983504440a (diff)
downloadsdl_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.cc24
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();