diff options
author | Alexander <akutsan@luxoft.com> | 2018-06-17 21:13:28 +0300 |
---|---|---|
committer | Ira Lytvynenko (GitHub) <ILytvynenko@luxoft.com> | 2018-06-27 18:20:30 +0300 |
commit | 73cb69e30d5b45d08411123cdbaf980f3e77611c (patch) | |
tree | 2388a4df7631ffcf70d6f54ea5f6a904bf7d83be | |
parent | 6fd488641ec7d761776e167af90a8beedb51bbd6 (diff) | |
download | sdl_core-73cb69e30d5b45d08411123cdbaf980f3e77611c.tar.gz |
Move IsSubsscrbedTo to plugin
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)); |