summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrey Oleynik <my@email.com>2015-04-19 21:10:27 +0300
committerAndrey Oleynik <my@email.com>2015-04-23 16:35:14 +0300
commita896c4d37609e49b2ed47d41c9821f7dd30a4d1f (patch)
tree71b4398c32020ff9a4efdd6eb59a12033d236373
parent21999852e8e9e8bc46f1681cac6384d0160254d8 (diff)
downloadsmartdevicelink-a896c4d37609e49b2ed47d41c9821f7dd30a4d1f.tar.gz
APPLINK-12665, APPLINK-12666. Fixed revoked groups list sending.
-rw-r--r--src/components/application_manager/src/policies/policy_handler.cc4
-rw-r--r--src/components/policy/src/policy/src/policy_helper.cc14
2 files changed, 15 insertions, 3 deletions
diff --git a/src/components/application_manager/src/policies/policy_handler.cc b/src/components/application_manager/src/policies/policy_handler.cc
index d3d13f0af..bfef1c8f7 100644
--- a/src/components/application_manager/src/policies/policy_handler.cc
+++ b/src/components/application_manager/src/policies/policy_handler.cc
@@ -685,8 +685,10 @@ void PolicyHandler::OnPendingPermissionChange(
SendOnAppPermissionsChangedNotification(app->app_id(), permissions);
policy_manager_->RemovePendingPermissionChanges(policy_app_id);
+ // "Break" statement has to be here to continue processing in case of
+ // there is another "true" flag in permissions struct
+ break;
}
- break;
}
case mobile_apis::HMILevel::eType::HMI_BACKGROUND: {
if (permissions.isAppPermissionsRevoked) {
diff --git a/src/components/policy/src/policy/src/policy_helper.cc b/src/components/policy/src/policy/src/policy_helper.cc
index 2677e5789..700e905fa 100644
--- a/src/components/policy/src/policy/src/policy_helper.cc
+++ b/src/components/policy/src/policy/src/policy_helper.cc
@@ -76,8 +76,8 @@ bool operator()(const policy::StringsValueType& value) {
checker);
if (groups_attributes_.end() == it) {
return false;
- }
- FunctionalGroupPermission group;
+ }
+ FunctionalGroupPermission group;
group.group_alias = it->second.first;
group.group_id = it->first;
groups_permissions_.push_back(group);
@@ -152,6 +152,16 @@ bool policy::CheckAppPolicy::HasRevokedGroups(
it_groups_new, it_groups_new_end,
std::back_inserter(revoked_group_list), Compare);
+ // Remove groups which are not required user consent
+ for (policy_table::Strings::iterator it_revoked = revoked_group_list.begin();
+ revoked_group_list.end() != it_revoked; ) {
+ if (!IsConsentRequired(app_policy.first, std::string(*it_revoked))) {
+ revoked_group_list.erase(it_revoked);
+ } else {
+ ++it_revoked;
+ }
+ }
+
if (revoked_groups) {
*revoked_groups = revoked_group_list;
}