summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLitvinenkoIra <ilytvynenko@luxoft.com>2020-02-21 15:20:19 +0200
committerLitvinenkoIra <ilytvynenko@luxoft.com>2020-02-21 15:20:19 +0200
commitf5247cbcae419e538fe6aea2ae0af4703ee0cb0e (patch)
tree763013d8ffb18c448289dc7573b767d586c0a8e8
parent68ec4e28c2d77807a94489b36cf8617e3422d3c1 (diff)
downloadsdl_core-fix/update_app_list_after_unregistration.tar.gz
Don't remove enabled WebEngine apps from pending appsfix/update_app_list_after_unregistration
-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 99024924a1..fe5e6cc08a 100644
--- a/src/components/application_manager/src/application_manager_impl.cc
+++ b/src/components/application_manager/src/application_manager_impl.cc
@@ -3086,18 +3086,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();