summaryrefslogtreecommitdiff
path: root/src/components/application_manager/src/application_manager_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/application_manager/src/application_manager_impl.cc')
-rw-r--r--src/components/application_manager/src/application_manager_impl.cc48
1 files changed, 30 insertions, 18 deletions
diff --git a/src/components/application_manager/src/application_manager_impl.cc b/src/components/application_manager/src/application_manager_impl.cc
index d67ffbe348..6187a6daba 100644
--- a/src/components/application_manager/src/application_manager_impl.cc
+++ b/src/components/application_manager/src/application_manager_impl.cc
@@ -295,13 +295,6 @@ ApplicationSharedPtr ApplicationManagerImpl::application_by_policy_id(
return FindApp(accessor, finder);
}
-ApplicationSharedPtr ApplicationManagerImpl::application_by_name(
- const std::string& app_name) const {
- AppNamePredicate finder(app_name);
- DataAccessor<ApplicationSet> accessor = applications();
- return FindApp(accessor, finder);
-}
-
ApplicationSharedPtr ApplicationManagerImpl::pending_application_by_policy_id(
const std::string& policy_app_id) const {
PolicyAppIdPredicate finder(policy_app_id);
@@ -309,6 +302,13 @@ ApplicationSharedPtr ApplicationManagerImpl::pending_application_by_policy_id(
return FindPendingApp(accessor, finder);
}
+ApplicationSharedPtr ApplicationManagerImpl::application_by_name(
+ const std::string& app_name) const {
+ AppNamePredicate finder(app_name);
+ DataAccessor<ApplicationSet> accessor = applications();
+ return FindApp(accessor, finder);
+}
+
ApplicationSharedPtr
ApplicationManagerImpl::reregister_application_by_policy_id(
const std::string& policy_app_id) const {
@@ -420,6 +420,13 @@ ApplicationManagerImpl::applications_by_button(uint32_t button) {
return FindAllApps(accessor, finder);
}
+std::vector<ApplicationSharedPtr> ApplicationManagerImpl::applications_by_name(
+ const std::string& app_name) const {
+ AppNamePredicate finder(app_name);
+ DataAccessor<ApplicationSet> accessor = applications();
+ return FindAllApps(accessor, finder);
+}
+
struct IsApplication {
IsApplication(connection_handler::DeviceHandle device_handle,
const std::string& policy_app_id)
@@ -1026,15 +1033,23 @@ void ApplicationManagerImpl::RefreshCloudAppInformation() {
} else if (mobile_apis::HybridAppPreference::MOBILE ==
hybrid_app_preference) {
auto nickname_it = nicknames.begin();
+ bool duplicate_found = false;
for (; nickname_it != nicknames.end(); ++nickname_it) {
- auto app = application_by_name(*nickname_it);
- if (app.use_count() != 0) {
- LOG4CXX_ERROR(
- logger_,
- "Mobile app already registered for cloud app: " << *nickname_it);
- continue;
+ auto apps = applications_by_name(*nickname_it);
+ for (auto app : apps) {
+ if (app.use_count() != 0 && !app->is_cloud_app()) {
+ LOG4CXX_ERROR(logger_,
+ "Mobile app already registered for cloud app: "
+ << *nickname_it);
+ duplicate_found = true;
+ break;
+ }
}
}
+
+ if (duplicate_found) {
+ continue;
+ }
}
pending_device_map_.insert(
@@ -3130,13 +3145,10 @@ void ApplicationManagerImpl::UnregisterApplication(
"There is no more SDL4 apps with device handle: " << handle);
RemoveAppsWaitingForRegistration(handle);
- RefreshCloudAppInformation();
- SendUpdateAppList();
- } else if (app_to_remove->is_cloud_app()) {
- RefreshCloudAppInformation();
- SendUpdateAppList();
}
}
+ RefreshCloudAppInformation();
+ SendUpdateAppList();
}
commands_holder_->Clear(app_to_remove);