diff options
author | Kostiantyn Grygoriev (GitHub) <KVGrygoriev@luxoft.com> | 2018-05-21 17:58:01 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-05-21 17:58:01 +0300 |
commit | 9e82b498bc6abb19793e4ab73a9070d679488297 (patch) | |
tree | 69490307bb43df2b83e80dafa45426ae54fd4dbc | |
parent | 65c1e7eb77fa949cce9c07f229e2cf747f297e14 (diff) | |
parent | b995b3b870b9cf068350fb3053104d55f394df25 (diff) | |
download | sdl_core-9e82b498bc6abb19793e4ab73a9070d679488297.tar.gz |
Merge pull request #2201 from mrapitis/feature/submenu-icon
Feature/submenu icon
5 files changed, 77 insertions, 2 deletions
diff --git a/src/components/application_manager/src/commands/mobile/add_sub_menu_request.cc b/src/components/application_manager/src/commands/mobile/add_sub_menu_request.cc index fe44e5a41f..808cd669f8 100644 --- a/src/components/application_manager/src/commands/mobile/add_sub_menu_request.cc +++ b/src/components/application_manager/src/commands/mobile/add_sub_menu_request.cc @@ -58,6 +58,19 @@ void AddSubMenuRequest::Run() { return; } + if ((*message_)[strings::msg_params].keyExists(strings::menu_icon)) { + mobile_apis::Result::eType verification_result = MessageHelper::VerifyImage( + (*message_)[strings::msg_params][strings::menu_icon], + app, + application_manager_); + + if (mobile_apis::Result::SUCCESS != verification_result) { + LOG4CXX_ERROR(logger_,"MessageHelper::VerifyImage return " << verification_result); + SendResponse(false, verification_result); + return; + } + } + const int32_t menu_id = (*message_)[strings::msg_params][strings::menu_id].asInt(); if (app->FindSubMenu(menu_id)) { @@ -94,6 +107,15 @@ void AddSubMenuRequest::Run() { (*message_)[strings::msg_params][strings::menu_name]; msg_params[strings::app_id] = app->app_id(); + if (((*message_)[strings::msg_params].keyExists(strings::menu_icon)) && + ((*message_)[strings::msg_params][strings::menu_icon].keyExists( + strings::value)) && + (0 < (*message_)[strings::msg_params][strings::menu_icon][strings::value] + .length())) { + msg_params[strings::menu_icon] = + (*message_)[strings::msg_params][strings::menu_icon]; + } + StartAwaitForInterface(HmiInterfaces::HMI_INTERFACE_UI); SendHMIRequest(hmi_apis::FunctionID::UI_AddSubMenu, &msg_params, true); } 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 6a908c4ebc..f7c2deb186 100644 --- a/src/components/application_manager/src/message_helper/message_helper.cc +++ b/src/components/application_manager/src/message_helper/message_helper.cc @@ -1770,6 +1770,14 @@ smart_objects::SmartObjectList MessageHelper::CreateAddSubMenuRequestToHMI( (*i->second)[strings::menu_name]; msg_params[strings::app_id] = app->app_id(); (*ui_sub_menu)[strings::msg_params] = msg_params; + if (((*i->second).keyExists(strings::menu_icon)) && + (0 < (*i->second)[strings::menu_icon][strings::value].length())) { + msg_params[strings::menu_icon] = + (*i->second)[strings::menu_icon]; + msg_params[strings::menu_icon][strings::value] = + (*i->second)[strings::menu_icon][strings::value] + .asString(); + } requsets.push_back(ui_sub_menu); } return requsets; diff --git a/src/components/application_manager/test/commands/mobile/add_sub_menu_request_test.cc b/src/components/application_manager/test/commands/mobile/add_sub_menu_request_test.cc index f5bb7888d8..90f92ea81f 100644 --- a/src/components/application_manager/test/commands/mobile/add_sub_menu_request_test.cc +++ b/src/components/application_manager/test/commands/mobile/add_sub_menu_request_test.cc @@ -61,10 +61,50 @@ typedef SharedPtr<AddSubMenuRequest> AddSubMenuPtr; namespace { const uint32_t kConnectionKey = 2u; +const uint32_t kAppId = 1u; } // namespace class AddSubMenuRequestTest - : public CommandRequestTest<CommandsTestMocks::kIsNice> {}; + : public CommandRequestTest<CommandsTestMocks::kIsNice> { + public: + AddSubMenuRequestTest() + : mock_app(CreateMockApp()) { + EXPECT_CALL(app_mngr_, application(kConnectionKey)) + .WillRepeatedly(Return(mock_app)); + } + + MockAppPtr mock_app; + + MessageSharedPtr CreateMsgParams() { + MessageSharedPtr msg = CreateMessage(); + (*msg)[am::strings::params][am::strings::connection_key] = kConnectionKey; + (*msg)[am::strings::msg_params][am::strings::app_id] = kAppId; + return msg; + } +}; + + +TEST_F(AddSubMenuRequestTest, Run_ImageVerificationFailed_EXPECT_INVALID_DATA) { + const uint32_t menu_id = 10u; + MessageSharedPtr msg = CreateMsgParams(); + SmartObject& msg_params = (*msg)[am::strings::msg_params]; + + msg_params[am::strings::menu_icon] = 1; + msg_params[am::strings::menu_icon][am::strings::value] = "10"; + msg_params[am::strings::menu_id] = menu_id; + msg_params[am::strings::menu_name] = "test"; + SmartObject& image = msg_params[am::strings::menu_icon]; + + EXPECT_CALL(mock_message_helper_, VerifyImage(image, _, _)) + .WillOnce(Return(mobile_apis::Result::INVALID_DATA)); + EXPECT_CALL(app_mngr_, + ManageMobileCommand(MobileResultCodeIs(mobile_apis::Result::INVALID_DATA), _)); + utils::SharedPtr<AddSubMenuRequest> request_ptr = + CreateCommand<AddSubMenuRequest>(msg); + + request_ptr->Run(); +} + TEST_F(AddSubMenuRequestTest, OnEvent_UI_UNSUPPORTED_RESOURCE) { const uint32_t menu_id = 10u; @@ -75,7 +115,6 @@ TEST_F(AddSubMenuRequestTest, OnEvent_UI_UNSUPPORTED_RESOURCE) { utils::SharedPtr<AddSubMenuRequest> command = CreateCommand<AddSubMenuRequest>(msg); - MockAppPtr mock_app = CreateMockApp(); ON_CALL(app_mngr_, application(kConnectionKey)) .WillByDefault(Return(mock_app)); ON_CALL(*mock_app, app_id()).WillByDefault(Return(kConnectionKey)); diff --git a/src/components/interfaces/HMI_API.xml b/src/components/interfaces/HMI_API.xml index ab3933fc0f..7b5096931d 100644 --- a/src/components/interfaces/HMI_API.xml +++ b/src/components/interfaces/HMI_API.xml @@ -3455,6 +3455,9 @@ <param name="menuParams" type="Common.MenuParams" mandatory="true"> <description>Position and name of menu to be added. 'parent' field is omitted for this RPC. </description> </param> + <param name="menuIcon" type="Common.Image" mandatory="false"> + <description>The image field for AddSubMenu</description> + </param> <param name="appID" type="Integer" mandatory="true"> <description>ID of application that requested this RPC.</description> </param> diff --git a/src/components/interfaces/MOBILE_API.xml b/src/components/interfaces/MOBILE_API.xml index a1c64aecda..ea47acfe7e 100644 --- a/src/components/interfaces/MOBILE_API.xml +++ b/src/components/interfaces/MOBILE_API.xml @@ -3339,6 +3339,9 @@ <param name="menuName" maxlength="500" type="String" mandatory="true"> <description>Text to show in the menu for this sub menu.</description> </param> + <param name="menuIcon" type="Image" mandatory="false"> + <description>The image field for AddSubMenu</description> + </param> </function> <function name="AddSubMenu" functionID="AddSubMenuID" messagetype="response"> |