Hot fix for on app consent crash.
authorPolina Vyshnevska <PVyshnevska@luxoft.com>
Thu, 10 Apr 2014 13:13:41 +0000 (16:13 +0300)
committerJustin Dickow <jjdickow@gmail.com>
Wed, 9 Jul 2014 18:12:28 +0000 (14:12 -0400)
src/components/application_manager/src/commands/hmi/on_app_permission_consent_notification.cc

index b347984..708766d 100644 (file)
@@ -41,7 +41,7 @@ namespace application_manager {
 namespace commands {
 
 OnAppPermissionConsentNotification::OnAppPermissionConsentNotification(const MessageSharedPtr& message)
-    : NotificationFromHMI(message) {
+  : NotificationFromHMI(message) {
 }
 
 OnAppPermissionConsentNotification::~OnAppPermissionConsentNotification() {
@@ -57,42 +57,45 @@ void OnAppPermissionConsentNotification::Run() {
   if (msg_params.keyExists(strings::app_id)) {
     uint32_t connection_key = msg_params[strings::app_id].asUInt();
     ApplicationSharedPtr app =
-        application_manager::ApplicationManagerImpl::instance()
-        ->application(connection_key);
+      application_manager::ApplicationManagerImpl::instance()
+      ->application(connection_key);
 
     if (app.valid()) {
       permission_consent.policy_app_id = app->mobile_app_id()->asString();
       policy::DeviceParams device_params;
       application_manager::MessageHelper::GetDeviceInfoForHandle(
-            app->device(),
-            &device_params);
+        app->device(),
+        &device_params);
 
       permission_consent.device_id = device_params.device_mac_address;
     }
   }
 
-  smart_objects::SmartArray* user_consent =
+  if (msg_params.keyExists("consentedFunctions")) {
+    smart_objects::SmartArray* user_consent =
       msg_params["consentedFunctions"].asArray();
 
-  smart_objects::SmartArray::const_iterator it = user_consent->begin();
-  smart_objects::SmartArray::const_iterator it_end = user_consent->end();
-  for (; it != it_end; ++it) {
-    policy::FunctionalGroupPermission permissions;
-    permissions.group_id = (*it)["id"].asInt();
-    permissions.group_alias = (*it)["name"].asString();
-    if ((*it).keyExists("allowed")) {
-      permissions.state = (*it)["allowed"].asBool() ? policy::kAllowed :
-                                                      policy::kDisallowed;
-    } else {
-      permissions.state = policy::kUndefined;
+    smart_objects::SmartArray::const_iterator it = user_consent->begin();
+    smart_objects::SmartArray::const_iterator it_end = user_consent->end();
+    for (; it != it_end; ++it) {
+      policy::FunctionalGroupPermission permissions;
+      permissions.group_id = (*it)["id"].asInt();
+      permissions.group_alias = (*it)["name"].asString();
+      if ((*it).keyExists("allowed")) {
+        permissions.state = (*it)["allowed"].asBool() ? policy::kAllowed :
+                            policy::kDisallowed;
+      } else {
+        permissions.state = policy::kUndefined;
+      }
+
+      permission_consent.group_permissions.push_back(permissions);
     }
 
-    permission_consent.group_permissions.push_back(permissions);
-  }
-
-  permission_consent.consent_source = msg_params["source"].asString();
+    permission_consent.consent_source = msg_params["source"].asString();
 
-  policy::PolicyHandler::instance()->OnAppPermissionConsent(permission_consent);
+    policy::PolicyHandler::instance()->OnAppPermissionConsent(
+      permission_consent);
+  }
 }
 
 }  // namespace commands