summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander <akutsan@luxoft.com>2018-06-17 21:13:28 +0300
committerIra Lytvynenko (GitHub) <ILytvynenko@luxoft.com>2018-06-27 18:20:30 +0300
commit73cb69e30d5b45d08411123cdbaf980f3e77611c (patch)
tree2388a4df7631ffcf70d6f54ea5f6a904bf7d83be
parent6fd488641ec7d761776e167af90a8beedb51bbd6 (diff)
downloadsdl_core-73cb69e30d5b45d08411123cdbaf980f3e77611c.tar.gz
Move IsSubsscrbedTo to plugin
-rw-r--r--src/components/application_manager/include/application_manager/application.h7
-rw-r--r--src/components/application_manager/include/application_manager/application_impl.h3
-rw-r--r--src/components/application_manager/include/application_manager/application_manager_impl.h4
-rw-r--r--src/components/application_manager/include/application_manager/helpers/application_helper.h10
-rw-r--r--src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/commands/mobile/on_vehicle_data_notification.cc19
-rw-r--r--src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/commands/mobile/subscribe_vehicle_data_request.cc10
-rw-r--r--src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/commands/mobile/unsubscribe_vehicle_data_request.cc10
-rw-r--r--src/components/application_manager/rpc_plugins/vehicle_info_plugin/test/commands/mobile/on_vehicle_data_notification_test.cc34
-rw-r--r--src/components/application_manager/rpc_plugins/vehicle_info_plugin/test/commands/mobile/unsubscribe_vehicle_request_test.cc5
-rw-r--r--src/components/application_manager/src/application_impl.cc12
-rw-r--r--src/components/application_manager/src/application_manager_impl.cc7
-rw-r--r--src/components/application_manager/src/helpers/application_helper.cc8
-rw-r--r--src/components/application_manager/test/application_helper_test.cc3
-rw-r--r--src/components/application_manager/test/include/application_manager/mock_application.h1
-rw-r--r--src/components/include/application_manager/application_manager.h4
-rw-r--r--src/components/include/test/application_manager/mock_application_manager.h5
16 files changed, 40 insertions, 102 deletions
diff --git a/src/components/application_manager/include/application_manager/application.h b/src/components/application_manager/include/application_manager/application.h
index c931c492bb..628a6a7b07 100644
--- a/src/components/application_manager/include/application_manager/application.h
+++ b/src/components/application_manager/include/application_manager/application.h
@@ -160,11 +160,6 @@ typedef std::map<uint32_t, PerformChoice> PerformChoiceSetMap;
typedef std::set<uint32_t> SoftButtonID;
/**
- * @brief Defines set of vehicle info types
- */
-typedef std::set<mobile_apis::VehicleDataType::eType> VehicleInfoSubscriptions;
-
-/**
* @brief Defines set of buttons subscription
*/
typedef std::set<mobile_apis::ButtonName::eType> ButtonSubscriptions;
@@ -625,8 +620,6 @@ class Application : public virtual InitialApplicationData,
virtual bool UnsubscribeFromButton(
mobile_apis::ButtonName::eType btn_name) = 0;
- virtual bool IsSubscribedToIVI(uint32_t vehicle_info_type) const = 0;
-
/**
* @brief ResetDataInNone reset data counters in NONE
*/
diff --git a/src/components/application_manager/include/application_manager/application_impl.h b/src/components/application_manager/include/application_manager/application_impl.h
index 149ad39622..72a01ff86d 100644
--- a/src/components/application_manager/include/application_manager/application_impl.h
+++ b/src/components/application_manager/include/application_manager/application_impl.h
@@ -213,8 +213,6 @@ class ApplicationImpl : public virtual Application,
bool IsSubscribedToButton(mobile_apis::ButtonName::eType btn_name);
bool UnsubscribeFromButton(mobile_apis::ButtonName::eType btn_name);
- bool IsSubscribedToIVI(uint32_t vehicle_info_type) const OVERRIDE;
- DataAccessor<VehicleInfoSubscriptions> SubscribedIVI() const OVERRIDE;
inline bool IsRegistered() const OVERRIDE;
/**
@@ -473,7 +471,6 @@ class ApplicationImpl : public virtual Application,
std::string bundle_id_;
AppFilesMap app_files_;
std::set<mobile_apis::ButtonName::eType> subscribed_buttons_;
- VehicleInfoSubscriptions subscribed_vehicle_info_;
UsageStatistics usage_report_;
protocol_handler::MajorProtocolVersion protocol_version_;
bool is_voice_communication_application_;
diff --git a/src/components/application_manager/include/application_manager/application_manager_impl.h b/src/components/application_manager/include/application_manager/application_manager_impl.h
index 76e3105640..7433a5560f 100644
--- a/src/components/application_manager/include/application_manager/application_manager_impl.h
+++ b/src/components/application_manager/include/application_manager/application_manager_impl.h
@@ -283,8 +283,8 @@ class ApplicationManagerImpl
* @param vehicle_info Enum value of type of vehicle data
* @param new value (for integer values currently) of vehicle data
*/
- std::vector<ApplicationSharedPtr> IviInfoUpdated(
- mobile_apis::VehicleDataType::eType vehicle_info, int value) OVERRIDE;
+ void IviInfoUpdated(mobile_apis::VehicleDataType::eType vehicle_info,
+ int value) OVERRIDE;
void OnApplicationRegistered(ApplicationSharedPtr app) OVERRIDE;
diff --git a/src/components/application_manager/include/application_manager/helpers/application_helper.h b/src/components/application_manager/include/application_manager/helpers/application_helper.h
index cecda0cd6f..145bef659e 100644
--- a/src/components/application_manager/include/application_manager/helpers/application_helper.h
+++ b/src/components/application_manager/include/application_manager/helpers/application_helper.h
@@ -75,16 +75,6 @@ std::vector<ApplicationSharedPtr> FindAllApps(
}
/**
- * @brief The SubscribedToIVIPredicate is predicate for lookup within
- * applications list for apps subscribed for specific vehicle data
- */
-struct SubscribedToIVIPredicate {
- uint32_t vehicle_info_;
- explicit SubscribedToIVIPredicate(uint32_t vehicle_info);
- bool operator()(const ApplicationSharedPtr app) const;
-};
-
-/**
* @brief RecallApplicationData cleans up data within application instance to
* its initial state and notifies HMI to delete same data on its side
* @param app Application to clean its data
diff --git a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/commands/mobile/on_vehicle_data_notification.cc b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/commands/mobile/on_vehicle_data_notification.cc
index 5dac08c539..f8553c84f8 100644
--- a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/commands/mobile/on_vehicle_data_notification.cc
+++ b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/commands/mobile/on_vehicle_data_notification.cc
@@ -36,6 +36,9 @@
#include "application_manager/application_impl.h"
#include "application_manager/message_helper.h"
#include "interfaces/MOBILE_API.h"
+#include "vehicle_info_plugin/vehicle_info_app_extension.h"
+#include "application_manager/helpers/application_helper.h"
+#include "utils/macro.h"
namespace vehicle_info_plugin {
using namespace application_manager;
@@ -69,9 +72,21 @@ void OnVehicleDataNotification::Run() {
for (; vehicle_data.end() != it; ++it) {
if (true == (*message_)[strings::msg_params].keyExists(it->first)) {
+ LOG4CXX_ERROR(logger_, "vehicle_data nanme" << it->first);
+ auto vehicle_data_value =
+ (*message_)[strings::msg_params][it->first].asInt();
+
+ application_manager_.IviInfoUpdated(it->second, vehicle_data_value);
+
+ auto subscribed_to_ivi_predicate = [&it](const ApplicationSharedPtr app) {
+ DCHECK_OR_RETURN(app, false);
+ auto& ext = VehicleInfoAppExtension::ExtractVIExtension(*app);
+ return ext.isSubscribedToVehicleInfo(it->second);
+ };
+
const std::vector<ApplicationSharedPtr>& applications =
- application_manager_.IviInfoUpdated(
- it->second, (*message_)[strings::msg_params][it->first].asInt());
+ application_manager::FindAllApps(application_manager_.applications(),
+ subscribed_to_ivi_predicate);
std::vector<ApplicationSharedPtr>::const_iterator app_it =
applications.begin();
diff --git a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/commands/mobile/subscribe_vehicle_data_request.cc b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/commands/mobile/subscribe_vehicle_data_request.cc
index f2da9f1d20..dc29a477e8 100644
--- a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/commands/mobile/subscribe_vehicle_data_request.cc
+++ b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/commands/mobile/subscribe_vehicle_data_request.cc
@@ -359,7 +359,10 @@ struct SubscribedToIVIPredicate {
SubscribedToIVIPredicate(int32_t vehicle_info)
: vehicle_info_(vehicle_info) {}
bool operator()(const ApplicationSharedPtr app) const {
- return app ? app->IsSubscribedToIVI(vehicle_info_) : false;
+ DCHECK_OR_RETURN(app, false);
+ auto& ext = VehicleInfoAppExtension::ExtractVIExtension(*app);
+ return ext.isSubscribedToVehicleInfo(
+ static_cast<mobile_apis::VehicleDataType::eType>(vehicle_info_));
}
};
@@ -420,7 +423,10 @@ void SubscribeVehicleDataRequest::CheckVISubscriptions(
}
if (!is_interface_not_available && is_key_enabled) {
mobile_apis::VehicleDataType::eType key_type = it->second;
- if (app->IsSubscribedToIVI(key_type)) {
+ const auto is_subscribed =
+ VehicleInfoAppExtension::ExtractVIExtension(*app)
+ .isSubscribedToVehicleInfo(key_type);
+ if (is_subscribed) {
LOG4CXX_DEBUG(logger_,
"App with connection key "
<< connection_key()
diff --git a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/commands/mobile/unsubscribe_vehicle_data_request.cc b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/commands/mobile/unsubscribe_vehicle_data_request.cc
index 139f194bc1..e966a3791c 100644
--- a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/commands/mobile/unsubscribe_vehicle_data_request.cc
+++ b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/commands/mobile/unsubscribe_vehicle_data_request.cc
@@ -145,7 +145,10 @@ void UnsubscribeVehicleDataRequest::Run() {
++items_to_unsubscribe;
mobile_apis::VehicleDataType::eType key_type = it->second;
- if (!app->IsSubscribedToIVI(key_type)) {
+ const auto is_subscribed =
+ VehicleInfoAppExtension::ExtractVIExtension(*app)
+ .isSubscribedToVehicleInfo(key_type);
+ if (!is_subscribed) {
++unsubscribed_items;
vi_already_unsubscribed_by_this_app_.insert(key_type);
response_params[key_name][strings::data_type] = key_type;
@@ -379,7 +382,10 @@ struct SubscribedToIVIPredicate {
SubscribedToIVIPredicate(int32_t vehicle_info)
: vehicle_info_(vehicle_info) {}
bool operator()(const ApplicationSharedPtr app) const {
- return app ? app->IsSubscribedToIVI(vehicle_info_) : false;
+ DCHECK_OR_RETURN(app, false);
+ auto& ext = VehicleInfoAppExtension::ExtractVIExtension(*app);
+ return ext.isSubscribedToVehicleInfo(
+ static_cast<mobile_apis::VehicleDataType::eType>(vehicle_info_));
}
};
diff --git a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/test/commands/mobile/on_vehicle_data_notification_test.cc b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/test/commands/mobile/on_vehicle_data_notification_test.cc
index af071ae716..3cc5af575e 100644
--- a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/test/commands/mobile/on_vehicle_data_notification_test.cc
+++ b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/test/commands/mobile/on_vehicle_data_notification_test.cc
@@ -107,40 +107,6 @@ MATCHER_P2(CheckMessageData, key, value, "") {
kAreMsgParamsCorrect);
}
-TEST_F(OnVehicleDataNotificationTest,
- Run_NotEmptyListOfAppsSubscribedForEvent_SUCCESS) {
- am::VehicleData test_vehicle_data;
- test_vehicle_data.insert(am::VehicleData::value_type(
- am::strings::fuel_level,
- mobile_apis::VehicleDataType::VEHICLEDATA_FUELLEVEL));
-
- EXPECT_CALL(mock_message_helper_, vehicle_data())
- .WillOnce(ReturnRef(test_vehicle_data));
-
- const int kFuelLevel = 100;
- (*command_msg_)[am::strings::msg_params][am::strings::fuel_level] =
- kFuelLevel;
-
- MockAppPtr mock_app(CreateMockApp());
- std::vector<ApplicationSharedPtr> applications;
- applications.push_back(mock_app);
-
- EXPECT_CALL(
- app_mngr_,
- IviInfoUpdated(mobile_apis::VehicleDataType::VEHICLEDATA_FUELLEVEL,
- kFuelLevel)).WillOnce(Return(applications));
-
- EXPECT_CALL(*mock_app, app_id()).WillRepeatedly(Return(kAppId));
- ::utils::custom_string::CustomString dummy_name("test_app");
- ON_CALL(*mock_app, name()).WillByDefault(ReturnRef(dummy_name));
-
- EXPECT_CALL(mock_rpc_service_,
- SendMessageToMobile(
- CheckMessageData(am::strings::fuel_level, kFuelLevel), _));
-
- command_->Run();
-}
-
} // namespace on_vehicle_data_notification
} // namespace mobile_commands_test
} // namespace commands_test
diff --git a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/test/commands/mobile/unsubscribe_vehicle_request_test.cc b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/test/commands/mobile/unsubscribe_vehicle_request_test.cc
index 5b1f758c1e..a9a498d3c7 100644
--- a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/test/commands/mobile/unsubscribe_vehicle_request_test.cc
+++ b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/test/commands/mobile/unsubscribe_vehicle_request_test.cc
@@ -203,9 +203,6 @@ void UnsubscribeVehicleRequestTest::UnsubscribeSuccessfully() {
EXPECT_CALL(app_mngr_, applications()).WillRepeatedly(Return(accessor));
- EXPECT_CALL(*mock_app, IsSubscribedToIVI(kVehicleType))
- .WillRepeatedly(Return(true));
-
EXPECT_CALL(
mock_rpc_service_,
ManageMobileCommand(MobileResultCodeIs(mobile_result::SUCCESS), _));
@@ -232,8 +229,6 @@ TEST_F(UnsubscribeVehicleRequestTest, OnEvent_DataNotSubscribed_IGNORED) {
vehicle_data.insert(am::VehicleData::value_type(kMsgParamKey, kVehicleType));
EXPECT_CALL(mock_message_helper_, vehicle_data())
.WillOnce(ReturnRef(vehicle_data));
- EXPECT_CALL(*mock_app, IsSubscribedToIVI(kVehicleType))
- .WillRepeatedly(Return(false));
EXPECT_CALL(
mock_rpc_service_,
diff --git a/src/components/application_manager/src/application_impl.cc b/src/components/application_manager/src/application_impl.cc
index 0940740c8a..53ec040064 100644
--- a/src/components/application_manager/src/application_impl.cc
+++ b/src/components/application_manager/src/application_impl.cc
@@ -171,7 +171,6 @@ ApplicationImpl::~ApplicationImpl() {
}
subscribed_buttons_.clear();
- subscribed_vehicle_info_.clear();
if (is_perform_interaction_active()) {
set_perform_interaction_active(0);
set_perform_interaction_mode(-1);
@@ -760,13 +759,6 @@ bool ApplicationImpl::UnsubscribeFromButton(
return subscribed_buttons_.erase(btn_name);
}
-bool ApplicationImpl::IsSubscribedToIVI(uint32_t vehicle_info_type) const {
- sync_primitives::AutoLock lock(vi_lock_ptr_);
- VehicleInfoSubscriptions::const_iterator it = subscribed_vehicle_info_.find(
- static_cast<mobile_apis::VehicleDataType::eType>(vehicle_info_type));
- return (subscribed_vehicle_info_.end() != it);
-}
-
UsageStatistics& ApplicationImpl::usage_report() {
return usage_report_;
}
@@ -1092,10 +1084,6 @@ void ApplicationImpl::set_hmi_level(
usage_report_.RecordHmiStateChanged(new_hmi_level);
}
-const VehicleInfoSubscriptions& ApplicationImpl::SubscribesIVI() const {
- return subscribed_vehicle_info_;
-}
-
AppExtensionPtr ApplicationImpl::QueryInterface(AppExtensionUID uid) {
std::list<AppExtensionPtr>::const_iterator it = extensions_.begin();
for (; it != extensions_.end(); ++it) {
diff --git a/src/components/application_manager/src/application_manager_impl.cc b/src/components/application_manager/src/application_manager_impl.cc
index 924912cb1d..35deddfc8d 100644
--- a/src/components/application_manager/src/application_manager_impl.cc
+++ b/src/components/application_manager/src/application_manager_impl.cc
@@ -348,8 +348,7 @@ struct IsApplication {
connection_handler::DeviceHandle device_handle_;
const std::string& policy_app_id_;
};
-
-std::vector<ApplicationSharedPtr> ApplicationManagerImpl::IviInfoUpdated(
+void ApplicationManagerImpl::IviInfoUpdated(
mobile_apis::VehicleDataType::eType vehicle_info, int value) {
// Notify Policy Manager if available about info it's interested in,
// i.e. odometer etc
@@ -360,10 +359,6 @@ std::vector<ApplicationSharedPtr> ApplicationManagerImpl::IviInfoUpdated(
default:
break;
}
-
- SubscribedToIVIPredicate finder(vehicle_info);
- DataAccessor<ApplicationSet> accessor = applications();
- return FindAllApps(accessor, finder);
}
void ApplicationManagerImpl::OnApplicationRegistered(ApplicationSharedPtr app) {
diff --git a/src/components/application_manager/src/helpers/application_helper.cc b/src/components/application_manager/src/helpers/application_helper.cc
index bfe6b15930..66afd6b0b6 100644
--- a/src/components/application_manager/src/helpers/application_helper.cc
+++ b/src/components/application_manager/src/helpers/application_helper.cc
@@ -106,14 +106,6 @@ namespace application_manager {
CREATE_LOGGERPTR_GLOBAL(logger, "ApplicationManager")
-SubscribedToIVIPredicate::SubscribedToIVIPredicate(uint32_t vehicle_info)
- : vehicle_info_(vehicle_info) {}
-
-bool SubscribedToIVIPredicate::operator()(
- const ApplicationSharedPtr app) const {
- return app ? app->IsSubscribedToIVI(vehicle_info_) : false;
-}
-
void DeleteApplicationData(ApplicationSharedPtr app,
ApplicationManager& app_manager) {
LOG4CXX_AUTO_TRACE(logger);
diff --git a/src/components/application_manager/test/application_helper_test.cc b/src/components/application_manager/test/application_helper_test.cc
index b27ed57872..25cd13fcad 100644
--- a/src/components/application_manager/test/application_helper_test.cc
+++ b/src/components/application_manager/test/application_helper_test.cc
@@ -172,8 +172,6 @@ TEST_F(ApplicationHelperTest, RecallApplicationData_ExpectAppDataReset) {
EXPECT_TRUE(NULL != app_impl_->FindCommand(cmd_id));
EXPECT_TRUE(NULL != app_impl_->FindSubMenu(menu_id));
EXPECT_TRUE(NULL != app_impl_->FindChoiceSet(choice_set_id));
- EXPECT_TRUE(app_impl_->IsSubscribedToButton(button));
- EXPECT_TRUE(app_impl_->IsSubscribedToIVI(static_cast<uint32_t>(vi)));
auto help_prompt = app_impl_->help_prompt();
EXPECT_TRUE(help_prompt->asString() == some_string);
auto timeout_prompt = app_impl_->timeout_prompt();
@@ -198,7 +196,6 @@ TEST_F(ApplicationHelperTest, RecallApplicationData_ExpectAppDataReset) {
EXPECT_FALSE(NULL != app_impl_->FindSubMenu(menu_id));
EXPECT_FALSE(NULL != app_impl_->FindChoiceSet(choice_set_id));
EXPECT_FALSE(app_impl_->IsSubscribedToButton(button));
- EXPECT_FALSE(app_impl_->IsSubscribedToIVI(static_cast<uint32_t>(vi)));
help_prompt = app_impl_->help_prompt();
EXPECT_FALSE(help_prompt->asString() == some_string);
timeout_prompt = app_impl_->timeout_prompt();
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 5750556774..f3e316e5bb 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
@@ -150,7 +150,6 @@ class MockApplication : public ::application_manager::Application {
bool(mobile_apis::ButtonName::eType btn_name));
MOCK_METHOD1(UnsubscribeFromButton,
bool(mobile_apis::ButtonName::eType btn_name));
- MOCK_CONST_METHOD1(IsSubscribedToIVI, bool(uint32_t vehicle_info_type));
MOCK_METHOD0(ResetDataInNone, void());
MOCK_METHOD2(AreCommandLimitsExceeded,
bool(mobile_apis::FunctionID::eType cmd_id,
diff --git a/src/components/include/application_manager/application_manager.h b/src/components/include/application_manager/application_manager.h
index c273cf0262..0888e1fc90 100644
--- a/src/components/include/application_manager/application_manager.h
+++ b/src/components/include/application_manager/application_manager.h
@@ -433,8 +433,8 @@ class ApplicationManager {
* @param vehicle_info Enum value of type of vehicle data
* @param new value (for integer values currently) of vehicle data
*/
- virtual AppSharedPtrs IviInfoUpdated(
- mobile_apis::VehicleDataType::eType vehicle_info, int value) = 0;
+ virtual void IviInfoUpdated(mobile_apis::VehicleDataType::eType vehicle_info,
+ int value) = 0;
virtual ApplicationSharedPtr RegisterApplication(const utils::SharedPtr<
smart_objects::SmartObject>& request_for_registration) = 0;
diff --git a/src/components/include/test/application_manager/mock_application_manager.h b/src/components/include/test/application_manager/mock_application_manager.h
index fb3578c2f0..09957dbde0 100644
--- a/src/components/include/test/application_manager/mock_application_manager.h
+++ b/src/components/include/test/application_manager/mock_application_manager.h
@@ -163,9 +163,8 @@ class MockApplicationManager : public application_manager::ApplicationManager {
MOCK_METHOD0(OnHMIStartedCooperation, void());
MOCK_CONST_METHOD0(IsHMICooperating, bool());
MOCK_METHOD2(IviInfoUpdated,
- std::vector<application_manager::ApplicationSharedPtr>(
- mobile_apis::VehicleDataType::eType vehicle_info,
- int value));
+ void(mobile_apis::VehicleDataType::eType vehicle_info,
+ int value));
MOCK_METHOD1(RegisterApplication,
application_manager::ApplicationSharedPtr(const utils::SharedPtr<
smart_objects::SmartObject>& request_for_registration));