summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCollin <iCollin@users.noreply.github.com>2019-09-24 13:56:54 -0400
committerGitHub <noreply@github.com>2019-09-24 13:56:54 -0400
commitc71d3570a1796e35078daccd9ee39fdd695596f1 (patch)
tree0bc4ebf508f0ef3fb4d2cc62334b5d5ae11b5c03
parentb454f5cbbe69741eaa266761787006c81a2c6da7 (diff)
downloadsdl_core-c71d3570a1796e35078daccd9ee39fdd695596f1.tar.gz
move MenuLayoutsAvailable to WindowCapability (#3043)
* move MenuLayoutsAvailable to WindowCapability * cleanup style script + make is_supported function const * reverse comparables rvalue on left side is good practice * cleanup2 * main window can have window_id = 0
-rw-r--r--src/components/application_manager/include/application_manager/application.h7
-rw-r--r--src/components/application_manager/include/application_manager/application_data_impl.h8
-rw-r--r--src/components/application_manager/include/application_manager/hmi_capabilities_impl.h8
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/add_sub_menu_request.cc3
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/register_app_interface_request.cc7
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/set_global_properties_request.cc3
-rw-r--r--src/components/application_manager/src/application_data_impl.cc60
-rw-r--r--src/components/application_manager/src/hmi_capabilities_impl.cc46
-rw-r--r--src/components/application_manager/test/include/application_manager/mock_application.h2
-rw-r--r--src/components/application_manager/test/include/application_manager/mock_hmi_capabilities.h3
-rw-r--r--src/components/include/application_manager/hmi_capabilities.h8
-rw-r--r--src/components/interfaces/HMI_API.xml6
-rw-r--r--src/components/interfaces/MOBILE_API.xml6
13 files changed, 67 insertions, 100 deletions
diff --git a/src/components/application_manager/include/application_manager/application.h b/src/components/application_manager/include/application_manager/application.h
index 366396d90a..8e78874cdc 100644
--- a/src/components/application_manager/include/application_manager/application.h
+++ b/src/components/application_manager/include/application_manager/application.h
@@ -268,6 +268,13 @@ class DynamicApplicationData {
virtual void remove_window_capability(const WindowID window_id) = 0;
/**
+ * @brief checks whether a specific menu layout is supported
+ * @param menu layout to check
+ */
+ virtual bool menu_layout_supported(
+ const mobile_apis::MenuLayout::eType layout) const = 0;
+
+ /**
* @brief Sets layout for application's specific window
* @param window_id window id for which layout should be set
* @param layout - layout to be set
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 dd093c9890..5c4f868fc9 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
@@ -147,6 +147,14 @@ class DynamicApplicationDataImpl : public virtual Application {
void set_display_capabilities(
const smart_objects::SmartObject& display_capabilities) OVERRIDE;
void remove_window_capability(const WindowID window_id) OVERRIDE;
+
+ /**
+ * @brief checks whether a specific menu layout is supported
+ * @param menu layout to check
+ */
+ bool menu_layout_supported(
+ const mobile_apis::MenuLayout::eType layout) const OVERRIDE;
+
/*
* @brief Adds a command to the in application menu
*/
diff --git a/src/components/application_manager/include/application_manager/hmi_capabilities_impl.h b/src/components/application_manager/include/application_manager/hmi_capabilities_impl.h
index e17748a490..b4610f0375 100644
--- a/src/components/application_manager/include/application_manager/hmi_capabilities_impl.h
+++ b/src/components/application_manager/include/application_manager/hmi_capabilities_impl.h
@@ -453,14 +453,6 @@ class HMICapabilitiesImpl : public HMICapabilities {
bool rc_supported() const OVERRIDE;
/*
- * @brief Retrieves whether HMI supports passed Menu Layout
- *
- * @return TRUE if it supported, otherwise FALSE
- */
- bool menu_layout_supported(
- mobile_apis::MenuLayout::eType layout) const OVERRIDE;
-
- /*
* @brief Interface used to store information regarding
* the navigation "System Capability"
*
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/add_sub_menu_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/add_sub_menu_request.cc
index d5ec8b8bb3..89ccfb8bd7 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/add_sub_menu_request.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/add_sub_menu_request.cc
@@ -112,8 +112,7 @@ void AddSubMenuRequest::Run() {
if (received_msg_params.keyExists(strings::menu_layout)) {
auto menu_layout = static_cast<mobile_apis::MenuLayout::eType>(
received_msg_params[strings::menu_layout].asUInt());
- if (application_manager_.hmi_capabilities().menu_layout_supported(
- menu_layout)) {
+ if (app->menu_layout_supported(menu_layout)) {
msg_params[strings::menu_layout] =
received_msg_params[strings::menu_layout];
} else {
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 c4bc5cb486..937d9d8a52 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
@@ -591,13 +591,6 @@ void FillUIRelatedFields(smart_objects::SmartObject& response_params,
}
if (hmi_capabilities.display_capabilities()->keyExists(
- strings::menu_layouts_available)) {
- display_caps[strings::menu_layouts_available] =
- hmi_capabilities.display_capabilities()->getElement(
- strings::menu_layouts_available);
- }
-
- if (hmi_capabilities.display_capabilities()->keyExists(
hmi_response::media_clock_formats)) {
display_caps[hmi_response::media_clock_formats] =
hmi_capabilities.display_capabilities()->getElement(
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 e28566a44f..a567d1b32f 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
@@ -174,8 +174,7 @@ void SetGlobalPropertiesRequest::Run() {
if (msg_params.keyExists(strings::menu_layout)) {
auto menu_layout = static_cast<mobile_apis::MenuLayout::eType>(
msg_params[strings::menu_layout].asUInt());
- if (application_manager_.hmi_capabilities().menu_layout_supported(
- menu_layout)) {
+ if (app->menu_layout_supported(menu_layout)) {
params[strings::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 f6b87d3a7e..2bef887901 100644
--- a/src/components/application_manager/src/application_data_impl.cc
+++ b/src/components/application_manager/src/application_data_impl.cc
@@ -555,26 +555,18 @@ void DynamicApplicationDataImpl::set_display_capabilities(
return false;
}
- const auto find_res = std::find_if(
- tmp_window_capabilities_arr->begin(),
- tmp_window_capabilities_arr->end(),
- [&window_id](const smart_objects::SmartObject& element) {
- LOG4CXX_DEBUG(logger_,
- "Searching for "
- << window_id << " with element window id "
- << element[strings::window_id].asInt());
- if ((!element.keyExists(strings::window_id)) && 0 == window_id) {
- return true;
- }
- const auto current_window_id = element[strings::window_id].asInt();
- if (window_id == current_window_id) {
- return true;
- }
- return false;
- });
-
- return find_res != tmp_window_capabilities_arr->end();
+ for (auto element : *tmp_window_capabilities_arr) {
+ if (element.keyExists(strings::window_id)) {
+ if (window_id == element[strings::window_id].asInt())
+ return true;
+ } else if (window_id == 0) {
+ return true;
+ }
+ }
+
+ return false;
};
+
for (uint32_t i = 0; i < incoming_window_capabilities.length(); ++i) {
const auto window_id =
incoming_window_capabilities[i][strings::window_id].asInt();
@@ -612,6 +604,36 @@ void DynamicApplicationDataImpl::remove_window_capability(
"No window id " << window_id << " found in display capabilities");
}
+bool DynamicApplicationDataImpl::menu_layout_supported(
+ const mobile_apis::MenuLayout::eType layout) const {
+ if (!display_capabilities_)
+ return false;
+
+ const auto tmp_window_capabilities_arr =
+ (*display_capabilities_)[0][strings::window_capabilities].asArray();
+
+ if (!tmp_window_capabilities_arr)
+ return false;
+
+ for (auto element : *tmp_window_capabilities_arr) {
+ if ((!element.keyExists(strings::window_id) ||
+ element[strings::window_id].asInt() == 0) &&
+ element.keyExists(strings::menu_layouts_available)) {
+ for (uint32_t i = 0;
+ i < element[strings::menu_layouts_available].length();
+ ++i) {
+ if (static_cast<mobile_apis::MenuLayout::eType>(
+ element[strings::menu_layouts_available][i].asUInt()) ==
+ layout) {
+ return true;
+ }
+ }
+ }
+ }
+
+ return false;
+}
+
void DynamicApplicationDataImpl::set_window_layout(const WindowID window_id,
const std::string& layout) {
LOG4CXX_AUTO_TRACE(logger_);
diff --git a/src/components/application_manager/src/hmi_capabilities_impl.cc b/src/components/application_manager/src/hmi_capabilities_impl.cc
index e91f425770..6f95e43545 100644
--- a/src/components/application_manager/src/hmi_capabilities_impl.cc
+++ b/src/components/application_manager/src/hmi_capabilities_impl.cc
@@ -58,7 +58,6 @@ std::map<std::string, hmi_apis::Common_TextFieldName::eType>
text_fields_enum_name;
std::map<std::string, hmi_apis::Common_MediaClockFormat::eType>
media_clock_enum_name;
-std::map<std::string, hmi_apis::Common_MenuLayout::eType> menu_layout_enum;
std::map<std::string, hmi_apis::Common_ImageType::eType> image_type_enum;
std::map<std::string, hmi_apis::Common_SamplingRate::eType> sampling_rate_enum;
std::map<std::string, hmi_apis::Common_BitsPerSample::eType>
@@ -280,11 +279,6 @@ void InitCapabilities() {
std::make_pair(std::string("CLOCKTEXT4"),
hmi_apis::Common_MediaClockFormat::CLOCKTEXT4));
- menu_layout_enum.insert(
- std::make_pair(std::string("LIST"), hmi_apis::Common_MenuLayout::LIST));
- menu_layout_enum.insert(
- std::make_pair(std::string("TILES"), hmi_apis::Common_MenuLayout::TILES));
-
image_type_enum.insert(std::make_pair(std::string("STATIC"),
hmi_apis::Common_ImageType::STATIC));
image_type_enum.insert(std::make_pair(std::string("DYNAMIC"),
@@ -895,26 +889,6 @@ bool HMICapabilitiesImpl::rc_supported() const {
return is_rc_supported_;
}
-bool HMICapabilitiesImpl::menu_layout_supported(
- mobile_apis::MenuLayout::eType layout) const {
- if (!display_capabilities_ ||
- !display_capabilities_->keyExists(strings::menu_layouts_available))
- return false;
-
- auto menu_layouts =
- display_capabilities_->getElement(strings::menu_layouts_available);
- if (menu_layouts.getType() == smart_objects::SmartType_Array) {
- for (uint32_t i = 0; i < menu_layouts.length(); ++i) {
- if (layout == static_cast<mobile_apis::MenuLayout::eType>(
- menu_layouts.getElement(i).asUInt())) {
- return true;
- }
- }
- }
-
- return false;
-}
-
const smart_objects::SmartObject* HMICapabilitiesImpl::navigation_capability()
const {
return navigation_capability_;
@@ -1096,25 +1070,6 @@ bool HMICapabilitiesImpl::load_capabilities_from_file() {
}
if (display_capabilities_so.keyExists(
- strings::menu_layouts_available)) {
- smart_objects::SmartObject menu_layouts_available_enum(
- smart_objects::SmartType_Array);
- auto menu_layouts_available_array =
- display_capabilities_so[strings::menu_layouts_available];
- for (uint32_t i = 0, j = 0; i < menu_layouts_available_array.length();
- ++i) {
- auto it = menu_layout_enum.find(
- menu_layouts_available_array[i].asString());
- if (it != menu_layout_enum.end()) {
- menu_layouts_available_enum[j++] = it->second;
- }
- }
- display_capabilities_so.erase(strings::menu_layouts_available);
- display_capabilities_so[strings::menu_layouts_available] =
- menu_layouts_available_enum;
- }
-
- if (display_capabilities_so.keyExists(
hmi_response::image_capabilities)) {
smart_objects::SmartObject& image_capabilities_array =
display_capabilities_so[hmi_response::image_capabilities];
@@ -1178,6 +1133,7 @@ bool HMICapabilitiesImpl::load_capabilities_from_file() {
soft_button_capabilities, soft_button_capabilities_so);
set_soft_button_capabilities(soft_button_capabilities_so);
}
+
if (check_existing_json_member(ui, "systemCapabilities")) {
Json::Value system_capabilities = ui.get("systemCapabilities", "");
if (check_existing_json_member(system_capabilities,
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 c02cd5c392..e3617b46c3 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
@@ -425,6 +425,8 @@ class MockApplication : public ::application_manager::Application {
application_manager::WindowID(const uint32_t button_id));
MOCK_METHOD1(remove_window_capability,
void(const application_manager::WindowID window_id));
+ MOCK_CONST_METHOD1(menu_layout_supported,
+ bool(const mobile_apis::MenuLayout::eType layout));
MOCK_METHOD1(set_user_location,
void(const smart_objects::SmartObject& user_location));
MOCK_CONST_METHOD0(get_user_location, const smart_objects::SmartObject&());
diff --git a/src/components/application_manager/test/include/application_manager/mock_hmi_capabilities.h b/src/components/application_manager/test/include/application_manager/mock_hmi_capabilities.h
index 2c3d7c267e..5e5f2eb4a4 100644
--- a/src/components/application_manager/test/include/application_manager/mock_hmi_capabilities.h
+++ b/src/components/application_manager/test/include/application_manager/mock_hmi_capabilities.h
@@ -168,9 +168,6 @@ class MockHMICapabilities : public ::application_manager::HMICapabilities {
MOCK_CONST_METHOD0(rc_supported, bool());
MOCK_METHOD1(set_rc_supported, void(const bool supported));
- MOCK_CONST_METHOD1(menu_layout_supported,
- bool(mobile_apis::MenuLayout::eType layout));
-
MOCK_CONST_METHOD0(navigation_capability,
const smart_objects::SmartObject*());
MOCK_METHOD1(set_navigation_capability,
diff --git a/src/components/include/application_manager/hmi_capabilities.h b/src/components/include/application_manager/hmi_capabilities.h
index ab8d5ba4e6..8e59bcc74d 100644
--- a/src/components/include/application_manager/hmi_capabilities.h
+++ b/src/components/include/application_manager/hmi_capabilities.h
@@ -455,14 +455,6 @@ class HMICapabilities {
virtual bool rc_supported() const = 0;
/*
- * @brief Retrieves whether HMI supports passed Menu Layout
- *
- * @return TRUE if it supported, otherwise FALSE
- */
- virtual bool menu_layout_supported(
- mobile_apis::MenuLayout::eType layout) const = 0;
-
- /*
* @brief Interface used to store information regarding
* the navigation "System Capability"
*
diff --git a/src/components/interfaces/HMI_API.xml b/src/components/interfaces/HMI_API.xml
index 6292d74ebe..8407d4aea4 100644
--- a/src/components/interfaces/HMI_API.xml
+++ b/src/components/interfaces/HMI_API.xml
@@ -2976,9 +2976,6 @@
<param name="numCustomPresetsAvailable" type="Integer" minvalue="1" maxvalue="100" mandatory="false">
<description>The number of on-screen custom presets available (if any); otherwise omitted.</description>
</param>
- <param name="menuLayoutsAvailable" type="Common.MenuLayout" array="true" minsize="1" maxsize="1000" mandatory="false">
- <description>An array of available menu layouts. If this parameter is not provided, only the `LIST` layout is assumed to be available</description>
- </param>
</struct>
<struct name="SoftButtonCapabilities">
@@ -3531,6 +3528,9 @@
<param name="softButtonCapabilities" type="SoftButtonCapabilities" minsize="1" maxsize="100" array="true" mandatory="false">
<description>The number of soft buttons available on-window and the capabilities for each button.</description>
</param>
+ <param name="menuLayoutsAvailable" type="Common.MenuLayout" array="true" minsize="1" maxsize="1000" mandatory="false">
+ <description>An array of available menu layouts. If this parameter is not provided, only the `LIST` layout is assumed to be available</description>
+ </param>
</struct>
<struct name="DisplayCapability">
diff --git a/src/components/interfaces/MOBILE_API.xml b/src/components/interfaces/MOBILE_API.xml
index a98652dc95..2307dada03 100644
--- a/src/components/interfaces/MOBILE_API.xml
+++ b/src/components/interfaces/MOBILE_API.xml
@@ -2284,9 +2284,6 @@
<param name="numCustomPresetsAvailable" type="Integer" minvalue="1" maxvalue="100" mandatory="false" since="3.0">
<description>The number of on-screen custom presets available (if any); otherwise omitted.</description>
</param>
- <param name="menuLayoutsAvailable" type="MenuLayout" array="true" minsize="1" maxsize="1000" mandatory="false" since="6.0">
- <description>An array of available menu layouts. If this parameter is not provided, only the `LIST` layout is assumed to be available</description>
- </param>
<!-- TODO: Add pixel density? -->
</struct>
@@ -2418,6 +2415,9 @@
<param name="softButtonCapabilities" type="SoftButtonCapabilities" minsize="1" maxsize="100" array="true" mandatory="false">
<description>The number of soft buttons available on-window and the capabilities for each button.</description>
</param>
+ <param name="menuLayoutsAvailable" type="MenuLayout" array="true" minsize="1" maxsize="1000" mandatory="false" since="6.0">
+ <description>An array of available menu layouts. If this parameter is not provided, only the `LIST` layout is assumed to be available</description>
+ </param>
</struct>
<struct name="WindowTypeCapabilities" since="6.0">