diff options
author | Vadym Luchko (GitHub) <76956836+VadymLuchko@users.noreply.github.com> | 2021-08-16 16:49:47 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-16 09:49:47 -0400 |
commit | 6cbe18ff879afbd86d6c3718afa2d4bca43dfc1a (patch) | |
tree | 2266386562d3fd699bfd14f723c22f8b11132373 | |
parent | 04c02ecf27fbc82060adb9dfc57ea00b8e52a481 (diff) | |
download | sdl_core-6cbe18ff879afbd86d6c3718afa2d4bca43dfc1a.tar.gz |
[SDL 0205] Avoid custom button subscription by default (#3744)
* Add SubscribeButtonRequest and SubscribeButtonResponse classes
* unsubscribe buttons implementation (#197)
* Resume button subscriptions
* Remove OnButtonSubscription notification
* Unify approach to result codes processing
* Add shared base class for mobile button notifications
* Revert expired button requests if response was received after timeout
* Fix CUSTOM_BUTTON subscription logic
Was removed subscription to custom button by default.
Also, added check if app is actually subscribed to
CUSTOM_BUTTON like for all other buttons.
* Separate subscription processing for mobile requests and resumption
* Fix affected unit tests
* Return on_event() back to HMI subscription request
* Add unit tests for subscribe and unsubscribe button
* Avoid subscribe to custom button by default
* Address Livio comments
* Address Livio comments
* fixup! Address Livio comments
* Update CUSTOM_BUTTON logic
* Fix tests after merge conflicts
Co-authored-by: Yana Chernysheva <ychernysheva@luxoft.com>
Co-authored-by: Andrii Kalinich <AKalinich@luxoft.com>
Co-authored-by: Olha Vorobiova <olha.vorobiova@dxc.com>
6 files changed, 26 insertions, 18 deletions
diff --git a/src/appMain/hmi_capabilities.json b/src/appMain/hmi_capabilities.json index 8adb8da4b7..e5ee4f00b6 100755 --- a/src/appMain/hmi_capabilities.json +++ b/src/appMain/hmi_capabilities.json @@ -1160,6 +1160,12 @@ "shortPressAvailable": true, "longPressAvailable": true, "upDownAvailable": true + }, + { + "name" : "CUSTOM_BUTTON", + "longPressAvailable" : true, + "shortPressAvailable" : true, + "upDownAvailable" : true } ], "presetBankCapabilities": { diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/include/sdl_rpc_plugin/commands/mobile/register_app_interface_request.h b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/include/sdl_rpc_plugin/commands/mobile/register_app_interface_request.h index ae52caf0f7..b3359f7752 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/include/sdl_rpc_plugin/commands/mobile/register_app_interface_request.h +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/include/sdl_rpc_plugin/commands/mobile/register_app_interface_request.h @@ -210,10 +210,9 @@ class RegisterAppInterfaceRequest const std::string& param, const std::string& backup_value); /** - * @brief Sends ButtonSubscription notification at start up - * to notify HMI that app subscribed on the custom button by default. + * @brief Sends ButtonSubscription request if approved by hmi_capabilities */ - void SendSubscribeCustomButtonNotification(); + void SendSubscribeCustomButtonRequest(); /** * @brief IsApplicationSwitched checks whether application is switched diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/register_app_interface_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/register_app_interface_request.cc index a43603294a..53820eccbb 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/register_app_interface_request.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/register_app_interface_request.cc @@ -703,8 +703,11 @@ void RegisterAppInterfaceRequest::Run() { SendOnAppRegisteredNotificationToHMI( application, is_resumption_required && !is_resumption_failed_); - // By default app subscribed to CUSTOM_BUTTON - SendSubscribeCustomButtonNotification(); + if (CheckHMICapabilities(mobile_apis::ButtonName::CUSTOM_BUTTON)) { + SDL_LOG_DEBUG("CUSTOM_BUTTON available"); + SendSubscribeCustomButtonRequest(); + } + SendChangeRegistrationOnHMI(application); if (is_resumption_required) { @@ -1461,7 +1464,7 @@ void RegisterAppInterfaceRequest::CheckResponseVehicleTypeParam( } } -void RegisterAppInterfaceRequest::SendSubscribeCustomButtonNotification() { +void RegisterAppInterfaceRequest::SendSubscribeCustomButtonRequest() { SDL_LOG_AUTO_TRACE(); using namespace smart_objects; SmartObject msg_params = SmartObject(SmartType_Map); diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/mobile/register_app_interface_request_test.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/mobile/register_app_interface_request_test.cc index 5d940c4f4c..0624c873fa 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/mobile/register_app_interface_request_test.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/mobile/register_app_interface_request_test.cc @@ -461,6 +461,17 @@ TEST_F(RegisterAppInterfaceRequestTest, Run_MinimalData_SUCCESS) { .WillByDefault( Return(application_manager::HmiInterfaces::HMI_INTERFACE_Buttons)); + ON_CALL(mock_hmi_capabilities_, is_ui_cooperating()) + .WillByDefault(Return(true)); + + MessageSharedPtr button_caps_ptr = + CreateMessage(smart_objects::SmartType_Map); + (*button_caps_ptr)[0][am::hmi_response::button_name] = + mobile_apis::ButtonName::CUSTOM_BUTTON; + + ON_CALL(mock_hmi_capabilities_, button_capabilities()) + .WillByDefault(Return(button_caps_ptr)); + EXPECT_CALL( mock_rpc_service_, ManageHMICommand( @@ -587,11 +598,6 @@ TEST_F(RegisterAppInterfaceRequestTest, EXPECT_CALL( mock_rpc_service_, ManageHMICommand( - HMIResultCodeIs(hmi_apis::FunctionID::Buttons_SubscribeButton), _)) - .WillOnce(Return(true)); - EXPECT_CALL( - mock_rpc_service_, - ManageHMICommand( HMIResultCodeIs(hmi_apis::FunctionID::VR_ChangeRegistration), _)) .WillOnce(Return(true)); EXPECT_CALL( @@ -851,11 +857,6 @@ TEST_F(RegisterAppInterfaceRequestTest, EXPECT_CALL( mock_rpc_service_, ManageHMICommand( - HMIResultCodeIs(hmi_apis::FunctionID::Buttons_SubscribeButton), _)) - .WillOnce(Return(true)); - EXPECT_CALL( - mock_rpc_service_, - ManageHMICommand( HMIResultCodeIs(hmi_apis::FunctionID::VR_ChangeRegistration), _)) .WillOnce(Return(true)); EXPECT_CALL( diff --git a/src/components/application_manager/test/hmi_capabilities_test.cc b/src/components/application_manager/test/hmi_capabilities_test.cc index c83dd76978..2127f46b69 100644 --- a/src/components/application_manager/test/hmi_capabilities_test.cc +++ b/src/components/application_manager/test/hmi_capabilities_test.cc @@ -286,7 +286,6 @@ TEST_F( // Count of buttons in json file const size_t btn_length = buttons_capabilities_so.length(); - EXPECT_EQ(16ull, btn_length); for (size_t index = 0; index < btn_length; ++index) { EXPECT_TRUE(buttons_capabilities_so [index][rc_rpc_plugin::enums_value::kShortPressAvailable] diff --git a/src/components/include/application_manager/hmi_capabilities.h b/src/components/include/application_manager/hmi_capabilities.h index 93f3db76cb..93cb09737d 100644 --- a/src/components/include/application_manager/hmi_capabilities.h +++ b/src/components/include/application_manager/hmi_capabilities.h @@ -274,7 +274,7 @@ class HMICapabilities { /** * @brief Sets supported Button's capabilities - * @param soft_button_capabilities supported Button's capabilities + * @param button_capabilities supported Button's capabilities */ virtual void set_button_capabilities( const smart_objects::SmartObject& button_capabilities) = 0; |