summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVadym Luchko (GitHub) <76956836+VadymLuchko@users.noreply.github.com>2021-08-16 16:49:47 +0300
committerGitHub <noreply@github.com>2021-08-16 09:49:47 -0400
commit6cbe18ff879afbd86d6c3718afa2d4bca43dfc1a (patch)
tree2266386562d3fd699bfd14f723c22f8b11132373
parent04c02ecf27fbc82060adb9dfc57ea00b8e52a481 (diff)
downloadsdl_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>
-rwxr-xr-xsrc/appMain/hmi_capabilities.json6
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/include/sdl_rpc_plugin/commands/mobile/register_app_interface_request.h5
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/register_app_interface_request.cc9
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/mobile/register_app_interface_request_test.cc21
-rw-r--r--src/components/application_manager/test/hmi_capabilities_test.cc1
-rw-r--r--src/components/include/application_manager/hmi_capabilities.h2
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;