summaryrefslogtreecommitdiff
path: root/src/components/application_manager/test/application_manager_impl_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/application_manager/test/application_manager_impl_test.cc')
-rw-r--r--src/components/application_manager/test/application_manager_impl_test.cc253
1 files changed, 244 insertions, 9 deletions
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 b311d5fd5e..0484b0cb32 100644
--- a/src/components/application_manager/test/application_manager_impl_test.cc
+++ b/src/components/application_manager/test/application_manager_impl_test.cc
@@ -66,9 +66,6 @@
#include "utils/lock.h"
#include "encryption/hashing.h"
-#ifdef ENABLE_LOG
-#include "utils/push_log.h"
-#endif
namespace test {
namespace components {
@@ -180,9 +177,6 @@ class ApplicationManagerImplTest
NiceMock<usage_statistics_test::MockStatisticsManager> >())
{
-#ifdef ENABLE_LOG
- logger::create_log_message_loop_thread();
-#endif
Mock::VerifyAndClearExpectations(mock_message_helper_);
}
~ApplicationManagerImplTest() OVERRIDE {
@@ -338,6 +332,44 @@ class ApplicationManagerImplTest
void CreatePendingApplication();
#endif
+ void ExpectedHmiState(
+ const ApplicationSharedPtr wep_app,
+ const WindowID main_window_id,
+ const mobile_apis::HMILevel::eType hmi_level,
+ const mobile_apis::VideoStreamingState::eType vss,
+ const mobile_apis::AudioStreamingState::eType audio_str_st,
+ const mobile_apis::SystemContext::eType system_ctx) {
+ EXPECT_EQ(hmi_level, wep_app->hmi_level(main_window_id));
+ EXPECT_EQ(vss, wep_app->video_streaming_state());
+ EXPECT_EQ(audio_str_st, wep_app->audio_streaming_state());
+ EXPECT_EQ(system_ctx, wep_app->system_context(main_window_id));
+ }
+
+ smart_objects::SmartObjectSPtr CreateRAI(const std::string app_hmi_type,
+ const bool is_media_application) {
+ smart_objects::SmartObject rai(smart_objects::SmartType_Map);
+ smart_objects::SmartObject& params = rai[strings::msg_params];
+ params[strings::app_id] = kAppId;
+ params[strings::language_desired] = mobile_api::Language::EN_US;
+ params[strings::hmi_display_language_desired] = mobile_api::Language::EN_US;
+
+ rai[strings::params][strings::connection_key] = kConnectionKey;
+ rai[strings::msg_params][strings::app_name] = kAppName;
+ rai[strings::msg_params][strings::app_hmi_type] = app_hmi_type;
+ rai[strings::msg_params][strings::is_media_application] =
+ is_media_application;
+ rai[strings::msg_params][strings::sync_msg_version]
+ [strings::minor_version] = APIVersion::kAPIV2;
+ rai[strings::msg_params][strings::sync_msg_version]
+ [strings::major_version] = APIVersion::kAPIV6;
+
+ rai[strings::params][strings::protocol_version] =
+ protocol_handler::MajorProtocolVersion::PROTOCOL_VERSION_2;
+
+ const auto rai_ptr = std::make_shared<smart_objects::SmartObject>(rai);
+ return rai_ptr;
+ }
+
void CreatePendingLocalApplication(const std::string& policy_app_id);
uint32_t app_id_;
@@ -463,16 +495,16 @@ TEST_F(ApplicationManagerImplTest,
SubscribeAppForWayPoints_ExpectSubscriptionApp) {
auto app_ptr = std::static_pointer_cast<am::Application>(mock_app_ptr_);
app_manager_impl_->SubscribeAppForWayPoints(app_ptr);
- EXPECT_TRUE(app_manager_impl_->IsAppSubscribedForWayPoints(app_ptr));
+ EXPECT_TRUE(app_manager_impl_->IsAppSubscribedForWayPoints(*app_ptr));
}
TEST_F(ApplicationManagerImplTest,
UnsubscribeAppForWayPoints_ExpectUnsubscriptionApp) {
auto app_ptr = std::static_pointer_cast<am::Application>(mock_app_ptr_);
app_manager_impl_->SubscribeAppForWayPoints(app_ptr);
- EXPECT_TRUE(app_manager_impl_->IsAppSubscribedForWayPoints(app_ptr));
+ EXPECT_TRUE(app_manager_impl_->IsAppSubscribedForWayPoints(*app_ptr));
app_manager_impl_->UnsubscribeAppFromWayPoints(app_ptr);
- EXPECT_FALSE(app_manager_impl_->IsAppSubscribedForWayPoints(app_ptr));
+ EXPECT_FALSE(app_manager_impl_->IsAppSubscribedForWayPoints(*app_ptr));
const std::set<uint32_t> result =
app_manager_impl_->GetAppsSubscribedForWayPoints();
EXPECT_TRUE(result.empty());
@@ -2046,6 +2078,209 @@ TEST_F(
EXPECT_EQ(1u, app_list.size());
}
+TEST_F(
+ ApplicationManagerImplTest,
+ RegisterApplication_WEPNonMediaAppRegisterActivateDeactivateExit_EXPECT_CORRECT_HMI_STATES) {
+ using namespace mobile_apis;
+ EXPECT_CALL(
+ mock_session_observer_,
+ GetDataOnSessionKey(kConnectionKey,
+ _,
+ _,
+ testing::An<connection_handler::DeviceHandle*>()))
+ .WillOnce(DoAll(SetArgPointee<3u>(kDeviceId), Return(0)));
+
+ const std::string app_hmi_type{"WEB_VIEW"};
+ const bool is_media_app = false;
+ const auto rai_ptr = CreateRAI(app_hmi_type, is_media_app);
+
+ std::unique_ptr<plugin_manager::RPCPluginManager> rpc_plugin_manager(
+ new MockRPCPluginManager());
+ app_manager_impl_->SetPluginManager(rpc_plugin_manager);
+ auto wep_nonmedia_app = app_manager_impl_->RegisterApplication(rai_ptr);
+ wep_nonmedia_app->set_is_media_application(false);
+
+ EXPECT_EQ(protocol_handler::MajorProtocolVersion::PROTOCOL_VERSION_2,
+ wep_nonmedia_app->protocol_version());
+ EXPECT_EQ(APIVersion::kAPIV2,
+ wep_nonmedia_app->version().min_supported_api_version);
+ EXPECT_EQ(APIVersion::kAPIV6,
+ wep_nonmedia_app->version().max_supported_api_version);
+
+ // Initial HMI level, audio, video streaming states and system context
+ // set after app registration
+ ExpectedHmiState(wep_nonmedia_app,
+ kDefaultWindowId,
+ HMILevel::INVALID_ENUM,
+ VideoStreamingState::INVALID_ENUM,
+ AudioStreamingState::INVALID_ENUM,
+ SystemContext::SYSCTXT_MAIN);
+
+ smart_objects::SmartObjectSPtr notification =
+ std::make_shared<smart_objects::SmartObject>(
+ smart_objects::SmartType_Map);
+ EXPECT_CALL(*mock_message_helper_,
+ CreateHMIStatusNotification(_, kDefaultWindowId))
+ .WillOnce(Return(notification));
+ EXPECT_CALL(*mock_rpc_service_, ManageMobileCommand(notification, _));
+
+ // Const shared ptr is required for OnAppActivated due to its signature
+ ApplicationConstSharedPtr const_wep_app = wep_nonmedia_app;
+ EXPECT_CALL(*mock_app_service_manager_, OnAppActivated(const_wep_app));
+
+ // Activate Webengine projection non-media app
+ // to check its audio & video streaming states in FULL Hmi level
+ app_manager_impl_->ActivateApplication(wep_nonmedia_app);
+
+ // WEP non-media app should be always not_streamable
+ // and not_audible even in FULL HMI Level
+ ExpectedHmiState(wep_nonmedia_app,
+ kDefaultWindowId,
+ HMILevel::HMI_FULL,
+ VideoStreamingState::NOT_STREAMABLE,
+ AudioStreamingState::NOT_AUDIBLE,
+ SystemContext::SYSCTXT_MAIN);
+
+ EXPECT_CALL(*mock_message_helper_,
+ CreateHMIStatusNotification(_, kDefaultWindowId))
+ .WillOnce(Return(notification));
+ EXPECT_CALL(*mock_rpc_service_, ManageMobileCommand(notification, _));
+
+ // Deactivate Webengine projection non-media app
+ // to check its new HMI level and audio & video streaming states
+ app_manager_impl_->state_controller().DeactivateApp(wep_nonmedia_app,
+ kDefaultWindowId);
+
+ // WEP non-media app should be deactivated to BACKGROUND
+ // WEP non-media app should be not audible and not streamable
+ // in BACKGROUND HMI Level
+
+ ExpectedHmiState(wep_nonmedia_app,
+ kDefaultWindowId,
+ HMILevel::HMI_BACKGROUND,
+ VideoStreamingState::NOT_STREAMABLE,
+ AudioStreamingState::NOT_AUDIBLE,
+ SystemContext::SYSCTXT_MAIN);
+
+ EXPECT_CALL(*mock_message_helper_,
+ CreateHMIStatusNotification(_, kDefaultWindowId))
+ .WillOnce(Return(notification));
+ EXPECT_CALL(*mock_rpc_service_, ManageMobileCommand(notification, _));
+
+ // Exit of Webengine projection non-media app
+ // to check its new HMI level and audio & video streaming states
+ app_manager_impl_->state_controller().ExitDefaultWindow(wep_nonmedia_app);
+ // WEP non-media app should be deactivated to NONE
+ // WEP non-media app should be not audible and not streamable
+ // in NONE HMI Level
+ ExpectedHmiState(wep_nonmedia_app,
+ kDefaultWindowId,
+ HMILevel::HMI_NONE,
+ VideoStreamingState::NOT_STREAMABLE,
+ AudioStreamingState::NOT_AUDIBLE,
+ SystemContext::SYSCTXT_MAIN);
+}
+
+TEST_F(
+ ApplicationManagerImplTest,
+ RegisterApplication_WEPMediaAppRegisterActivateDeactivateExit_EXPECT_CORRECT_HMI_STATES) {
+ using namespace mobile_apis;
+
+ EXPECT_CALL(
+ mock_session_observer_,
+ GetDataOnSessionKey(kConnectionKey,
+ _,
+ _,
+ testing::An<connection_handler::DeviceHandle*>()))
+ .WillOnce(DoAll(SetArgPointee<3u>(kDeviceId), Return(0)));
+
+ const std::string app_hmi_type{"WEB_VIEW"};
+ const bool is_media_app = true;
+ const auto rai_ptr = CreateRAI(app_hmi_type, is_media_app);
+
+ std::unique_ptr<plugin_manager::RPCPluginManager> rpc_plugin_manager(
+ new MockRPCPluginManager());
+ app_manager_impl_->SetPluginManager(rpc_plugin_manager);
+ auto wep_media_app = app_manager_impl_->RegisterApplication(rai_ptr);
+ wep_media_app->set_is_media_application(true);
+
+ EXPECT_EQ(protocol_handler::MajorProtocolVersion::PROTOCOL_VERSION_2,
+ wep_media_app->protocol_version());
+ EXPECT_EQ(APIVersion::kAPIV2,
+ wep_media_app->version().min_supported_api_version);
+ EXPECT_EQ(APIVersion::kAPIV6,
+ wep_media_app->version().max_supported_api_version);
+
+ // Initial HMI level, audio, video streaming states and system context
+ // set after app registration
+ ExpectedHmiState(wep_media_app,
+ kDefaultWindowId,
+ HMILevel::INVALID_ENUM,
+ VideoStreamingState::INVALID_ENUM,
+ AudioStreamingState::INVALID_ENUM,
+ SystemContext::SYSCTXT_MAIN);
+
+ // Const shared ptr is required for OnAppActivated due to its signature
+ ApplicationConstSharedPtr const_wep_app = wep_media_app;
+ EXPECT_CALL(*mock_app_service_manager_, OnAppActivated(const_wep_app));
+
+ smart_objects::SmartObjectSPtr notification =
+ std::make_shared<smart_objects::SmartObject>(
+ smart_objects::SmartType_Map);
+ EXPECT_CALL(*mock_message_helper_,
+ CreateHMIStatusNotification(_, kDefaultWindowId))
+ .WillOnce(Return(notification));
+ EXPECT_CALL(*mock_rpc_service_, ManageMobileCommand(notification, _));
+
+ // Activate Webengine projection media app
+ // to check its audio & video streaming states in FULL Hmi level
+ app_manager_impl_->ActivateApplication(wep_media_app);
+
+ // WEP media app should be always not_streamable
+ // but audible even in FULL HMI Level
+ ExpectedHmiState(wep_media_app,
+ kDefaultWindowId,
+ HMILevel::HMI_FULL,
+ VideoStreamingState::NOT_STREAMABLE,
+ AudioStreamingState::AUDIBLE,
+ SystemContext::SYSCTXT_MAIN);
+
+ EXPECT_CALL(*mock_message_helper_,
+ CreateHMIStatusNotification(_, kDefaultWindowId))
+ .WillOnce(Return(notification));
+ EXPECT_CALL(*mock_rpc_service_, ManageMobileCommand(notification, _));
+
+ // Deactivate Webengine projection media app
+ // to check its new HMI level and audio & video streaming states
+ app_manager_impl_->state_controller().DeactivateApp(wep_media_app,
+ kDefaultWindowId);
+
+ // WEP media app should be deactivated to LIMITED
+ // WEP media app should be audible but not streamable in LIMITED HMI Level
+ ExpectedHmiState(wep_media_app,
+ kDefaultWindowId,
+ HMILevel::HMI_LIMITED,
+ VideoStreamingState::NOT_STREAMABLE,
+ AudioStreamingState::AUDIBLE,
+ SystemContext::SYSCTXT_MAIN);
+
+ EXPECT_CALL(*mock_message_helper_,
+ CreateHMIStatusNotification(_, kDefaultWindowId))
+ .WillOnce(Return(notification));
+ EXPECT_CALL(*mock_rpc_service_, ManageMobileCommand(notification, _));
+
+ // Exit of Webengine projection media app
+ // to check its new HMI level and audio & video streaming states
+ app_manager_impl_->state_controller().ExitDefaultWindow(wep_media_app);
+ // WEP media app should be exited to NONE
+ ExpectedHmiState(wep_media_app,
+ kDefaultWindowId,
+ HMILevel::HMI_NONE,
+ VideoStreamingState::NOT_STREAMABLE,
+ AudioStreamingState::NOT_AUDIBLE,
+ SystemContext::SYSCTXT_MAIN);
+}
+
TEST_F(ApplicationManagerImplTest, AddAndRemoveQueryAppDevice_SUCCESS) {
const connection_handler::DeviceHandle device_handle = 1u;
ASSERT_FALSE(app_manager_impl_->IsAppsQueriedFrom(device_handle));