summaryrefslogtreecommitdiff
path: root/src/components/policy/policy_regular/src/policy_manager_impl.cc
diff options
context:
space:
mode:
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.cc59
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(