diff options
author | mked-luxoft <mked@luxoft.com> | 2019-08-21 15:00:38 +0300 |
---|---|---|
committer | mked-luxoft <mked@luxoft.com> | 2019-08-27 16:28:11 +0300 |
commit | e448d37cc631291194aab520eb3ef45cae5e24b3 (patch) | |
tree | c5cdd18112e50af992945366654dd5cd502e74a9 | |
parent | 2814c85a33ebba35cf97fbbd00d896260e75ba07 (diff) | |
download | sdl_core-feature/rpc_message_protection.tar.gz |
Fixes after rebasefeature/rpc_message_protection
3 files changed, 84 insertions, 57 deletions
diff --git a/src/components/application_manager/test/policy_handler_test.cc b/src/components/application_manager/test/policy_handler_test.cc index 908e7557d2..94567e893d 100644 --- a/src/components/application_manager/test/policy_handler_test.cc +++ b/src/components/application_manager/test/policy_handler_test.cc @@ -523,7 +523,8 @@ TEST_F(PolicyHandlerTest, OnPermissionsUpdated_TwoParams_InvalidApp_UNSUCCESS) { EXPECT_CALL(*mock_policy_manager_, GetAppEncryptionRequired(kPolicyAppId_)) .Times(0); EXPECT_CALL(mock_message_helper_, - SendOnPermissionsChangeNotification(_, _, _, _)).Times(0); + SendOnPermissionsChangeNotification(_, _, _, _)) + .Times(0); Permissions permissions; policy_handler_.OnPermissionsUpdated(kDeviceId, kPolicyAppId_, permissions); @@ -673,9 +674,9 @@ TEST_F(PolicyHandlerTest, CheckPermissions) { EXPECT_CALL(*mock_app_, device()).WillOnce(Return(device)); EXPECT_CALL(*mock_app_, policy_app_id()).WillOnce(Return(kPolicyAppId_)); #ifdef EXTERNAL_PROPRIETARY_MODE - EXPECT_CALL( - *mock_policy_manager_, - CheckPermissions(kPolicyAppId_, kHmiLevel_, kRpc_, kRpc_params, _)); + EXPECT_CALL(*mock_policy_manager_, + CheckPermissions( + kDeviceId, kPolicyAppId_, kHmiLevel_, kRpc_, kRpc_params, _)); #else // EXTERNAL_PROPRIETARY_MODE EXPECT_CALL(*mock_policy_manager_, diff --git a/src/components/policy/policy_external/src/policy_manager_impl.cc b/src/components/policy/policy_external/src/policy_manager_impl.cc index 13972f11e3..255f6050a6 100644 --- a/src/components/policy/policy_external/src/policy_manager_impl.cc +++ b/src/components/policy/policy_external/src/policy_manager_impl.cc @@ -719,10 +719,11 @@ void PolicyManagerImpl::OnAppsSearchCompleted(const bool trigger_ptu) { } const std::vector<std::string> PolicyManagerImpl::GetAppRequestTypes( + const transport_manager::DeviceHandle& device_handle, const std::string policy_app_id) const { std::vector<std::string> request_types; - if (kDeviceDisallowed == - cache_->GetDeviceConsent(GetCurrentDeviceId(policy_app_id))) { + if (kDeviceAllowed != cache_->GetDeviceConsent( + GetCurrentDeviceId(device_handle, policy_app_id))) { cache_->GetAppRequestTypes(kPreDataConsentId, request_types); } else { cache_->GetAppRequestTypes(policy_app_id, request_types); @@ -822,7 +823,8 @@ bool PolicyManagerImpl::UnknownRPCPassthroughAllowed( return cache_->UnknownRPCPassthroughAllowed(policy_app_id); } -void PolicyManagerImpl::CheckPermissions(const PTString& app_id, +void PolicyManagerImpl::CheckPermissions(const PTString& device_id, + const PTString& app_id, const PTString& hmi_level, const PTString& rpc, const RPCParams& rpc_params, @@ -830,9 +832,6 @@ void PolicyManagerImpl::CheckPermissions(const PTString& app_id, LOG4CXX_INFO(logger_, "CheckPermissions for " << app_id << " and rpc " << rpc << " for " << hmi_level << " level."); - - const std::string device_id = GetCurrentDeviceId(app_id); - Permissions rpc_permissions; // Check, if there are calculated permission present in cache @@ -1002,9 +1001,8 @@ policy_table::Strings PolicyManagerImpl::GetGroupsNames( } void PolicyManagerImpl::SendNotificationOnPermissionsUpdated( - const std::string& application_id) { + const std::string& device_id, const std::string& application_id) { LOG4CXX_AUTO_TRACE(logger_); - const std::string device_id = GetCurrentDeviceId(application_id); if (device_id.empty()) { LOG4CXX_WARN(logger_, "Couldn't find device info for application id " @@ -1032,15 +1030,16 @@ void PolicyManagerImpl::SendNotificationOnPermissionsUpdated( const ApplicationOnDevice who = {device_id, application_id}; if (access_remote_->IsAppRemoteControl(who)) { - listener()->OnPermissionsUpdated(application_id, notification_data); + listener()->OnPermissionsUpdated( + device_id, application_id, notification_data); return; } std::string default_hmi; - GetDefaultHmi(application_id, &default_hmi); + GetDefaultHmi(device_id, application_id, &default_hmi); listener()->OnPermissionsUpdated( - application_id, notification_data, default_hmi); + device_id, application_id, notification_data, default_hmi); } bool PolicyManagerImpl::CleanupUnpairedDevices() { @@ -1073,14 +1072,18 @@ void PolicyManagerImpl::SetUserConsentForDevice(const std::string& device_id, } bool PolicyManagerImpl::ReactOnUserDevConsentForApp( - const std::string& app_id, const bool is_device_allowed) { - std::vector<std::string> current_request_types = GetAppRequestTypes(app_id); + const transport_manager::DeviceHandle& device_handle, + const std::string& app_id, + const bool is_device_allowed) { + std::vector<std::string> current_request_types = + GetAppRequestTypes(device_handle, app_id); std::string current_priority, new_priority; GetPriority(app_id, ¤t_priority); bool result = cache_->ReactOnUserDevConsentForApp(app_id, is_device_allowed); - std::vector<std::string> new_request_types = GetAppRequestTypes(app_id); + std::vector<std::string> new_request_types = + GetAppRequestTypes(device_handle, app_id); GetPriority(app_id, &new_priority); std::sort(current_request_types.begin(), current_request_types.end()); std::sort(new_request_types.begin(), new_request_types.end()); @@ -1105,7 +1108,8 @@ bool PolicyManagerImpl::ReactOnUserDevConsentForApp( } if (permissions.requestTypeChanged || (!permissions.priority.empty())) { - listener_->SendOnAppPermissionsChanged(permissions, app_id); + auto device_id = GetCurrentDeviceId(device_handle, app_id); + listener_->SendOnAppPermissionsChanged(permissions, device_id, app_id); } return result; } @@ -1223,6 +1227,7 @@ void PolicyManagerImpl::CheckPendingPermissionsChanges( } void PolicyManagerImpl::NotifyPermissionsChanges( + const std::string& device_id, const std::string& policy_app_id, const std::vector<FunctionalGroupPermission>& app_group_permissions) { LOG4CXX_AUTO_TRACE(logger_); @@ -1238,7 +1243,7 @@ void PolicyManagerImpl::NotifyPermissionsChanges( PrepareNotificationData( functional_groups, app_groups, app_group_permissions, notification_data); - listener()->OnPermissionsUpdated(policy_app_id, notification_data); + listener()->OnPermissionsUpdated(device_id, policy_app_id, notification_data); } void PolicyManagerImpl::SetUserConsentForApp( @@ -1277,14 +1282,15 @@ void PolicyManagerImpl::SetUserConsentForApp( CheckPendingPermissionsChanges(verified_permissions.policy_app_id, updated_app_group_permissons); - NotifyPermissionsChanges(verified_permissions.policy_app_id, + NotifyPermissionsChanges(verified_permissions.device_id, + verified_permissions.policy_app_id, updated_app_group_permissons); } -bool PolicyManagerImpl::GetDefaultHmi(const std::string& policy_app_id, +bool PolicyManagerImpl::GetDefaultHmi(const std::string& device_id, + const std::string& policy_app_id, std::string* default_hmi) const { LOG4CXX_AUTO_TRACE(logger_); - const std::string device_id = GetCurrentDeviceId(policy_app_id); DeviceConsent device_consent = GetUserConsentForDevice(device_id); const std::string app_id = policy::kDeviceAllowed != device_consent ? kPreDataConsentId @@ -1477,9 +1483,11 @@ void PolicyManagerImpl::GetPermissionsForApp( } std::string& PolicyManagerImpl::GetCurrentDeviceId( + const transport_manager::DeviceHandle& device_handle, const std::string& policy_app_id) const { LOG4CXX_INFO(logger_, "GetDeviceInfo"); - last_device_id_ = listener()->OnCurrentDeviceIdUpdateRequired(policy_app_id); + last_device_id_ = + listener()->OnCurrentDeviceIdUpdateRequired(device_handle, policy_app_id); return last_device_id_; } @@ -1583,15 +1591,16 @@ void PolicyManagerImpl::UpdateAppConsentWithExternalConsent( } void PolicyManagerImpl::NotifySystem( - const PolicyManagerImpl::AppPoliciesValueType& app_policy) const { - listener()->OnPendingPermissionChange(app_policy.first); + const std::string& device_id, + const AppPoliciesValueType& app_policy) const { + listener()->OnPendingPermissionChange(device_id, app_policy.first); } void PolicyManagerImpl::SendPermissionsToApp( + const std::string& device_id, const PolicyManagerImpl::AppPoliciesValueType& app_policy) { const std::string app_id = app_policy.first; - const std::string device_id = GetCurrentDeviceId(app_id); if (device_id.empty()) { LOG4CXX_WARN(logger_, "Couldn't find device info for application id: " << app_id); @@ -1614,6 +1623,7 @@ void PolicyManagerImpl::SendPermissionsToApp( LOG4CXX_INFO(logger_, "Send notification for application_id: " << app_id); listener()->OnPermissionsUpdated( + device_id, app_id, notification_data, policy_table::EnumToJsonString(app_policy.second.default_hmi)); @@ -1755,6 +1765,17 @@ void PolicyManagerImpl::KmsChanged(int kilometers) { } } +const boost::optional<bool> PolicyManagerImpl::LockScreenDismissalEnabledState() + const { + return cache_->LockScreenDismissalEnabledState(); +} + +const boost::optional<std::string> +PolicyManagerImpl::LockScreenDismissalWarningMessage( + const std::string& language) const { + return cache_->LockScreenDismissalWarningMessage(language); +} + void PolicyManagerImpl::IncrementIgnitionCycles() { cache_->IncrementIgnitionCycles(); } @@ -1861,9 +1882,9 @@ bool PolicyManagerImpl::IsApplicationRevoked(const std::string& app_id) const { return cache_->IsApplicationRevoked(app_id); } -bool PolicyManagerImpl::IsConsentNeeded(const std::string& app_id) { +bool PolicyManagerImpl::IsConsentNeeded(const std::string& device_id, + const std::string& app_id) { LOG4CXX_AUTO_TRACE(logger_); - const std::string device_id = GetCurrentDeviceId(app_id); int count = cache_->CountUnconsentedGroups(app_id, device_id); LOG4CXX_DEBUG(logger_, "There are: " << count << " unconsented groups."); return count != 0; @@ -1874,7 +1895,7 @@ void PolicyManagerImpl::SetVINValue(const std::string& value) { } AppPermissions PolicyManagerImpl::GetAppPermissionsChanges( - const std::string& policy_app_id) { + const std::string& device_id, const std::string& policy_app_id) { PendingPermissions::iterator app_id_diff = app_permissions_diff_.find(policy_app_id); @@ -1883,7 +1904,8 @@ AppPermissions PolicyManagerImpl::GetAppPermissionsChanges( if (app_permissions_diff_.end() != app_id_diff) { permissions = app_id_diff->second; } else { - permissions.appPermissionsConsentNeeded = IsConsentNeeded(policy_app_id); + permissions.appPermissionsConsentNeeded = + IsConsentNeeded(device_id, policy_app_id); permissions.appRevoked = IsApplicationRevoked(policy_app_id); GetPriority(permissions.application_id, &permissions.priority); } @@ -1912,9 +1934,9 @@ void PolicyManagerImpl::MarkUnpairedDevice(const std::string& device_id) { } void PolicyManagerImpl::OnAppRegisteredOnMobile( - const std::string& application_id) { + const std::string& device_id, const std::string& application_id) { StartPTExchange(); - SendNotificationOnPermissionsUpdated(application_id); + SendNotificationOnPermissionsUpdated(device_id, application_id); } void PolicyManagerImpl::OnDeviceSwitching(const std::string& device_id_from, @@ -2003,20 +2025,20 @@ class CallStatusChange : public utils::Callable { }; StatusNotifier PolicyManagerImpl::AddApplication( + const std::string& device_id, const std::string& application_id, const rpc::policy_table_interface_base::AppHmiTypes& hmi_types) { LOG4CXX_AUTO_TRACE(logger_); - const std::string device_id = GetCurrentDeviceId(application_id); DeviceConsent device_consent = GetUserConsentForDevice(device_id); sync_primitives::AutoLock lock(apps_registration_lock_); if (IsNewApplication(application_id)) { LOG4CXX_DEBUG(logger_, "Adding new application"); - AddNewApplication(application_id, device_consent); + AddNewApplication(device_id, application_id, device_consent); return std::make_shared<CallStatusChange>(update_status_manager_, device_consent); } LOG4CXX_DEBUG(logger_, "Promote existed application"); - PromoteExistedApplication(application_id, device_consent); + PromoteExistedApplication(device_id, application_id, device_consent); update_status_manager_.OnExistedApplicationAdded(cache_->UpdateRequired()); return std::make_shared<utils::CallNothing>(); } @@ -2033,6 +2055,7 @@ bool PolicyManagerImpl::IsPredataPolicy( } void PolicyManagerImpl::ProcessExternalConsentStatusForApp( + const std::string& device_id, const std::string& application_id, const ConsentProcessingPolicy processing_policy) { ExternalConsentStatus status = cache_->GetExternalConsentStatus(); @@ -2044,7 +2067,6 @@ void PolicyManagerImpl::ProcessExternalConsentStatusForApp( CalculateGroupsConsentFromExternalConsent( groups_by_status, allowed_groups, disallowed_groups); - const std::string device_id = GetCurrentDeviceId(application_id); UpdateAppConsentWithExternalConsent(device_id, application_id, allowed_groups, @@ -2052,7 +2074,8 @@ void PolicyManagerImpl::ProcessExternalConsentStatusForApp( processing_policy); } -void PolicyManagerImpl::AddNewApplication(const std::string& application_id, +void PolicyManagerImpl::AddNewApplication(const std::string& device_id, + const std::string& application_id, DeviceConsent device_consent) { LOG4CXX_AUTO_TRACE(logger_); @@ -2072,19 +2095,23 @@ void PolicyManagerImpl::AddNewApplication(const std::string& application_id, } ProcessExternalConsentStatusForApp( - application_id, ConsentProcessingPolicy::kExternalConsentBased); + device_id, + application_id, + ConsentProcessingPolicy::kExternalConsentBased); } void PolicyManagerImpl::PromoteExistedApplication( - const std::string& application_id, DeviceConsent device_consent) { + const std::string& device_id, + const std::string& application_id, + DeviceConsent device_consent) { // If device consent changed to allowed during application being // disconnected, app permissions should be changed also if (kDeviceAllowed == device_consent && cache_->IsPredataPolicy(application_id)) { cache_->SetDefaultPolicy(application_id); } - ProcessExternalConsentStatusForApp(application_id, - ConsentProcessingPolicy::kTimestampBased); + ProcessExternalConsentStatusForApp( + device_id, application_id, ConsentProcessingPolicy::kTimestampBased); } bool PolicyManagerImpl::IsNewApplication( @@ -2164,10 +2191,13 @@ std::ostream& operator<<(std::ostream& output, return output; } -void PolicyManagerImpl::SetDefaultHmiTypes(const std::string& application_id, - const std::vector<int>& hmi_types) { +void PolicyManagerImpl::SetDefaultHmiTypes( + const transport_manager::DeviceHandle& device_handle, + const std::string& application_id, + const std::vector<int>& hmi_types) { LOG4CXX_INFO(logger_, "SetDefaultHmiTypes"); - const std::string device_id = GetCurrentDeviceId(application_id); + const std::string device_id = + GetCurrentDeviceId(device_handle, application_id); ApplicationOnDevice who = {device_id, application_id}; access_remote_->SetDefaultHmiTypes(who, hmi_types); } @@ -2205,7 +2235,7 @@ bool PolicyManagerImpl::CheckModule(const PTString& app_id, void PolicyManagerImpl::SendHMILevelChanged(const ApplicationOnDevice& who) { std::string default_hmi("NONE"); - if (GetDefaultHmi(who.app_id, &default_hmi)) { + if (GetDefaultHmi(who.dev_id, who.app_id, &default_hmi)) { listener()->OnUpdateHMIStatus(who.dev_id, who.app_id, default_hmi); } else { LOG4CXX_WARN( @@ -2242,7 +2272,8 @@ void PolicyManagerImpl::SendAppPermissionsChanged( const std::string& device_id, const std::string& application_id) { Permissions notification_data; GetPermissions(device_id, application_id, ¬ification_data); - listener()->OnPermissionsUpdated(application_id, notification_data); + listener()->OnPermissionsUpdated( + device_id, application_id, notification_data); } void PolicyManagerImpl::SendAuthTokenUpdated(const std::string policy_app_id) { diff --git a/src/components/policy/policy_regular/src/policy_manager_impl.cc b/src/components/policy/policy_regular/src/policy_manager_impl.cc index 9aa1bad88f..e3d2c1780c 100644 --- a/src/components/policy/policy_regular/src/policy_manager_impl.cc +++ b/src/components/policy/policy_regular/src/policy_manager_impl.cc @@ -420,7 +420,7 @@ void PolicyManagerImpl::ProcessActionsForAppPolicies( if (it_actions->second.is_consent_needed) { // Post-check after ExternalConsent consent changes const std::string& policy_app_id = app_policy->first; - if (!IsConsentNeeded(policy_app_id)) { + if (!IsConsentNeeded(last_device_id_, policy_app_id)) { sync_primitives::AutoLock lock(app_permissions_diff_lock_); PendingPermissions::iterator app_id_diff = @@ -442,21 +442,15 @@ void PolicyManagerImpl::ProcessActionsForAppPolicies( void PolicyManagerImpl::NotifySystem( const PolicyManagerImpl::AppPoliciesValueType& app_policy) const { - listener()->OnPendingPermissionChange(app_policy.first); + listener()->OnPendingPermissionChange(last_device_id_, app_policy.first); } void PolicyManagerImpl::SendPermissionsToApp( const PolicyManagerImpl::AppPoliciesValueType& app_policy) { const std::string app_id = app_policy.first; - const std::string device_id = GetCurrentDeviceId(app_id); - if (device_id.empty()) { - LOG4CXX_WARN(logger_, - "Couldn't find device info for application id: " << app_id); - return; - } std::vector<FunctionalGroupPermission> group_permissons; - GetPermissionsForApp(device_id, app_id, group_permissons); + GetPermissionsForApp(last_device_id_, app_id, group_permissons); Permissions notification_data; @@ -471,7 +465,8 @@ void PolicyManagerImpl::SendPermissionsToApp( std::string default_hmi; default_hmi = "NONE"; - listener()->OnPermissionsUpdated(app_id, notification_data, default_hmi); + listener()->OnPermissionsUpdated( + last_device_id_, app_id, notification_data, default_hmi); } CheckAppPolicyResults PolicyManagerImpl::CheckPermissionsChanges( |