summaryrefslogtreecommitdiff
path: root/src/components/policy/policy_external/src/policy_manager_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/policy/policy_external/src/policy_manager_impl.cc')
-rw-r--r--src/components/policy/policy_external/src/policy_manager_impl.cc68
1 files changed, 30 insertions, 38 deletions
diff --git a/src/components/policy/policy_external/src/policy_manager_impl.cc b/src/components/policy/policy_external/src/policy_manager_impl.cc
index 8a80e7755b..d50779383a 100644
--- a/src/components/policy/policy_external/src/policy_manager_impl.cc
+++ b/src/components/policy/policy_external/src/policy_manager_impl.cc
@@ -385,53 +385,45 @@ CheckAppPolicyResults PolicyManagerImpl::CheckPermissionsChanges(
void PolicyManagerImpl::ProcessAppPolicyCheckResults(
const CheckAppPolicyResults& results,
const policy_table::ApplicationPolicies& app_policies) {
- CheckAppPolicyResults::const_iterator it_results = results.begin();
+ ApplicationsPoliciesActions actions_for_apps_policies;
+ FillActionsForAppPolicies filler(actions_for_apps_policies, app_policies);
- for (; results.end() != it_results; ++it_results) {
- const policy_table::ApplicationPolicies::const_iterator app_policy =
- app_policies.find(it_results->first);
+ std::for_each(results.begin(), results.end(), filler);
+ ProcessActionsForAppPolicies(actions_for_apps_policies, app_policies);
+}
+
+void PolicyManagerImpl::ProcessActionsForAppPolicies(
+ const ApplicationsPoliciesActions& actions,
+ const policy_table::ApplicationPolicies& app_policies) {
+ ApplicationsPoliciesActions::const_iterator it_actions = actions.begin();
+ for (; it_actions != actions.end(); ++it_actions) {
+ policy_table::ApplicationPolicies::const_iterator app_policy =
+ app_policies.find(it_actions->first);
if (app_policies.end() == app_policy) {
continue;
}
- if (IsPredefinedApp(*app_policy)) {
- 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(policy_app_id)) {
+ sync_primitives::AutoLock lock(app_permissions_diff_lock_);
- switch (it_results->second) {
- case RESULT_NO_CHANGES:
- continue;
- case RESULT_APP_REVOKED:
- NotifySystem(*app_policy);
- continue;
- case RESULT_NICKNAME_MISMATCH:
- NotifySystem(*app_policy);
- continue;
- case RESULT_CONSENT_NEEDED:
- case RESULT_PERMISSIONS_REVOKED_AND_CONSENT_NEEDED: {
- // Post-check after ExternalConsent consent changes
- const std::string policy_app_id = app_policy->first;
- if (!IsConsentNeeded(policy_app_id)) {
- sync_primitives::AutoLock lock(app_permissions_diff_lock_);
-
- 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;
- }
+ 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;
}
- } break;
- case RESULT_CONSENT_NOT_REQIURED:
- case RESULT_PERMISSIONS_REVOKED:
- case RESULT_REQUEST_TYPE_CHANGED:
- break;
- default:
- continue;
+ }
+ }
+ if (it_actions->second.is_notify_system) {
+ NotifySystem(*app_policy);
+ }
+ if (it_actions->second.is_send_permissions_to_app) {
+ SendPermissionsToApp(*app_policy);
}
- NotifySystem(*app_policy);
- SendPermissionsToApp(*app_policy);
}
}