summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksandr Galiuzov <AGaliuzov@luxoft.com>2014-09-16 16:57:24 +0300
committerAleksandr Galiuzov <AGaliuzov@luxoft.com>2014-09-16 16:57:24 +0300
commita2e3630f98f1c0faf5331d4ea8476f040041764d (patch)
treef5b14cdc418f8ed3fe6853e1157f7621a03084b8
parent7c42b93d9b1b76360c039c5364678a9abc62f170 (diff)
downloadsdl_core-a2e3630f98f1c0faf5331d4ea8476f040041764d.tar.gz
Add additional check for CountConsentGroup
-rw-r--r--src/components/policy/src/policy/src/cache_manager.cc48
1 files changed, 38 insertions, 10 deletions
diff --git a/src/components/policy/src/policy/src/cache_manager.cc b/src/components/policy/src/policy/src/cache_manager.cc
index 7f5eb14913..a71cd57579 100644
--- a/src/components/policy/src/policy/src/cache_manager.cc
+++ b/src/components/policy/src/policy/src/cache_manager.cc
@@ -806,22 +806,50 @@ bool CacheManager::CountUnconsentedGroups(const std::string& policy_app_id,
const std::string& device_id,
int& result) {
LOG4CXX_TRACE_ENTER(logger_);
-#ifdef EXTENDED_POLICY
- policy_table::DeviceParams& params = (*pt_->policy_table.device_data)[device_id];
- policy_table::UserConsentRecords& ucr = *(params.user_consent_records);
- policy_table::ConsentRecords cgr = ucr[policy_app_id];
+#ifdef EXTENDED_POLICY
+ if (pt_->policy_table.app_policies.end() ==
+ pt_->policy_table.app_policies.find(policy_app_id)) {
+ return true;
+ } else if (is_default_.end() != is_default_.find(policy_app_id) ||
+ is_predata_.end() != is_predata_.find(policy_app_id)) {
+ return true;
+ }
- policy_table::ConsentGroups::const_iterator con_iter =
- cgr.consent_groups->begin();
policy_table::FunctionalGroupings::const_iterator groups_iter =
pt_->policy_table.functional_groupings.begin();
policy_table::FunctionalGroupings::const_iterator groups_iter_end =
pt_->policy_table.functional_groupings.end();
- for (; groups_iter != groups_iter_end; ++groups_iter) {
- con_iter = cgr.consent_groups->find((*groups_iter).first);
- if (con_iter != cgr.consent_groups->end()) {
- ++result;
+
+ policy_table::Strings::const_iterator app_spec_iter =
+ pt_->policy_table.app_policies[policy_app_id].groups.begin();
+
+ policy_table::Strings::const_iterator app_spec_iter_end =
+ pt_->policy_table.app_policies[policy_app_id].groups.end();
+
+ policy_table::FunctionalGroupings::iterator current_groups_iter;
+ for (; app_spec_iter != app_spec_iter_end; ++app_spec_iter) {
+ current_groups_iter = pt_->policy_table.functional_groupings.find(*app_spec_iter);
+ if (groups_iter_end != current_groups_iter) {
+ if (current_groups_iter->second.user_consent_prompt.is_initialized()) {
+ if (pt_->policy_table.device_data->end() !=
+ pt_->policy_table.device_data->find(device_id)) {
+
+ policy_table::DeviceParams& params = (*pt_->policy_table.device_data)[device_id];
+ policy_table::UserConsentRecords& ucr = *(params.user_consent_records);
+
+ if (ucr.end() != ucr.find(policy_app_id)) {
+ policy_table::ConsentRecords cgr = ucr[policy_app_id];
+ policy_table::ConsentGroups::const_iterator con_iter =
+ cgr.consent_groups->begin();
+
+ con_iter = cgr.consent_groups->find((*groups_iter).first);
+ if (con_iter != cgr.consent_groups->end()) {
+ ++result;
+ }
+ }
+ }
+ }
}
}
#endif // EXTENDED_POLICY