APPLINK-6601. Add Sending OnPermissionChange on user consent for groups.
authorAndrey Oleynik <AOleynik@luxoft.com>
Tue, 8 Apr 2014 08:09:20 +0000 (11:09 +0300)
committerJustin Dickow <jjdickow@gmail.com>
Wed, 9 Jul 2014 18:03:06 +0000 (14:03 -0400)
Signed-off-by: Justin Dickow <jjdickow@gmail.com>
Conflicts:
src/components/application_manager/include/application_manager/policies/policy_handler.h
src/components/application_manager/src/commands/hmi/on_app_permission_consent_notification.cc
src/components/application_manager/src/policies/policy_handler.cc

src/components/HMI/ffw/BasicCommunicationRPC.js
src/components/application_manager/include/application_manager/policies/policy_handler.h
src/components/application_manager/src/commands/hmi/on_app_permission_consent_notification.cc
src/components/application_manager/src/hmi_command_factory.cc
src/components/application_manager/src/policies/policy_handler.cc
src/components/hmi_message_handler/src/messagebroker_adapter.cc
src/components/policy

index 2509f4a..0701ea5 100644 (file)
@@ -667,14 +667,14 @@ if (request.method == "BasicCommunication.GetSystemInfo") {
          */
         OnAppPermissionConsent: function(consentedFunctions, source, appID) {
 
-            Em.Logger.log("FFW.BasicCommunication.OnAppPermissionConsent");
+            Em.Logger.log("FFW.SDL.OnAppPermissionConsent");
 
             // send repsonse
             var JSONMessage = {
                 "jsonrpc": "2.0",
-                "method": "BasicCommunication.OnAppPermissionConsent",
+                "method": "SDL.OnAppPermissionConsent",
                 "params": {
-                    "consentedFunctions": allowed,
+                    "consentedFunctions": consentedFunctions,
                     "source": source
                 }
             };
index bc875f9..83382b8 100644 (file)
@@ -77,6 +77,11 @@ class PolicyHandler : public utils::Singleton<PolicyHandler>,
   void CheckAppPolicyState(const std::string& application_id);
 
   /**
+   * Starts proccess updating policy table
+   */
+  void StartPTExchange(bool skip_device_selection = false);
+
+  /**
    * Lets client to notify PolicyHandler that more kilometers expired
    * @param kms New value of odometer
    */
@@ -115,12 +120,6 @@ class PolicyHandler : public utils::Singleton<PolicyHandler>,
   void PTExchangeAtIgnition();
 
   /**
-   * Initializes PT exchange at user request
-   * @param correlation_id correlation id of request
-   */
-  void PTExchangeAtUserRequest(uint32_t correlation_id);
-
-  /**
    * @brief Save device info for specific device to policy table
    * @param device_id Device mac address
    * @param device_info Device params
@@ -160,12 +159,6 @@ class PolicyHandler : public utils::Singleton<PolicyHandler>,
   void OnGetStatusUpdate(const uint32_t correlation_id);
 
   /**
-      * @brief Get Urls for service
-      * @param
-      */
-
-
-    /**
    * @brief Send notification to HMI with changed policy update status
    * @param status Current policy update state
    */
@@ -179,27 +172,6 @@ class PolicyHandler : public utils::Singleton<PolicyHandler>,
   void OnCurrentDeviceIdUpdateRequired(const std::string& policy_app_id);
 
   /**
-   * @brief Set parameters from OnSystemInfoChanged to policy table
-   * @param language System language
-   */
-  void OnSystemInfoChanged(const std::string& language);
-
-  /**
-   * @brief Save data from GetSystemInfo request to policy table
-   * @param ccpu_version CCPU version
-   * @param wers_country_code WERS country code
-   * @param language System language
-   */
-  void OnGetSystemInfo(const std::string& ccpu_version,
-                       const std::string& wers_country_code,
-                       const std::string& language);
-
-  /**
-   * @brief Send request to HMI to get update on system parameters
-   */
-  virtual void OnSystemInfoUpdateRequired();
-
-  /**
    * Adds statistics info
    * @param type type of info
    */
@@ -211,12 +183,6 @@ class PolicyHandler : public utils::Singleton<PolicyHandler>,
    */
   void OnSystemError(int code);
 
-  /**
-   * @brief Choose application id to be used for snapshot sending
-   * @return Application id or 0, if there are no applications registered
-   */
-  uint32_t GetAppIdForSending();
-
  protected:
   /**
    * Starts next retry exchange policy table
@@ -229,12 +195,13 @@ class PolicyHandler : public utils::Singleton<PolicyHandler>,
    */
   void PTExchangeAtOdometer(int kilometers);
 
+ private:
   /**
-     * Starts proccess updating policy table
+   * @brief Choose application id to be used for snapshot sending
+   * @return Application id or 0, if there are no applications registered
    */
-    void StartPTExchange(bool skip_device_selection = false);
+  uint32_t GetAppIdForSending();
 
- private:
   /**
    * @brief Choose device according to app HMI status and user consent for
    * device
index 708766d..b347984 100644 (file)
@@ -41,7 +41,7 @@ namespace application_manager {
 namespace commands {
 
 OnAppPermissionConsentNotification::OnAppPermissionConsentNotification(const MessageSharedPtr& message)
-  : NotificationFromHMI(message) {
+    : NotificationFromHMI(message) {
 }
 
 OnAppPermissionConsentNotification::~OnAppPermissionConsentNotification() {
@@ -57,45 +57,42 @@ 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;
     }
   }
 
-  if (msg_params.keyExists("consentedFunctions")) {
-    smart_objects::SmartArray* user_consent =
+  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;
-      }
-
-      permission_consent.group_permissions.push_back(permissions);
+  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.consent_source = msg_params["source"].asString();
-
-    policy::PolicyHandler::instance()->OnAppPermissionConsent(
-      permission_consent);
+    permission_consent.group_permissions.push_back(permissions);
   }
+
+  permission_consent.consent_source = msg_params["source"].asString();
+
+  policy::PolicyHandler::instance()->OnAppPermissionConsent(permission_consent);
 }
 
 }  // namespace commands
index 54fa2b4..14ad5aa 100644 (file)
@@ -61,6 +61,7 @@
 #include "application_manager/commands/hmi/mixing_audio_supported_response.h"
 #include "application_manager/commands/hmi/on_allow_sdl_functionality_notification.h"
 #include "application_manager/commands/hmi/on_app_permission_changed_notification.h"
+#include "application_manager/commands/hmi/on_app_permission_consent_notification.h"
 #include "application_manager/commands/hmi/on_app_activated_notification.h"
 #include "application_manager/commands/hmi/on_sdl_consent_needed_notification.h"
 #include "application_manager/commands/hmi/on_exit_all_applications_notification.h"
@@ -338,6 +339,10 @@ CommandSharedPtr HMICommandFactory::CreateCommand(
       command.reset(new commands::OnStatusUpdateNotification(message));
       break;
     }
+    case hmi_apis::FunctionID::SDL_OnAppPermissionConsent: {
+      command.reset(new commands::OnAppPermissionConsentNotification(message));
+      break;
+    }
     case hmi_apis::FunctionID::BasicCommunication_MixingAudioSupported: {
       if (is_response) {
         command.reset(new commands::MixingAudioSupportedResponse(message));
index d4bdd6b..66ab2aa 100644 (file)
@@ -81,6 +81,7 @@ PolicyManager* PolicyHandler::LoadPolicyLibrary(const std::string& path) {
     policy_manager_->set_listener(this);
 #if defined (EXTENDED_POLICY)
     exchange_handler_ = new PTExchangeHandlerImpl(this);
+    //exchange_handler_ = new PTExchangeHandlerExt(this);
 #else
     exchange_handler_ = new PTExchangeHandlerImpl(this);
 #endif
@@ -297,6 +298,26 @@ void PolicyHandler::OnUpdateStatusChanged(PolicyTableStatus status) {
     ConvertUpdateStatus(status));
 }
 
+void PolicyHandler::OnCurrentDeviceIdUpdateRequired(
+    const std::string& policy_app_id) {
+  LOG4CXX_INFO(logger_, "OnCurrentDeviceIdUpdateRequired");
+  // TODO(AOleynik): Get registered device info from SDL
+  application_manager::ApplicationSharedPtr app =
+      application_manager::ApplicationManagerImpl::instance()
+      ->application_by_policy_id(policy_app_id);
+
+  if (!app.valid()) {
+    LOG4CXX_WARN(logger_, "Application with id '" << policy_app_id << "' "
+                 "not found within registered applications.");
+    policy_manager_->UpdateCurrentDeviceId(std::string());
+    return;
+  }
+  DeviceParams device_param;
+  application_manager::MessageHelper::GetDeviceInfoForApp(app->app_id(),
+                                                          &device_param);
+  policy_manager_->UpdateCurrentDeviceId(device_param.device_mac_address);
+}
+
 void PolicyHandler::OnAppRevoked(const std::string& policy_app_id) {
   LOG4CXX_INFO(logger_, "OnAppRevoked");
   if (!policy_manager_) {
@@ -379,7 +400,6 @@ bool PolicyHandler::SendMessageToSDK(const BinaryMessage& pt_string) {
                    " has no application id.");
       return false;
     }
-
     url = policy_manager_->GetUpdateUrl(mobile_app_id);
   }
   LOG4CXX_INFO(
index ca3271c..410852f 100644 (file)
@@ -124,6 +124,7 @@ void MessageBrokerAdapter::SubscribeTo() {
   MessageBrokerController::subscribeTo("VR.Stopped");
   MessageBrokerController::subscribeTo("BasicCommunication.OnSystemRequest");
   MessageBrokerController::subscribeTo("BasicCommunication.OnIgnitionCycleOver");
+  MessageBrokerController::subscribeTo("SDL.OnAppPermissionConsent");
   MessageBrokerController::subscribeTo("SDL.OnAllowSDLFunctionality");
 
   LOG4CXX_INFO(logger_, "Subscribed to notifications.");
index 35e1673..3bef801 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 35e1673bd409393837b254158c7c8d2ba34acd53
+Subproject commit 3bef801ae41c14942d8b1a79335fb60e9892254f