summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrii Kalinich (GitHub) <AKalinich@luxoft.com>2021-07-22 10:53:19 -0400
committerGitHub <noreply@github.com>2021-07-22 10:53:19 -0400
commit473400504342e0f4271e5bf187c66188eb13fe9f (patch)
treedc43e836fdc8d61c067881b91463c20ac1e0f085
parent1df399beed9b523323240fb5fe7fcc9309669d2b (diff)
downloadsdl_core-473400504342e0f4271e5bf187c66188eb13fe9f.tar.gz
Fix resumption for menuLayout global property (#3733)
* Added methods get and set the menuLayout and added to the request on the HMI this field * fixup! Added methods get and set the menuLayout and added to the request on the HMI this field Co-authored-by: Roman Reznichenko <roman.reznichenko@dxc.com>
-rw-r--r--src/components/application_manager/include/application_manager/application.h3
-rw-r--r--src/components/application_manager/include/application_manager/application_data_impl.h3
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/set_global_properties_request.cc1
-rw-r--r--src/components/application_manager/src/application_data_impl.cc16
-rw-r--r--src/components/application_manager/src/helpers/application_helper.cc1
-rw-r--r--src/components/application_manager/src/message_helper/message_helper.cc8
-rw-r--r--src/components/application_manager/src/resumption/resumption_data.cc2
-rw-r--r--src/components/application_manager/test/application_helper_test.cc5
-rw-r--r--src/components/application_manager/test/include/application_manager/mock_application.h3
9 files changed, 41 insertions, 1 deletions
diff --git a/src/components/application_manager/include/application_manager/application.h b/src/components/application_manager/include/application_manager/application.h
index f25afeb2bc..2d7006e19a 100644
--- a/src/components/application_manager/include/application_manager/application.h
+++ b/src/components/application_manager/include/application_manager/application.h
@@ -203,6 +203,7 @@ class DynamicApplicationData {
virtual const smart_objects::SmartObject* keyboard_props() const = 0;
virtual const smart_objects::SmartObject* menu_title() const = 0;
virtual const smart_objects::SmartObject* menu_icon() const = 0;
+ virtual const smart_objects::SmartObject* menu_layout() const = 0;
virtual smart_objects::SmartObject day_color_scheme() const = 0;
virtual smart_objects::SmartObject night_color_scheme() const = 0;
virtual std::string display_layout() const = 0;
@@ -242,6 +243,8 @@ class DynamicApplicationData {
const smart_objects::SmartObject& keyboard_props) = 0;
virtual void set_menu_title(const smart_objects::SmartObject& menu_title) = 0;
virtual void set_menu_icon(const smart_objects::SmartObject& menu_icon) = 0;
+ virtual void set_menu_layout(
+ const smart_objects::SmartObject& menu_layout) = 0;
virtual uint32_t audio_stream_retry_number() const = 0;
diff --git a/src/components/application_manager/include/application_manager/application_data_impl.h b/src/components/application_manager/include/application_manager/application_data_impl.h
index a64e0c8f33..086e71b48b 100644
--- a/src/components/application_manager/include/application_manager/application_data_impl.h
+++ b/src/components/application_manager/include/application_manager/application_data_impl.h
@@ -102,6 +102,7 @@ class DynamicApplicationDataImpl : public virtual Application {
const smart_objects::SmartObject* keyboard_props() const;
const smart_objects::SmartObject* menu_title() const;
const smart_objects::SmartObject* menu_icon() const;
+ const smart_objects::SmartObject* menu_layout() const;
smart_objects::SmartObject day_color_scheme() const OVERRIDE;
smart_objects::SmartObject night_color_scheme() const OVERRIDE;
@@ -141,6 +142,7 @@ class DynamicApplicationDataImpl : public virtual Application {
void set_keyboard_props(const smart_objects::SmartObject& keyboard_props);
void set_menu_title(const smart_objects::SmartObject& menu_title);
void set_menu_icon(const smart_objects::SmartObject& menu_icon);
+ void set_menu_layout(const smart_objects::SmartObject& menu_layout);
void set_day_color_scheme(const smart_objects::SmartObject& color_scheme);
void set_night_color_scheme(const smart_objects::SmartObject& color_scheme);
void set_display_layout(const std::string& layout);
@@ -323,6 +325,7 @@ class DynamicApplicationDataImpl : public virtual Application {
smart_objects::SmartObject* keyboard_props_;
smart_objects::SmartObject* menu_title_;
smart_objects::SmartObject* menu_icon_;
+ smart_objects::SmartObject* menu_layout_;
smart_objects::SmartObject* tbt_show_command_;
smart_objects::SmartObjectSPtr display_capabilities_;
AppWindowsTemplates window_templates_;
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/set_global_properties_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/set_global_properties_request.cc
index bbce4d2bb3..0aab000376 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/set_global_properties_request.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/set_global_properties_request.cc
@@ -186,6 +186,7 @@ void SetGlobalPropertiesRequest::Run() {
msg_params[strings::menu_layout].asUInt());
if (app->menu_layout_supported(menu_layout)) {
params[strings::menu_layout] = msg_params[strings::menu_layout];
+ app->set_menu_layout(msg_params[strings::menu_layout]);
} else {
is_menu_layout_available_ = false;
}
diff --git a/src/components/application_manager/src/application_data_impl.cc b/src/components/application_manager/src/application_data_impl.cc
index e190025add..1d6ea8afe8 100644
--- a/src/components/application_manager/src/application_data_impl.cc
+++ b/src/components/application_manager/src/application_data_impl.cc
@@ -201,6 +201,7 @@ DynamicApplicationDataImpl::DynamicApplicationDataImpl()
, keyboard_props_(nullptr)
, menu_title_(nullptr)
, menu_icon_(nullptr)
+ , menu_layout_(nullptr)
, tbt_show_command_(nullptr)
, commands_()
, commands_lock_ptr_(std::make_shared<sync_primitives::RecursiveLock>())
@@ -349,6 +350,11 @@ const smart_objects::SmartObject* DynamicApplicationDataImpl::menu_icon()
return menu_icon_;
}
+const smart_objects::SmartObject* DynamicApplicationDataImpl::menu_layout()
+ const {
+ return menu_layout_;
+}
+
smart_objects::SmartObject DynamicApplicationDataImpl::day_color_scheme()
const {
using namespace mobile_apis::PredefinedWindows;
@@ -467,6 +473,8 @@ void DynamicApplicationDataImpl::load_global_properties(
SetGlobalProperties(properties_so.getElement(strings::menu_icon),
&DynamicApplicationData::set_menu_icon);
+ SetGlobalProperties(properties_so.getElement(strings::menu_layout),
+ &DynamicApplicationData::set_menu_layout);
}
void DynamicApplicationDataImpl::set_help_prompt(
@@ -560,6 +568,14 @@ void DynamicApplicationDataImpl::set_menu_icon(
menu_icon_ = new smart_objects::SmartObject(menu_icon);
}
+void DynamicApplicationDataImpl::set_menu_layout(
+ const smart_objects::SmartObject& menu_layout) {
+ if (menu_layout_) {
+ delete menu_layout_;
+ }
+ menu_layout_ = new smart_objects::SmartObject(menu_layout);
+}
+
void DynamicApplicationDataImpl::set_day_color_scheme(
const smart_objects::SmartObject& color_scheme) {
using namespace mobile_apis::PredefinedWindows;
diff --git a/src/components/application_manager/src/helpers/application_helper.cc b/src/components/application_manager/src/helpers/application_helper.cc
index 74810d7e09..863d85a7f0 100644
--- a/src/components/application_manager/src/helpers/application_helper.cc
+++ b/src/components/application_manager/src/helpers/application_helper.cc
@@ -87,6 +87,7 @@ void DeleteGlobalProperties(ApplicationSharedPtr app,
app->set_keyboard_props(empty_so);
app->set_menu_icon(empty_so);
app->set_menu_title(empty_so);
+ app->set_menu_layout(empty_so);
MessageHelper::SendResetPropertiesRequest(app, app_manager);
}
diff --git a/src/components/application_manager/src/message_helper/message_helper.cc b/src/components/application_manager/src/message_helper/message_helper.cc
index 301c26a750..6dbb7b35ae 100644
--- a/src/components/application_manager/src/message_helper/message_helper.cc
+++ b/src/components/application_manager/src/message_helper/message_helper.cc
@@ -1289,7 +1289,7 @@ MessageHelper::CreateGlobalPropertiesRequestsToHMI(
if (can_send_ui &&
(app->vr_help_title() || app->vr_help() || app->keyboard_props() ||
- app->menu_title() || app->menu_icon())) {
+ app->menu_title() || app->menu_icon() || app->menu_layout())) {
smart_objects::SmartObjectSPtr ui_global_properties = CreateMessageForHMI(
hmi_apis::messageType::request, app_mngr.GetNextHMICorrelationID());
if (ui_global_properties) {
@@ -1313,6 +1313,9 @@ MessageHelper::CreateGlobalPropertiesRequestsToHMI(
if (app->menu_icon()) {
ui_msg_params[strings::menu_icon] = (*app->menu_icon());
}
+ if (app->menu_layout()) {
+ ui_msg_params[strings::menu_layout] = (*app->menu_layout());
+ }
ui_msg_params[strings::app_id] = app->app_id();
(*ui_global_properties)[strings::msg_params] = ui_msg_params;
@@ -1995,6 +1998,9 @@ smart_objects::SmartObjectList MessageHelper::CreateAddSubMenuRequestsToHMI(
msg_params[strings::menu_params][strings::parent_id] =
(*i->second)[strings::parent_id];
}
+ if ((*i->second).keyExists(strings::menu_layout)) {
+ msg_params[strings::menu_layout] = (*i->second)[strings::menu_layout];
+ }
msg_params[strings::app_id] = app->app_id();
(*ui_sub_menu)[strings::msg_params] = msg_params;
if (((*i->second).keyExists(strings::menu_icon)) &&
diff --git a/src/components/application_manager/src/resumption/resumption_data.cc b/src/components/application_manager/src/resumption/resumption_data.cc
index 95dd331b88..c72231d334 100644
--- a/src/components/application_manager/src/resumption/resumption_data.cc
+++ b/src/components/application_manager/src/resumption/resumption_data.cc
@@ -132,6 +132,8 @@ smart_objects::SmartObject ResumptionData::GetApplicationGlobalProperties(
PointerToSmartObj(application->menu_title());
global_properties[strings::menu_icon] =
PointerToSmartObj(application->menu_icon());
+ global_properties[strings::menu_layout] =
+ PointerToSmartObj(application->menu_layout());
return global_properties;
}
diff --git a/src/components/application_manager/test/application_helper_test.cc b/src/components/application_manager/test/application_helper_test.cc
index 1633b9d29b..5c6d3b22f6 100644
--- a/src/components/application_manager/test/application_helper_test.cc
+++ b/src/components/application_manager/test/application_helper_test.cc
@@ -176,6 +176,7 @@ TEST_F(ApplicationHelperTest, RecallApplicationData_ExpectAppDataReset) {
app_impl_->set_keyboard_props(dummy_data);
app_impl_->set_menu_title(dummy_data);
app_impl_->set_menu_icon(dummy_data);
+ app_impl_->set_menu_layout(dummy_data);
const bool persistent = false;
const bool downloaded = true;
@@ -205,6 +206,8 @@ TEST_F(ApplicationHelperTest, RecallApplicationData_ExpectAppDataReset) {
EXPECT_TRUE(menu_title->asString() == some_string);
auto menu_icon = app_impl_->menu_icon();
EXPECT_TRUE(menu_icon->asString() == some_string);
+ auto menu_layout = app_impl_->menu_layout();
+ EXPECT_TRUE(menu_layout->asString() == some_string);
auto file_ptr = app_impl_->GetFile(filename);
EXPECT_TRUE(NULL != file_ptr);
EXPECT_TRUE(file_ptr->file_name == filename);
@@ -239,6 +242,8 @@ TEST_F(ApplicationHelperTest, RecallApplicationData_ExpectAppDataReset) {
EXPECT_FALSE(menu_title->asString() == some_string);
menu_icon = app_impl_->menu_icon();
EXPECT_FALSE(menu_icon->asString() == some_string);
+ menu_layout = app_impl_->menu_layout();
+ EXPECT_FALSE(menu_layout->asString() == some_string);
file_ptr = app_impl_->GetFile(filename);
EXPECT_TRUE(NULL == file_ptr);
}
diff --git a/src/components/application_manager/test/include/application_manager/mock_application.h b/src/components/application_manager/test/include/application_manager/mock_application.h
index 2c9fe688b4..ac2a534929 100644
--- a/src/components/application_manager/test/include/application_manager/mock_application.h
+++ b/src/components/application_manager/test/include/application_manager/mock_application.h
@@ -253,6 +253,7 @@ class MockApplication : public ::application_manager::Application {
MOCK_CONST_METHOD0(keyboard_props, const smart_objects::SmartObject*());
MOCK_CONST_METHOD0(menu_title, const smart_objects::SmartObject*());
MOCK_CONST_METHOD0(menu_icon, const smart_objects::SmartObject*());
+ MOCK_CONST_METHOD0(menu_layout, const smart_objects::SmartObject*());
MOCK_CONST_METHOD0(day_color_scheme, smart_objects::SmartObject());
MOCK_CONST_METHOD0(night_color_scheme, smart_objects::SmartObject());
MOCK_CONST_METHOD0(display_layout, std::string());
@@ -305,6 +306,8 @@ class MockApplication : public ::application_manager::Application {
void(const smart_objects::SmartObject& menu_title));
MOCK_METHOD1(set_menu_icon,
void(const smart_objects::SmartObject& menu_icon));
+ MOCK_METHOD1(set_menu_layout,
+ void(const smart_objects::SmartObject& menu_layout));
MOCK_METHOD1(set_day_color_scheme,
void(const smart_objects::SmartObject& color_scheme));
MOCK_METHOD1(set_night_color_scheme,