diff options
Diffstat (limited to 'src/components/policy/policy_regular/src/policy_manager_impl.cc')
-rw-r--r-- | src/components/policy/policy_regular/src/policy_manager_impl.cc | 59 |
1 files changed, 30 insertions, 29 deletions
diff --git a/src/components/policy/policy_regular/src/policy_manager_impl.cc b/src/components/policy/policy_regular/src/policy_manager_impl.cc index 7e3b7ccbe9..0e1cfd267a 100644 --- a/src/components/policy/policy_regular/src/policy_manager_impl.cc +++ b/src/components/policy/policy_regular/src/policy_manager_impl.cc @@ -381,9 +381,13 @@ bool PolicyManagerImpl::LoadPT(const std::string& file, return false; } - // Replace predefined policies with its actual setting, e.g. "123":"default" - // to actual values of default section - UnwrapAppPolicies(pt_update->policy_table.app_policies_section.apps); + // Checking of difference between PTU and current policy state + // Must to be done before PTU applying since it is possible, that functional + // groups, which had been present before are absent in PTU and will be + // removed after update. So in case of revoked groups system has to know + // names and ids of revoked groups before they will be removed. + const auto results = + CheckPermissionsChanges(pt_update, policy_table_snapshot); // Replace current data with updated if (!cache_->ApplyUpdate(*pt_update)) { @@ -395,14 +399,6 @@ bool PolicyManagerImpl::LoadPT(const std::string& file, } CheckPermissionsChangesAfterUpdate(*pt_update, *policy_table_snapshot); - // Checking of difference between PTU and current policy state - // Must to be done before PTU applying since it is possible, that functional - // groups, which had been present before are absent in PTU and will be - // removed after update. So in case of revoked groups system has to know - // names and ids of revoked groups before they will be removed. - const auto results = - CheckPermissionsChanges(pt_update, policy_table_snapshot); - ProcessAppPolicyCheckResults( results, pt_update->policy_table.app_policies_section.apps); @@ -459,40 +455,45 @@ void PolicyManagerImpl::ProcessActionsForAppPolicies( continue; } - if (it_actions->second.is_consent_needed) { - // Post-check after ExternalConsent consent changes - const std::string& policy_app_id = app_policy->first; - if (!IsConsentNeeded(last_device_id_, policy_app_id)) { - sync_primitives::AutoLock lock(app_permissions_diff_lock_); + const auto devices_ids = listener()->GetDevicesIds(app_policy->first); + for (const auto& device_id : devices_ids) { + if (it_actions->second.is_consent_needed) { + // Post-check after ExternalConsent consent changes + const std::string& policy_app_id = app_policy->first; + if (!IsConsentNeeded(device_id, policy_app_id)) { + sync_primitives::AutoLock lock(app_permissions_diff_lock_); - PendingPermissions::iterator app_id_diff = - app_permissions_diff_.find(policy_app_id); + PendingPermissions::iterator app_id_diff = + app_permissions_diff_.find(policy_app_id); - if (app_permissions_diff_.end() != app_id_diff) { - app_id_diff->second.appPermissionsConsentNeeded = false; + if (app_permissions_diff_.end() != app_id_diff) { + app_id_diff->second.appPermissionsConsentNeeded = false; + } } } - } - if (it_actions->second.is_notify_system) { - NotifySystem(*app_policy); - } - if (it_actions->second.is_send_permissions_to_app) { - SendPermissionsToApp(*app_policy); + if (it_actions->second.is_notify_system) { + NotifySystem(device_id, *app_policy); + } + if (it_actions->second.is_send_permissions_to_app) { + SendPermissionsToApp(device_id, *app_policy); + } } } } void PolicyManagerImpl::NotifySystem( + const std::string& device_id, const PolicyManagerImpl::AppPoliciesValueType& app_policy) const { - listener()->OnPendingPermissionChange(last_device_id_, app_policy.first); + listener()->OnPendingPermissionChange(device_id, app_policy.first); } void PolicyManagerImpl::SendPermissionsToApp( + const std::string& device_id, const PolicyManagerImpl::AppPoliciesValueType& app_policy) { const std::string app_id = app_policy.first; std::vector<FunctionalGroupPermission> group_permissons; - GetPermissionsForApp(last_device_id_, app_id, group_permissons); + GetPermissionsForApp(device_id, app_id, group_permissons); Permissions notification_data; @@ -508,7 +509,7 @@ void PolicyManagerImpl::SendPermissionsToApp( std::string default_hmi; default_hmi = "NONE"; listener()->OnPermissionsUpdated( - last_device_id_, app_id, notification_data, default_hmi); + device_id, app_id, notification_data, default_hmi); } CheckAppPolicyResults PolicyManagerImpl::CheckPermissionsChanges( |