summaryrefslogtreecommitdiff
path: root/src/components
diff options
context:
space:
mode:
authorBSolonenko <BSolonenko@luxoft.com>2018-03-03 19:06:29 +0200
committerIra Lytvynenko (GitHub) <ILytvynenko@luxoft.com>2018-06-26 12:01:46 +0300
commit57aa1c99210a39546106d02a26be82eeb2a7800f (patch)
treeb0bc3878f2e75725548870e381300b47f2f0a96b /src/components
parentf3c20e49e05d65314760e04ed6656fe2d6bcd49c (diff)
downloadsdl_core-57aa1c99210a39546106d02a26be82eeb2a7800f.tar.gz
Fixed get RC Applications
- added is_rc_ field, getter and setter in ApplicationImpl; - fixed RegisterAppInterfaceRequest::Run(); - fixed RCRPCPlugin::GetRCApplications(). Fix UTs Added is_remote_control_supported and set_remote_control_supported methods in MockApplication Fixed on_interior_vehicle_data_notification_test and resource_allocation_manager_impl_test. Fixed sending of notifications. - Fixed RCRPCPlugin::OnPolicyEvent; - Fixed RCRPCPlugin::OnApplicationEvent; - Fixed OnExitApplicationNotification::Run; - Fixed ApplicationManagerImpl::UnregisterApplication; - Fixed ApplicationManagerImpl::OnPTUFinished; - Refactoring ApplicationImpl::RemoveExtension; - is_remote_control_supported_ added in initialization list. Fix UTs In application_manager_impl_test added seting RPCPluginManager Conflicts: src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/resource_allocation_manager_impl_test.cc src/components/application_manager/src/application_manager_impl.cc
Diffstat (limited to 'src/components')
-rw-r--r--src/components/application_manager/include/application_manager/application.h14
-rw-r--r--src/components/application_manager/include/application_manager/application_impl.h5
-rw-r--r--src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/rc_rpc_plugin.cc36
-rw-r--r--src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/commands/on_interior_vehicle_data_notification_test.cc2
-rw-r--r--src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/resource_allocation_manager_impl_test.cc86
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_exit_application_notification.cc7
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/register_app_interface_request.cc34
-rw-r--r--src/components/application_manager/src/application_impl.cc24
-rw-r--r--src/components/application_manager/src/application_manager_impl.cc23
-rw-r--r--src/components/application_manager/test/application_manager_impl_test.cc7
-rw-r--r--src/components/application_manager/test/include/application_manager/mock_application.h2
11 files changed, 156 insertions, 84 deletions
diff --git a/src/components/application_manager/include/application_manager/application.h b/src/components/application_manager/include/application_manager/application.h
index cd3b31ce75..14c5bb8640 100644
--- a/src/components/application_manager/include/application_manager/application.h
+++ b/src/components/application_manager/include/application_manager/application.h
@@ -457,6 +457,20 @@ class Application : public virtual InitialApplicationData,
virtual bool is_navi() const = 0;
virtual void set_is_navi(bool allow) = 0;
+ /**
+ * @brief Returns is_remote_control_supported_
+ * @return true if app supports remote control, else false
+ */
+ virtual bool is_remote_control_supported() const = 0;
+
+ /**
+ * @brief Sets remote control supported,
+ * which is used to determine app with remote control
+ * @param allow, if true - remote control is supported,
+ * else remote control is disable
+ */
+ virtual void set_remote_control_supported(const bool allow) = 0;
+
virtual void set_mobile_projection_enabled(bool option) = 0;
virtual bool mobile_projection_enabled() const = 0;
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 e033570435..2fa4ba6499 100644
--- a/src/components/application_manager/include/application_manager/application_impl.h
+++ b/src/components/application_manager/include/application_manager/application_impl.h
@@ -121,6 +121,10 @@ class ApplicationImpl : public virtual Application,
}
void set_is_navi(bool allow);
+ virtual bool is_remote_control_supported() const;
+
+ void set_remote_control_supported(const bool allow);
+
void set_mobile_projection_enabled(bool option);
bool mobile_projection_enabled() const;
@@ -456,6 +460,7 @@ class ApplicationImpl : public virtual Application,
smart_objects::SmartObject* active_message_;
bool is_media_;
bool is_navi_;
+ bool is_remote_control_supported_;
bool mobile_projection_enabled_;
bool video_streaming_approved_;
diff --git a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/rc_rpc_plugin.cc b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/rc_rpc_plugin.cc
index 4bf2abd607..9a3b55e278 100644
--- a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/rc_rpc_plugin.cc
+++ b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/rc_rpc_plugin.cc
@@ -39,16 +39,36 @@ application_manager::CommandFactory& RCRPCPlugin::GetCommandFactory() {
}
void RCRPCPlugin::OnPolicyEvent(
- application_manager::plugin_manager::PolicyEvent event) {}
+ application_manager::plugin_manager::PolicyEvent event) {
+ switch (event) {
+ case plugins::kApplicationPolicyUpdated: {
+ resource_allocation_manager_->OnPolicyEvent(event);
+ break;
+ }
+ default:
+ break;
+ }
+}
void RCRPCPlugin::OnApplicationEvent(
application_manager::plugin_manager::ApplicationEvent event,
application_manager::ApplicationSharedPtr application) {
+ if (!application->is_remote_control_supported()) {
+ return;
+ }
switch (event) {
case plugins::kApplicationRegistered: {
application->AddExtension(new RCAppExtension(kRCPluginID));
break;
}
+ case plugins::kApplicationExit: {
+ resource_allocation_manager_->OnApplicationEvent(event, application);
+ break;
+ }
+ case plugins::kApplicationUnregistered: {
+ resource_allocation_manager_->OnApplicationEvent(event, application);
+ break;
+ }
default:
break;
}
@@ -59,17 +79,11 @@ RCRPCPlugin::Apps RCRPCPlugin::GetRCApplications(application_manager::Applicatio
using application_manager::ApplicationSet;
ApplicationSet accessor = app_mngr.applications().GetData();
- auto predicate = [](const ApplicationSharedPtr& app) {
- auto uid = RCRPCPlugin::kRCPluginID;
- return app ? app->QueryInterface(uid).valid() : false;
- };
-
- auto it = std::find_if(accessor.begin(), accessor.end(), predicate);
-
std::vector<ApplicationSharedPtr> result;
- while (it != accessor.end()) {
- result.push_back(*it);
- it = std::find_if(++it, accessor.end(), predicate);
+ for (const auto& it : accessor) {
+ if (it->is_remote_control_supported()) {
+ result.push_back(it);
+ }
}
return result;
}
diff --git a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/commands/on_interior_vehicle_data_notification_test.cc b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/commands/on_interior_vehicle_data_notification_test.cc
index bbf0680052..e26b5b9e0f 100644
--- a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/commands/on_interior_vehicle_data_notification_test.cc
+++ b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/commands/on_interior_vehicle_data_notification_test.cc
@@ -119,6 +119,8 @@ TEST_F(OnInteriorVehicleDataNotificationTest,
rc_extention_ptr->SubscribeToInteriorVehicleData(enums_value::kClimate);
ON_CALL(*mock_app_, QueryInterface(_))
.WillByDefault(Return(rc_extention_ptr));
+ ON_CALL(*mock_app_, is_remote_control_supported())
+ .WillByDefault(Return(true));
EXPECT_CALL(mock_rpc_service_, SendMessageToMobile(_, false))
.WillOnce(SaveArg<0>(&message));
diff --git a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/resource_allocation_manager_impl_test.cc b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/resource_allocation_manager_impl_test.cc
index 5bd891d3a2..a5079eaf86 100644
--- a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/resource_allocation_manager_impl_test.cc
+++ b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/resource_allocation_manager_impl_test.cc
@@ -78,12 +78,18 @@ using namespace rc_rpc_plugin;
class RAManagerTest : public ::testing::Test {
public:
RAManagerTest()
- : mock_app_1_(utils::MakeShared<NiceMock<MockApplication> >())
+ : message_(utils::MakeShared<Message>(MessagePriority::FromServiceType(
+ protocol_handler::ServiceType::kRpc)))
+ , mock_app_1_(utils::MakeShared<NiceMock<MockApplication> >())
, mock_app_2_(utils::MakeShared<NiceMock<MockApplication> >())
- , message_(utils::MakeShared<Message>(MessagePriority::FromServiceType(
- protocol_handler::ServiceType::kRpc))) {
+ , apps_da_(apps_, apps_lock_) {
ON_CALL(mock_app_mngr_, GetPolicyHandler())
.WillByDefault(ReturnRef(mock_policy_handler_));
+ auto plugin_id = rc_rpc_plugin::RCRPCPlugin::kRCPluginID;
+ app_ext_ptr_ = utils::MakeShared<rc_rpc_plugin::RCAppExtension>(plugin_id);
+ ON_CALL(*mock_app_1_, app_id()).WillByDefault(Return(kAppId1));
+
+ OnRCStatusNotoficationExpectations();
}
void CheckResultWithHMILevelAndAccessMode(
@@ -93,13 +99,18 @@ class RAManagerTest : public ::testing::Test {
const hmi_apis::Common_RCAccessMode::eType access_mode);
protected:
- utils::SharedPtr<NiceMock<MockApplication> > mock_app_1_;
- utils::SharedPtr<NiceMock<MockApplication> > mock_app_2_;
- application_manager::MessagePtr message_;
NiceMock<MockApplicationManager> mock_app_mngr_;
+ NiceMock<MockRPCService> mock_rpc_service_;
test::components::policy_test::MockPolicyHandlerInterface
mock_policy_handler_;
- // rc_rpc_plugin_test::MockRemotePluginInterface mock_module_;
+ application_manager::MessagePtr message_;
+
+ application_manager::AppExtensionPtr app_ext_ptr_;
+ utils::SharedPtr<NiceMock<MockApplication> > mock_app_1_;
+ utils::SharedPtr<NiceMock<MockApplication> > mock_app_2_;
+ application_manager::ApplicationSet apps_;
+ const sync_primitives::Lock apps_lock_;
+ DataAccessor<application_manager::ApplicationSet> apps_da_;
};
void RAManagerTest::CheckResultWithHMILevelAndAccessMode(
@@ -126,7 +137,7 @@ TEST_F(RAManagerTest, AcquireResource_NoAppRegistered_Expect_InUse) {
// Arrange
EXPECT_CALL(mock_app_mngr_, application(kAppId1))
.WillOnce(Return(ApplicationSharedPtr()));
- ResourceAllocationManagerImpl ra_manager(mock_app_mngr_);
+ ResourceAllocationManagerImpl ra_manager(mock_app_mngr_, mock_rpc_service_);
// Act & Assert
EXPECT_EQ(rc_rpc_plugin::AcquireResult::IN_USE,
ra_manager.AcquireResource(kModuleType1, kAppId1));
@@ -135,9 +146,7 @@ TEST_F(RAManagerTest, AcquireResource_NoAppRegistered_Expect_InUse) {
TEST_F(RAManagerTest,
AcquireResource_AppRegisteredAnyHmiLevelResourceFree_Expect_Allowed) {
// Arrange
- EXPECT_CALL(mock_app_mngr_, application(kAppId1))
- .WillOnce(Return(mock_app_1_));
- ResourceAllocationManagerImpl ra_manager(mock_app_mngr_);
+ ResourceAllocationManagerImpl ra_manager(mock_app_mngr_, mock_rpc_service_);
// Act & Assert
EXPECT_EQ(rc_rpc_plugin::AcquireResult::ALLOWED,
ra_manager.AcquireResource(kModuleType1, kAppId1));
@@ -149,7 +158,7 @@ TEST_F(
// Arrange
EXPECT_CALL(mock_app_mngr_, application(kAppId1))
.WillOnce(Return(mock_app_1_));
- ResourceAllocationManagerImpl ra_manager(mock_app_mngr_);
+ ResourceAllocationManagerImpl ra_manager(mock_app_mngr_, mock_rpc_service_);
EXPECT_EQ(rc_rpc_plugin::AcquireResult::ALLOWED,
ra_manager.AcquireResource(kModuleType1, kAppId1));
EXPECT_CALL(mock_app_mngr_, application(kAppId1))
@@ -169,7 +178,7 @@ TEST_F(
const AcquireResult::eType expected_result = AcquireResult::REJECTED;
const Common_RCAccessMode::eType access_mode =
Common_RCAccessMode::eType::AUTO_ALLOW;
- ResourceAllocationManagerImpl ra_manager(mock_app_mngr_);
+ ResourceAllocationManagerImpl ra_manager(mock_app_mngr_, mock_rpc_service_);
CheckResultWithHMILevelAndAccessMode(
ra_manager, app_level, expected_result, access_mode);
}
@@ -184,7 +193,7 @@ TEST_F(
const AcquireResult::eType expected_result = AcquireResult::IN_USE;
const Common_RCAccessMode::eType access_mode =
Common_RCAccessMode::eType::AUTO_DENY;
- ResourceAllocationManagerImpl ra_manager(mock_app_mngr_);
+ ResourceAllocationManagerImpl ra_manager(mock_app_mngr_, mock_rpc_service_);
CheckResultWithHMILevelAndAccessMode(
ra_manager, app_level, expected_result, access_mode);
}
@@ -199,7 +208,7 @@ TEST_F(
const AcquireResult::eType expected_result = AcquireResult::ALLOWED;
const Common_RCAccessMode::eType access_mode =
Common_RCAccessMode::eType::AUTO_ALLOW;
- ResourceAllocationManagerImpl ra_manager(mock_app_mngr_);
+ ResourceAllocationManagerImpl ra_manager(mock_app_mngr_, mock_rpc_service_);
CheckResultWithHMILevelAndAccessMode(
ra_manager, app_level, expected_result, access_mode);
}
@@ -214,7 +223,7 @@ TEST_F(
const AcquireResult::eType expected_result = AcquireResult::ASK_DRIVER;
const Common_RCAccessMode::eType access_mode =
Common_RCAccessMode::eType::ASK_DRIVER;
- ResourceAllocationManagerImpl ra_manager(mock_app_mngr_);
+ ResourceAllocationManagerImpl ra_manager(mock_app_mngr_, mock_rpc_service_);
CheckResultWithHMILevelAndAccessMode(
ra_manager, app_level, expected_result, access_mode);
}
@@ -222,9 +231,9 @@ TEST_F(
TEST_F(RAManagerTest,
AcquireResource_AcquiredModuleIsRejectedForApp2_ExpectApp2Rejected) {
// Arrange
- ResourceAllocationManagerImpl ra_manager(mock_app_mngr_);
+ ResourceAllocationManagerImpl ra_manager(mock_app_mngr_, mock_rpc_service_);
EXPECT_CALL(mock_app_mngr_, application(kAppId1))
- .WillOnce(Return(mock_app_1_));
+ .WillRepeatedly(Return(mock_app_1_));
EXPECT_EQ(AcquireResult::ALLOWED,
ra_manager.AcquireResource(kModuleType1, kAppId1));
@@ -240,28 +249,18 @@ TEST_F(RAManagerTest,
TEST_F(RAManagerTest, AppExit_ReleaseResource) {
// Arrange
- ResourceAllocationManagerImpl ra_manager(mock_app_mngr_);
+ ResourceAllocationManagerImpl ra_manager(mock_app_mngr_, mock_rpc_service_);
ra_manager.SetAccessMode(hmi_apis::Common_RCAccessMode::eType::AUTO_DENY);
EXPECT_CALL(mock_app_mngr_, application(kAppId1))
.WillRepeatedly(Return(mock_app_1_));
- RCAppExtensionPtr rc_extention_ptr =
- utils::MakeShared<RCAppExtension>(application_manager::AppExtensionUID(
- rc_rpc_plugin::RCRPCPlugin::kRCPluginID));
-
- EXPECT_CALL(*mock_app_1_, QueryInterface(_))
- .WillOnce(Return(rc_extention_ptr));
-
EXPECT_EQ(rc_rpc_plugin::AcquireResult::ALLOWED,
ra_manager.AcquireResource(kModuleType1, kAppId1));
// Act
- application_manager::ApplicationSharedPtr app_ptr(mock_app_1_);
- EXPECT_CALL(*mock_app_1_, app_id()).WillRepeatedly(Return(kAppId1));
-
ra_manager.OnApplicationEvent(
- application_manager::plugin_manager::kApplicationExit, app_ptr);
+ application_manager::plugin_manager::kApplicationExit, mock_app_1_);
EXPECT_CALL(mock_app_mngr_, application(kAppId2))
.WillRepeatedly(Return(mock_app_2_));
@@ -272,7 +271,7 @@ TEST_F(RAManagerTest, AppExit_ReleaseResource) {
TEST_F(RAManagerTest, AnotherAppExit_NoReleaseResource) {
// Arrange
- ResourceAllocationManagerImpl ra_manager(mock_app_mngr_);
+ ResourceAllocationManagerImpl ra_manager(mock_app_mngr_, mock_rpc_service_);
ra_manager.SetAccessMode(hmi_apis::Common_RCAccessMode::eType::AUTO_DENY);
EXPECT_CALL(mock_app_mngr_, application(kAppId1))
@@ -307,19 +306,13 @@ TEST_F(RAManagerTest, AnotherAppExit_NoReleaseResource) {
TEST_F(RAManagerTest, AppUnregistered_ReleaseResource) {
// Arrange
- ResourceAllocationManagerImpl ra_manager(mock_app_mngr_);
+ ResourceAllocationManagerImpl ra_manager(mock_app_mngr_, mock_rpc_service_);
ra_manager.SetAccessMode(hmi_apis::Common_RCAccessMode::eType::AUTO_DENY);
RCAppExtensionPtr rc_extention_ptr =
utils::MakeShared<RCAppExtension>(application_manager::AppExtensionUID(
rc_rpc_plugin::RCRPCPlugin::kRCPluginID));
- EXPECT_CALL(*mock_app_1_, QueryInterface(_))
- .WillOnce(Return(rc_extention_ptr));
-
- EXPECT_CALL(mock_app_mngr_, application(kAppId1))
- .WillRepeatedly(Return(mock_app_1_));
-
EXPECT_EQ(rc_rpc_plugin::AcquireResult::ALLOWED,
ra_manager.AcquireResource(kModuleType1, kAppId1));
@@ -339,7 +332,7 @@ TEST_F(RAManagerTest, AppUnregistered_ReleaseResource) {
TEST_F(RAManagerTest, AnotherAppUnregistered_NoReleaseResource) {
// Arrange
- ResourceAllocationManagerImpl ra_manager(mock_app_mngr_);
+ ResourceAllocationManagerImpl ra_manager(mock_app_mngr_, mock_rpc_service_);
ra_manager.SetAccessMode(hmi_apis::Common_RCAccessMode::eType::AUTO_DENY);
EXPECT_CALL(mock_app_mngr_, application(kAppId1))
@@ -374,7 +367,7 @@ TEST_F(RAManagerTest, AnotherAppUnregistered_NoReleaseResource) {
TEST_F(RAManagerTest, AppsDisallowed_ReleaseAllResources) {
// Arrange
- ResourceAllocationManagerImpl ra_manager(mock_app_mngr_);
+ ResourceAllocationManagerImpl ra_manager(mock_app_mngr_, mock_rpc_service_);
ra_manager.SetAccessMode(hmi_apis::Common_RCAccessMode::eType::AUTO_DENY);
EXPECT_CALL(mock_app_mngr_, application(kAppId1))
@@ -416,19 +409,14 @@ TEST_F(RAManagerTest, AppsDisallowed_ReleaseAllResources) {
TEST_F(RAManagerTest, AppGotRevokedModulesWithPTU_ReleaseRevokedResource) {
// Arrange
- ResourceAllocationManagerImpl ra_manager(mock_app_mngr_);
+ ResourceAllocationManagerImpl ra_manager(mock_app_mngr_, mock_rpc_service_);
ra_manager.SetAccessMode(hmi_apis::Common_RCAccessMode::eType::AUTO_DENY);
EXPECT_CALL(mock_app_mngr_, application(kAppId1))
.WillRepeatedly(Return(mock_app_1_));
- RCAppExtensionPtr rc_extention_ptr =
- utils::MakeShared<rc_rpc_plugin::RCAppExtension>(
- application_manager::AppExtensionUID(
- rc_rpc_plugin::RCRPCPlugin::kRCPluginID));
-
- EXPECT_CALL(*mock_app_1_, QueryInterface(RCRPCPlugin::kRCPluginID))
- .WillRepeatedly(Return(rc_extention_ptr));
+ ON_CALL(*mock_app_1_, is_remote_control_supported())
+ .WillByDefault(Return(true));
EXPECT_CALL(mock_app_mngr_, application(kAppId1))
.WillRepeatedly(Return(mock_app_1_));
@@ -472,7 +460,7 @@ TEST_F(RAManagerTest, AppGotRevokedModulesWithPTU_ReleaseRevokedResource) {
}
TEST_F(RAManagerTest, GetAccessMode_ExpectedSameAsHadSet) {
- ResourceAllocationManagerImpl ra_manager(mock_app_mngr_);
+ ResourceAllocationManagerImpl ra_manager(mock_app_mngr_, mock_rpc_service_);
ra_manager.SetAccessMode(hmi_apis::Common_RCAccessMode::AUTO_DENY);
EXPECT_EQ(hmi_apis::Common_RCAccessMode::AUTO_DENY,
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_exit_application_notification.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_exit_application_notification.cc
index ac8cc55403..3948d34465 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_exit_application_notification.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_exit_application_notification.cc
@@ -71,6 +71,13 @@ void OnExitApplicationNotification::Run() {
LOG4CXX_ERROR(logger_, "Application does not exist");
return;
}
+
+ auto on_app_exit = [app_impl](plugin_manager::RPCPlugin& plugin) {
+ plugin.OnApplicationEvent(plugin_manager::kApplicationExit, app_impl);
+ };
+
+ application_manager_.GetPluginManager().ForEachPlugin(on_app_exit);
+
Common_ApplicationExitReason::eType reason;
reason = static_cast<Common_ApplicationExitReason::eType>(
(*message_)[strings::msg_params][strings::reason].asInt());
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 83dc15c5ad..9018f89d5d 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
@@ -354,20 +354,28 @@ void RegisterAppInterfaceRequest::Run() {
msg_params.getElement(strings::app_hmi_type);
for (size_t i = 0; i < app_type.length(); ++i) {
- if (mobile_apis::AppHMIType::NAVIGATION ==
+ mobile_apis::AppHMIType::eType current_app_type =
static_cast<mobile_apis::AppHMIType::eType>(
- app_type.getElement(i).asUInt())) {
- application->set_is_navi(true);
- }
- if (mobile_apis::AppHMIType::COMMUNICATION ==
- static_cast<mobile_apis::AppHMIType::eType>(
- app_type.getElement(i).asUInt())) {
- application->set_voice_communication_supported(true);
- }
- if (mobile_apis::AppHMIType::PROJECTION ==
- static_cast<mobile_apis::AppHMIType::eType>(
- app_type.getElement(i).asUInt())) {
- application->set_mobile_projection_enabled(true);
+ app_type.getElement(i).asUInt());
+
+ switch (current_app_type) {
+ case mobile_apis::AppHMIType::NAVIGATION: {
+ application->set_is_navi(true);
+ break;
+ }
+ case mobile_apis::AppHMIType::COMMUNICATION: {
+ application->set_voice_communication_supported(true);
+ break;
+ }
+ case mobile_apis::AppHMIType::PROJECTION: {
+ application->set_mobile_projection_enabled(true);
+ break;
+ }
+ case mobile_apis::AppHMIType::REMOTE_CONTROL: {
+ application->set_remote_control_supported(true);
+ break;
+ }
+ default: {}
}
}
}
diff --git a/src/components/application_manager/src/application_impl.cc b/src/components/application_manager/src/application_impl.cc
index 9798ef8113..5042835944 100644
--- a/src/components/application_manager/src/application_impl.cc
+++ b/src/components/application_manager/src/application_impl.cc
@@ -105,6 +105,7 @@ ApplicationImpl::ApplicationImpl(
, active_message_(NULL)
, is_media_(false)
, is_navi_(false)
+ , is_remote_control_supported_(false)
, mobile_projection_enabled_(false)
, video_streaming_approved_(false)
, audio_streaming_approved_(false)
@@ -220,6 +221,14 @@ void ApplicationImpl::set_is_navi(bool allow) {
is_navi_ = allow;
}
+bool ApplicationImpl::is_remote_control_supported() const {
+ return is_remote_control_supported_;
+}
+
+void ApplicationImpl::set_remote_control_supported(const bool allow) {
+ is_remote_control_supported_ = allow;
+}
+
bool ApplicationImpl::is_voice_communication_supported() const {
return is_voice_communication_application_;
}
@@ -1120,15 +1129,12 @@ bool ApplicationImpl::AddExtension(AppExtensionPtr extension) {
}
bool ApplicationImpl::RemoveExtension(AppExtensionUID uid) {
- for (std::list<AppExtensionPtr>::iterator it = extensions_.begin();
- extensions_.end() != it;
- ++it) {
- if ((*it)->uid() == uid) {
- extensions_.erase(it);
- return true;
- }
- }
- return false;
+ auto it = std::find_if(
+ extensions_.begin(),
+ extensions_.end(),
+ [uid](AppExtensionPtr extension) { return extension->uid() == uid; });
+
+ return it != extensions_.end();
}
void ApplicationImpl::RemoveExtensions() {
diff --git a/src/components/application_manager/src/application_manager_impl.cc b/src/components/application_manager/src/application_manager_impl.cc
index 7c32609c1a..18d4ea54d8 100644
--- a/src/components/application_manager/src/application_manager_impl.cc
+++ b/src/components/application_manager/src/application_manager_impl.cc
@@ -2477,6 +2477,15 @@ void ApplicationManagerImpl::UnregisterApplication(
MessageHelper::SendStopAudioPathThru(*this);
}
+#ifdef SDL_REMOTE_CONTROL
+ auto on_app_unregistered =
+ [app_to_remove](plugin_manager::RPCPlugin& plugin) {
+ plugin.OnApplicationEvent(plugin_manager::kApplicationUnregistered,
+ app_to_remove);
+ };
+ plugin_manager_->ForEachPlugin(on_app_unregistered);
+#endif
+
MessageHelper::SendOnAppUnregNotificationToHMI(
app_to_remove, is_unexpected_disconnect, *this);
request_ctrl_.terminateAppRequests(app_id);
@@ -2493,7 +2502,7 @@ mobile_apis::Result::eType ApplicationManagerImpl::CheckPolicyPermissions(
const std::string& function_id,
const RPCParams& rpc_params,
CommandParametersPermissions* params_permissions) {
- LOG4CXX_INFO(logger_, "CheckPolicyPermissions");
+ LOG4CXX_AUTO_TRACE(logger_);
// TODO(AOleynik): Remove check of policy_enable, when this flag will be
// unused in config file
if (!GetPolicyHandler().PolicyEnabled()) {
@@ -3301,7 +3310,17 @@ void ApplicationManagerImpl::ProcessReconnection(
GetPolicyHandler().AddDevice(device_mac, connection_type);
}
-void ApplicationManagerImpl::OnPTUFinished(const bool ptu_result) {}
+void ApplicationManagerImpl::OnPTUFinished(const bool ptu_result) {
+ LOG4CXX_AUTO_TRACE(logger_);
+ if (!ptu_result) {
+ return;
+ }
+ auto on_app_policy_updated = [](plugin_manager::RPCPlugin& plugin) {
+ plugin.OnPolicyEvent(plugin_manager::kApplicationPolicyUpdated);
+ };
+
+ plugin_manager_->ForEachPlugin(on_app_policy_updated);
+}
void ApplicationManagerImpl::PutDriverDistractionMessageToPostponed(
ApplicationSharedPtr application) const {
diff --git a/src/components/application_manager/test/application_manager_impl_test.cc b/src/components/application_manager/test/application_manager_impl_test.cc
index 19ba8bbc78..f31b00c451 100644
--- a/src/components/application_manager/test/application_manager_impl_test.cc
+++ b/src/components/application_manager/test/application_manager_impl_test.cc
@@ -44,6 +44,7 @@
#include "application_manager/mock_application_manager_settings.h"
#include "application_manager/mock_resumption_data.h"
#include "application_manager/mock_rpc_service.h"
+#include "application_manager/mock_rpc_plugin_manager.h"
#include "application_manager/resumption/resume_ctrl_impl.h"
#include "application_manager/test/include/application_manager/mock_message_helper.h"
#include "connection_handler/mock_connection_handler.h"
@@ -749,6 +750,12 @@ TEST_F(ApplicationManagerImplTest,
utils::SharedPtr<MockApplication> switching_app_ptr =
utils::MakeShared<MockApplication>();
+ plugin_manager::MockRPCPluginManager* mock_rpc_plugin_manager =
+ new plugin_manager::MockRPCPluginManager;
+ std::unique_ptr<plugin_manager::RPCPluginManager> mock_rpc_plugin_manager_ptr(
+ mock_rpc_plugin_manager);
+ app_manager_impl_->SetPluginManager(mock_rpc_plugin_manager_ptr);
+
const std::string switching_device_id = "switching";
const std::string switching_device_id_hash =
encryption::MakeHash(switching_device_id);
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 5bc4ef6a42..cc7ae688cb 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
@@ -334,6 +334,8 @@ class MockApplication : public ::application_manager::Application {
MOCK_METHOD0(RemoveExtensions, void());
MOCK_CONST_METHOD0(SubscribesIVI,
const application_manager::VehicleInfoSubscriptions&());
+ MOCK_CONST_METHOD0(is_remote_control_supported, bool());
+ MOCK_METHOD1(set_remote_control_supported, void(const bool allow));
#endif // SDL_REMOTE_CONTROL
};