diff options
author | Andrey Oleynik <AOleynik@luxoft.com> | 2014-04-08 11:09:20 +0300 |
---|---|---|
committer | Justin Dickow <jjdickow@gmail.com> | 2014-07-09 14:03:06 -0400 |
commit | 6f56a209064ba9618066e866adcc21f2486ae277 (patch) | |
tree | 8110e79da0da8bc153cf0bd8d991b938a49241c6 | |
parent | b1c042fe4ea56417325d168d30be9fd370e968e0 (diff) | |
download | smartdevicelink-6f56a209064ba9618066e866adcc21f2486ae277.tar.gz |
APPLINK-6601. Add Sending OnPermissionChange on user consent for groups.
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
7 files changed, 61 insertions, 71 deletions
diff --git a/src/components/HMI/ffw/BasicCommunicationRPC.js b/src/components/HMI/ffw/BasicCommunicationRPC.js index 2509f4a9f..0701ea55f 100644 --- a/src/components/HMI/ffw/BasicCommunicationRPC.js +++ b/src/components/HMI/ffw/BasicCommunicationRPC.js @@ -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 } }; diff --git a/src/components/application_manager/include/application_manager/policies/policy_handler.h b/src/components/application_manager/include/application_manager/policies/policy_handler.h index bc875f986..83382b885 100644 --- a/src/components/application_manager/include/application_manager/policies/policy_handler.h +++ b/src/components/application_manager/include/application_manager/policies/policy_handler.h @@ -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 diff --git a/src/components/application_manager/src/commands/hmi/on_app_permission_consent_notification.cc b/src/components/application_manager/src/commands/hmi/on_app_permission_consent_notification.cc index 708766d56..b34798499 100644 --- a/src/components/application_manager/src/commands/hmi/on_app_permission_consent_notification.cc +++ b/src/components/application_manager/src/commands/hmi/on_app_permission_consent_notification.cc @@ -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 diff --git a/src/components/application_manager/src/hmi_command_factory.cc b/src/components/application_manager/src/hmi_command_factory.cc index 54fa2b437..14ad5aa28 100644 --- a/src/components/application_manager/src/hmi_command_factory.cc +++ b/src/components/application_manager/src/hmi_command_factory.cc @@ -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)); diff --git a/src/components/application_manager/src/policies/policy_handler.cc b/src/components/application_manager/src/policies/policy_handler.cc index d4bdd6ba4..66ab2aa64 100644 --- a/src/components/application_manager/src/policies/policy_handler.cc +++ b/src/components/application_manager/src/policies/policy_handler.cc @@ -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( diff --git a/src/components/hmi_message_handler/src/messagebroker_adapter.cc b/src/components/hmi_message_handler/src/messagebroker_adapter.cc index ca3271cd2..410852ff1 100644 --- a/src/components/hmi_message_handler/src/messagebroker_adapter.cc +++ b/src/components/hmi_message_handler/src/messagebroker_adapter.cc @@ -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."); diff --git a/src/components/policy b/src/components/policy -Subproject 35e1673bd409393837b254158c7c8d2ba34acd5 +Subproject 3bef801ae41c14942d8b1a79335fb60e9892254 |