summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrey Oleynik <AOleynik@luxoft.com>2014-04-08 11:09:20 +0300
committerJustin Dickow <jjdickow@gmail.com>2014-07-09 14:03:06 -0400
commit6f56a209064ba9618066e866adcc21f2486ae277 (patch)
tree8110e79da0da8bc153cf0bd8d991b938a49241c6
parentb1c042fe4ea56417325d168d30be9fd370e968e0 (diff)
downloadsmartdevicelink-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
-rw-r--r--src/components/HMI/ffw/BasicCommunicationRPC.js6
-rw-r--r--src/components/application_manager/include/application_manager/policies/policy_handler.h51
-rw-r--r--src/components/application_manager/src/commands/hmi/on_app_permission_consent_notification.cc47
-rw-r--r--src/components/application_manager/src/hmi_command_factory.cc5
-rw-r--r--src/components/application_manager/src/policies/policy_handler.cc22
-rw-r--r--src/components/hmi_message_handler/src/messagebroker_adapter.cc1
m---------src/components/policy0
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